xrtHttpStructuredKeyValid

验证 Structured Fields key 的小写 ASCII 语法。

bool xrtHttpStructuredKeyValid(xstrview Key);
参数说明
xstrview Key键
返回:验证 Structured Fields key 的小写 ASCII 语法。

示例已编译验证

/* 验证 Structured Fields key 的小写 ASCII 语法。 */
result = xrtHttpStructuredKeyValid(Key);

xrtHttpStructuredTokenValid

验证 Structured Fields token 语法。

bool xrtHttpStructuredTokenValid(xstrview Token);
参数说明
xstrview Token令牌
返回:验证 Structured Fields token 语法。

示例已编译验证

/* 验证 Structured Fields token 语法。 */
result = xrtHttpStructuredTokenValid(Token);

xrtHttpStructuredBareNext

从当前位置解析一个裸值,不跳过空白且不要求消耗完整输入。

xhttpnext xrtHttpStructuredBareNext( xstrview Value, size_t* pOffset, xhttpstructuredbare* pBare );
参数说明
xstrview Value值
size_t* pOffset出:偏移
xhttpstructuredbare* pBareBare 参数
返回:从当前位置解析一个裸值,不跳过空白且不要求消耗完整输入。

示例已编译验证

/* 从当前位置解析一个裸值,不跳过空白且不要求消耗完整输入。 */
result = xrtHttpStructuredBareNext(Value, pOffset, pBare);

xrtHttpStructuredItemParse

严格解析完整 Item;顶层两侧只允许 SP。

bool xrtHttpStructuredItemParse( xstrview Value, xhttpstructureditem* pItem );
参数说明
xstrview Value值
xhttpstructureditem* pItem元素
返回:严格解析完整 Item;顶层两侧只允许 SP。

示例已编译验证

/* 严格解析完整 Item;顶层两侧只允许 SP。 */
result = xrtHttpStructuredItemParse(Value, pItem);

xrtHttpStructuredParameterNext

迭代 Item 或 Inner List 的原始参数区。

xhttpnext xrtHttpStructuredParameterNext( xstrview Parameters, size_t* pOffset, xhttpstructuredparameter* pParameter );
参数说明
xstrview Parameters参数列表
size_t* pOffset出:偏移
xhttpstructuredparameter* pParameterParameter 参数
返回:迭代 Item 或 Inner List 的原始参数区。

示例已编译验证

/* 迭代 Item 或 Inner List 的原始参数区。 */
result = xrtHttpStructuredParameterNext(Parameters, pOffset, pParameter);

xrtHttpStructuredParameterCount

返回去重后的参数数量;格式错误返回 XRT_NPOS。

size_t xrtHttpStructuredParameterCount(xstrview Parameters);
参数说明
xstrview Parameters参数列表
返回:返回去重后的参数数量;格式错误返回 XRT_NPOS。

示例已编译验证

/* 返回去重后的参数数量;格式错误返回 XRT_NPOS。 */
result = xrtHttpStructuredParameterCount(Parameters);

xrtHttpStructuredParameterAt

按首次出现顺序读取参数,重复 key 的值取最后一次。

xhttpnext xrtHttpStructuredParameterAt( xstrview Parameters, size_t iIndex, xhttpstructuredparameter* pParameter );
参数说明
xstrview Parameters参数列表
size_t iIndex下标
xhttpstructuredparameter* pParameterParameter 参数
返回:按首次出现顺序读取参数,重复 key 的值取最后一次。

示例已编译验证

/* 按首次出现顺序读取参数,重复 key 的值取最后一次。 */
result = xrtHttpStructuredParameterAt(Parameters, iIndex, pParameter);

xrtHttpStructuredParameterFind

按 key 读取最后一次参数值。

xhttpnext xrtHttpStructuredParameterFind( xstrview Parameters, xstrview Key, xhttpstructuredparameter* pParameter );
参数说明
xstrview Parameters参数列表
xstrview Key键
xhttpstructuredparameter* pParameterParameter 参数
返回:按 key 读取最后一次参数值。

示例已编译验证

/* 按 key 读取最后一次参数值。 */
result = xrtHttpStructuredParameterFind(Parameters, Key, pParameter);

