acl  3.5.3.0
acl_xmlcode.h
浏览该文件的文档.
1 #ifndef __ACL_XMLCODE_INCLUDE_H__
2 #define __ACL_XMLCODE_INCLUDE_H__
3 
4 #include "../stdlib/acl_define.h"
5 #include "../stdlib/acl_vstring.h"
6 
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 
11 ACL_API int acl_xml_encode(const char *in, ACL_VSTRING *out);
12 ACL_API int acl_xml_decode(const char *in, ACL_VSTRING *out);
13 
14 #ifndef ACL_CLIENT_ONLY
15 
16 /**
17  * xml 字符编码器
18  * @param in {const char**} 源串地址的地址,函数返回后该地址记录未被处理的内容地址,
19  * 如果输出缓冲区足够大,则该地址将指向源的尾部的后一个位置
20  * @param ilen {size_t} 源内容的数据长度
21  * @param out {char*} 输出缓冲区,用来存储转码后的结果
22  * @param olen {size_t} 输出缓冲区的大小
23  * @return {size_t} 转码后存储在输出缓冲区内的数据长度(该长度有可能大于源数据长度),
24  * 当输出缓冲区长度为:
25  * 1) == 0 时,返回 0
26  * 2) == 1 时,返回 0,且最后一个字节被置 '\0'
27  * 3) > 1 时,最后一个字节被置 '\0',返回值 > 0(不包含最后的 '\0')
28  * 注:
29  * 1) 函数返回后 in 的地址会发生改变,指向下一个待处理的地址
30  * 2) 调用者在调用前应先保存 in 的地址,在 in 中未被处理的剩余的长度计算方式:
31  * ilen -= in_saved - in;
32  * 3) 虽然当 olen > 0 时内部自动会给 out 的尾部置 '\0‘,但返回的数据长度
33  * 不包括最后的 '\0'
34  */
35 ACL_API size_t acl_xml_encode2(const char** in, size_t ilen,
36  char* out, size_t olen);
37 
38 ACL_API const char *acl_xml_decode2(const char *in, char **out, size_t *size);
39 
40 #endif /* ACL_CLIENT_ONLY */
41 
42 #ifdef __cplusplus
43 }
44 #endif
45 
46 #endif
ACL_API int acl_xml_encode(const char *in, ACL_VSTRING *out)
ACL_API size_t acl_xml_encode2(const char **in, size_t ilen, char *out, size_t olen)
ACL_API int acl_xml_decode(const char *in, ACL_VSTRING *out)
ACL_API const char * acl_xml_decode2(const char *in, char **out, size_t *size)