- 论坛徽章:
- 15
|
本帖最后由 yulihua49 于 2015-11-26 13:43 编辑
DAU7.zip
(23.63 KB, 下载次数: 7)
文档。
cd demo/mkpatt/meta
$ cat st.meta
TEMPLATE st 2
c:=CH_TINY
bi:=CH_INT64
]$ mktpl
输入元数据文件名: st.meta
T_PkgType st_tpl[]={
{CH_TINY,1,"c",0,-1},
{CH_INT64,sizeof(INT64),"bi"},
{-1,0,0,0}
};
extern T_PkgType st_tpl[];
typedef struct {
char c;
INT64 bi;
} st_stu;
- $ vi t_struct.c
- #include <pack.h>
- #include <json_pack.h>
- #include "meta/st.tpl"
- #include "meta/st.stu"
- main()
- {
- ss_stu ss;
- char buf[512];
- JSON_OBJECT json=json_object_new_object();
- ss.c=1;
- ss.s.c=3;
- ss.s.bi=123456789012345;
- ss.i=12345;
- struct_to_json(json,&ss,ss_tpl,NULL);
- printf("json ss=%s\n",json_object_to_json_string(json));
- net_pack(buf,&ss,ss_tpl);
- printf("ss=%s\n",buf);
- json_object_put(json);
- return 0;
- }
- ~
- ~
- ~
- [sdbc@erg0devprc01 mkpatt]$ make t_struct
- cc -O3 -m64 -w -I/home/sdbc/sdbc/include -c -o t_struct.o t_struct.c
- cc -m64 -o t_struct t_struct.o -L/home/sdbc/sdbc/lib -L/app/oracle/product/11.2.0/client/lib -lscbase -ljson
- [sdbc@erg0devprc01 mkpatt]$ ./t_struct
- json ss={ "c": "1", "s": { "c": "3", "bi": "123456789012345" }, "i": "12345" }
- ss=1|3|123456789012345|12345|
- [sdbc@erg0devprc01 mkpatt]$
复制代码 一个结构套结构的模板的例子。
$ cat meta/st.tpl
T_PkgType st_tpl[]={
{CH_TINY,1,"c",0,-1},
{CH_INT64,sizeof(INT64),"bi"},
{-1,0,0,0}
};
T_PkgType ss_tpl[]={
{CH_TINY,1,"c",0,-1},
{CH_STRUCT,0,"s",(const char *)st_tpl},
{CH_INT,sizeof(int),"i"},
{-1,0,0,0}
};
[sdbc@erg0devprc01 mkpatt]$ cat meta/st.stu
extern T_PkgType st_tpl[];
typedef struct {
char c;
INT64 bi;
} st_stu;
extern T_PkgType ss_tpl[];
typedef struct {
char c;
st_stu s;
int i;
} ss_stu;
struct_to_json()和net_pack()都是泛型函数。他们按照ss_tpl的指示行事。
33或34行的那个玩意儿就可以在网上传送啦。
|
|