xrtHttpStructuredInnerNext

迭代完整 Inner List;游标从零开始,首次调用先验证全文,期间输入不可变。

xhttpnext xrtHttpStructuredInnerNext( xstrview Inner, size_t* pOffset, xhttpstructureditem* pItem );
参数说明
xstrview InnerInner 参数
size_t* pOffset出:偏移
xhttpstructureditem* pItem元素
返回:迭代完整 Inner List;游标从零开始,首次调用先验证全文,期间输入不可变。

示例已编译验证

/* 迭代完整 Inner List;游标从零开始,首次调用先验证全文,期间输入不可变。 */
result = xrtHttpStructuredInnerNext(Inner, pOffset, pItem);

xrtHttpStructuredInnerValid

严格验证完整 Inner List 内容。

bool xrtHttpStructuredInnerValid(xstrview Inner);
参数说明
xstrview InnerInner 参数
返回:严格验证完整 Inner List 内容。

示例已编译验证

/* 严格验证完整 Inner List 内容。 */
result = xrtHttpStructuredInnerValid(Inner);

xrtHttpStructuredListNext

迭代完整 List;游标从零开始,首次调用先验证全文,期间输入不可变。

xhttpnext xrtHttpStructuredListNext( xstrview Value, size_t* pOffset, xhttpstructuredmember* pMember );
参数说明
xstrview Value值
size_t* pOffset出:偏移
xhttpstructuredmember* pMemberMember 参数
返回:迭代完整 List;游标从零开始,首次调用先验证全文,期间输入不可变。

示例已编译验证

/* 迭代完整 List;游标从零开始,首次调用先验证全文,期间输入不可变。 */
result = xrtHttpStructuredListNext(Value, pOffset, pMember);

xrtHttpStructuredListValid

严格验证完整 Structured List。

bool xrtHttpStructuredListValid(xstrview Value);
参数说明
xstrview Value值
返回:严格验证完整 Structured List。

示例已编译验证

/* 严格验证完整 Structured List。 */
result = xrtHttpStructuredListValid(Value);

xrtHttpStructuredDictionaryNext

迭代完整 Dictionary;游标从零开始,首次调用先验证全文,期间输入不可变。

xhttpnext xrtHttpStructuredDictionaryNext( xstrview Value, size_t* pOffset, xhttpstructureddictionarymember* pMember );
参数说明
xstrview Value值
size_t* pOffset出:偏移
xhttpstructureddictionarymember* pMemberMember 参数
返回:迭代完整 Dictionary;游标从零开始,首次调用先验证全文,期间输入不可变。

示例已编译验证

/* 迭代完整 Dictionary;游标从零开始,首次调用先验证全文,期间输入不可变。 */
result = xrtHttpStructuredDictionaryNext(Value, pOffset, pMember);

xrtHttpStructuredDictionaryValid

严格验证完整 Structured Dictionary。

bool xrtHttpStructuredDictionaryValid(xstrview Value);
参数说明
xstrview Value值
返回:严格验证完整 Structured Dictionary。

示例已编译验证

/* 严格验证完整 Structured Dictionary。 */
result = xrtHttpStructuredDictionaryValid(Value);

xrtHttpStructuredMapCursorInit

初始化单值或重复字段 Dictionary 有序 Map 游标。

void xrtHttpStructuredMapCursorInit( xhttpstructuredmapcursor* pCursor );
参数说明
xhttpstructuredmapcursor* pCursor游标
返回:初始化单值或重复字段 Dictionary 有序 Map 游标。

示例已编译验证

httpstructuredmapcursorinit obj;
xrtHttpStructuredMapCursorInit(&obj, pCursor);

xrtHttpStructuredDictionaryMapNext

迭代有序 Map;key 按首次出现顺序,值取最后一次出现。

xhttpnext xrtHttpStructuredDictionaryMapNext( xstrview Value, xhttpstructuredmapcursor* pCursor, xhttpstructureddictionarymember* pMember );
参数说明
xstrview Value值
xhttpstructuredmapcursor* pCursor游标
xhttpstructureddictionarymember* pMemberMember 参数
返回:迭代有序 Map;key 按首次出现顺序,值取最后一次出现。

示例已编译验证

/* 迭代有序 Map;key 按首次出现顺序,值取最后一次出现。 */
result = xrtHttpStructuredDictionaryMapNext(Value, pCursor, pMember);

xrtHttpStructuredDictionaryCount

返回去重后的 Dictionary 成员数量;格式错误返回 XRT_NPOS。

size_t xrtHttpStructuredDictionaryCount(xstrview Value);
参数说明
xstrview Value值
返回:返回去重后的 Dictionary 成员数量;格式错误返回 XRT_NPOS。

示例已编译验证

/* 返回去重后的 Dictionary 成员数量;格式错误返回 XRT_NPOS。 */
result = xrtHttpStructuredDictionaryCount(Value);

xrtHttpStructuredDictionaryAt

按首次出现顺序读取成员,重复 key 的值取最后一次。

xhttpnext xrtHttpStructuredDictionaryAt( xstrview Value, size_t iIndex, xhttpstructureddictionarymember* pMember );
参数说明
xstrview Value值
size_t iIndex下标
xhttpstructureddictionarymember* pMemberMember 参数
返回:按首次出现顺序读取成员,重复 key 的值取最后一次。

示例已编译验证

/* 按首次出现顺序读取成员,重复 key 的值取最后一次。 */
result = xrtHttpStructuredDictionaryAt(Value, iIndex, pMember);

xrtHttpStructuredDictionaryFind

按 key 读取 Dictionary 中最后一次成员值。

xhttpnext xrtHttpStructuredDictionaryFind( xstrview Value, xstrview Key, xhttpstructureddictionarymember* pMember );
参数说明
xstrview Value值
xstrview Key键
xhttpstructureddictionarymember* pMemberMember 参数
返回:按 key 读取 Dictionary 中最后一次成员值。

示例已编译验证

/* 按 key 读取 Dictionary 中最后一次成员值。 */
result = xrtHttpStructuredDictionaryFind(Value, Key, pMember);

xrtHttpStructuredFieldCursorInit

初始化来源绑定的重复字段行游标。

void xrtHttpStructuredFieldCursorInit( xhttpstructuredfieldcursor* pCursor );
参数说明
xhttpstructuredfieldcursor* pCursor游标
返回:初始化来源绑定的重复字段行游标。

示例已编译验证

httpstructuredfieldcursorinit obj;
xrtHttpStructuredFieldCursorInit(&obj, pCursor);

xrtHttpStructuredListFieldNext

按线路顺序跨重复同名字段行迭代;期间字段数组、字段名和内容不可变。

xhttpnext xrtHttpStructuredListFieldNext( const xhttpfield* pFields, size_t iCount, xstrview Name, xhttpstructuredfieldcursor* pCursor, xhttpstructuredmember* pMember );
参数说明
const xhttpfield* pFields字段数组
size_t iCount数量
xstrview Name名称(xstrview)
xhttpstructuredfieldcursor* pCursor游标
xhttpstructuredmember* pMemberMember 参数
返回:按线路顺序跨重复同名字段行迭代;期间字段数组、字段名和内容不可变。

示例已编译验证

/* 按线路顺序跨重复同名字段行迭代;期间字段数组、字段名和内容不可变。 */
result = xrtHttpStructuredListFieldNext(pFields, iCount, Name, pCursor, pMember);

xrtHttpStructuredDictionaryFieldNext

按线路顺序跨重复同名字段行迭代;游标不可切换来源或顶层类型。

xhttpnext xrtHttpStructuredDictionaryFieldNext( const xhttpfield* pFields, size_t iCount, xstrview Name, xhttpstructuredfieldcursor* pCursor, xhttpstructureddictionarymember* pMember );
参数说明
const xhttpfield* pFields字段数组
size_t iCount数量
xstrview Name名称(xstrview)
xhttpstructuredfieldcursor* pCursor游标
xhttpstructureddictionarymember* pMemberMember 参数
返回:按线路顺序跨重复同名字段行迭代;游标不可切换来源或顶层类型。

示例已编译验证

/* 按线路顺序跨重复同名字段行迭代;游标不可切换来源或顶层类型。 */
result = xrtHttpStructuredDictionaryFieldNext(pFields, iCount, Name, pCursor, pMember);

xrtHttpStructuredDictionaryMapFieldNext

跨重复字段行迭代有序 Map,重复 key 采用最后一次值。

xhttpnext xrtHttpStructuredDictionaryMapFieldNext( const xhttpfield* pFields, size_t iCount, xstrview Name, xhttpstructuredmapcursor* pCursor, xhttpstructureddictionarymember* pMember );
参数说明
const xhttpfield* pFields字段数组
size_t iCount数量
xstrview Name名称(xstrview)
xhttpstructuredmapcursor* pCursor游标
xhttpstructureddictionarymember* pMemberMember 参数
返回:跨重复字段行迭代有序 Map,重复 key 采用最后一次值。

示例已编译验证

/* 跨重复字段行迭代有序 Map,重复 key 采用最后一次值。 */
result = xrtHttpStructuredDictionaryMapFieldNext(pFields, iCount, Name, pCursor, pMember);

xrtHttpStructuredDictionaryFieldCount

返回重复字段行逻辑组合并去重后的 Dictionary 成员数。

size_t xrtHttpStructuredDictionaryFieldCount( const xhttpfield* pFields, size_t iCount, xstrview Name );
参数说明
const xhttpfield* pFields字段数组
size_t iCount数量
xstrview Name名称(xstrview)
返回:返回重复字段行逻辑组合并去重后的 Dictionary 成员数。

示例已编译验证

/* 返回重复字段行逻辑组合并去重后的 Dictionary 成员数。 */
result = xrtHttpStructuredDictionaryFieldCount(pFields, iCount, Name);

xrtHttpStructuredDictionaryFieldAt

按首次出现顺序读取跨字段 Dictionary,重复 key 取最后值。

xhttpnext xrtHttpStructuredDictionaryFieldAt( const xhttpfield* pFields, size_t iCount, xstrview Name, size_t iIndex, xhttpstructureddictionarymember* pMember );
参数说明
const xhttpfield* pFields字段数组
size_t iCount数量
xstrview Name名称(xstrview)
size_t iIndex下标
xhttpstructureddictionarymember* pMemberMember 参数
返回:按首次出现顺序读取跨字段 Dictionary,重复 key 取最后值。

示例已编译验证

/* 按首次出现顺序读取跨字段 Dictionary,重复 key 取最后值。 */
result = xrtHttpStructuredDictionaryFieldAt(pFields, iCount, Name, iIndex, pMember);

xrtHttpStructuredDictionaryFieldFind

按 key 读取跨字段 Dictionary 中最后一次成员值。

xhttpnext xrtHttpStructuredDictionaryFieldFind( const xhttpfield* pFields, size_t iCount, xstrview Name, xstrview Key, xhttpstructureddictionarymember* pMember );
参数说明
const xhttpfield* pFields字段数组
size_t iCount数量
xstrview Name名称(xstrview)
xstrview Key键
xhttpstructureddictionarymember* pMemberMember 参数
返回:按 key 读取跨字段 Dictionary 中最后一次成员值。

示例已编译验证

/* 按 key 读取跨字段 Dictionary 中最后一次成员值。 */
result = xrtHttpStructuredDictionaryFieldFind(pFields, iCount, Name, Key, pMember);

xrtHttpStructuredItemField

解析唯一同名字段行中的 Structured Item;缺失返回 END。

xhttpnext xrtHttpStructuredItemField( const xhttpfield* pFields, size_t iCount, xstrview Name, xhttpstructureditem* pItem );
参数说明
const xhttpfield* pFields字段数组
size_t iCount数量
xstrview Name名称(xstrview)
xhttpstructureditem* pItem元素
返回:解析唯一同名字段行中的 Structured Item;缺失返回 END。

示例已编译验证

/* 解析唯一同名字段行中的 Structured Item;缺失返回 END。 */
result = xrtHttpStructuredItemField(pFields, iCount, Name, pItem);

xrtHttpStructuredStringDecode

解码 String;空输出查询长度,允许与 Encoded 同址,长度输出可未对齐。

bool xrtHttpStructuredStringDecode( const xhttpstructuredbare* pBare, char* sOutput, size_t iCapacity, size_t* pSize );
参数说明
const xhttpstructuredbare* pBareBare 参数
char* sOutput输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:解码 String;空输出查询长度,允许与 Encoded 同址,长度输出可未对齐。

示例已编译验证

/* 解码 String;空输出查询长度,允许与 Encoded 同址,长度输出可未对齐。 */
result = xrtHttpStructuredStringDecode(pBare, sOutput, iCapacity, pSize);

xrtHttpStructuredBytesDecode

解码 Byte Sequence;空输出查询长度,允许与 Encoded 同址,长度可未对齐。

bool xrtHttpStructuredBytesDecode( const xhttpstructuredbare* pBare, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
const xhttpstructuredbare* pBareBare 参数
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:解码 Byte Sequence;空输出查询长度,允许与 Encoded 同址,长度可未对齐。

示例已编译验证

/* 解码 Byte Sequence;空输出查询长度,允许与 Encoded 同址,长度可未对齐。 */
result = xrtHttpStructuredBytesDecode(pBare, pOutput, iCapacity, pSize);

xrtHttpStructuredDisplayDecode

解码并校验 Display UTF-8;允许与 Encoded 同址,长度输出可未对齐。

bool xrtHttpStructuredDisplayDecode( const xhttpstructuredbare* pBare, char* sOutput, size_t iCapacity, size_t* pSize );
参数说明
const xhttpstructuredbare* pBareBare 参数
char* sOutput输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:解码并校验 Display UTF-8;允许与 Encoded 同址,长度输出可未对齐。

示例已编译验证

/* 解码并校验 Display UTF-8;允许与 Encoded 同址,长度输出可未对齐。 */
result = xrtHttpStructuredDisplayDecode(pBare, sOutput, iCapacity, pSize);

xrtHttpStructuredBareWrite

规范序列化一个抽象裸值;输出不附加零字节。

bool xrtHttpStructuredBareWrite( const xhttpstructuredvalue* pValue, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
const xhttpstructuredvalue* pValue值
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:规范序列化一个抽象裸值;输出不附加零字节。

示例已编译验证

/* 规范序列化一个抽象裸值;输出不附加零字节。 */
result = xrtHttpStructuredBareWrite(pValue, pOutput, iCapacity, pSize);

xrtHttpStructuredItemWrite

规范序列化一个 Item 及其参数;输出不附加零字节。

bool xrtHttpStructuredItemWrite( const xhttpstructureditemvalue* pItem, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
const xhttpstructureditemvalue* pItem元素
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:规范序列化一个 Item 及其参数;输出不附加零字节。

示例已编译验证

/* 规范序列化一个 Item 及其参数;输出不附加零字节。 */
result = xrtHttpStructuredItemWrite(pItem, pOutput, iCapacity, pSize);

xrtHttpStructuredListWrite

规范序列化完整 List;空数组产生长度为零的省略值。

bool xrtHttpStructuredListWrite( const xhttpstructuredmembervalue* pMembers, size_t iCount, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
const xhttpstructuredmembervalue* pMembersMembers 参数
size_t iCount数量
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:规范序列化完整 List;空数组产生长度为零的省略值。

示例已编译验证

/* 规范序列化完整 List;空数组产生长度为零的省略值。 */
result = xrtHttpStructuredListWrite(pMembers, iCount, pOutput, iCapacity, pSize);

xrtHttpStructuredDictionaryWrite

规范序列化完整 Dictionary;key 必须唯一。

bool xrtHttpStructuredDictionaryWrite( const xhttpstructureddictionaryentry* pEntries, size_t iCount, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
const xhttpstructureddictionaryentry* pEntriesEntres 参数
size_t iCount数量
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:规范序列化完整 Dictionary;key 必须唯一。

示例已编译验证

/* 规范序列化完整 Dictionary;key 必须唯一。 */
result = xrtHttpStructuredDictionaryWrite(pEntries, iCount, pOutput, iCapacity, pSize);