- 新增 csharptdr.md 文件,详细说明了 csharptdr 工具的使用方法和选项 - 新增 test_conn.md 文件,提供了连接测试工具的使用说明和示例 - 在 .gitignore 中添加了忽略项,以防止生成的文件被纳入版本控制
171 lines
10 KiB
Markdown
171 lines
10 KiB
Markdown
|
||
- 将多个XML格式的元数据描述库转换成二进制格式、C语言定义格式描述及生成数据定义的C语言头文件。
|
||
也可以把多个XML格式的元数据描述库转换成AS3、C++、C#的类文件,这些类文件实现了打解包等接口。
|
||
如果多个xml文件之间存在依赖关系,则被依赖的xml文件必须放在参数表的前面。
|
||
|
||
用法:
|
||
csharptdr (-B,--xml2dr [-o,--out_file=FILE] )
|
||
| (-C,--xml2c [-o,--out_file=FILE])
|
||
| (-H,--xml2h [-p,--no_type_prefix] [-s,--add_custom_prefix=PREFIX]
|
||
[-l,--no_lowercase_prefix] [-c,--no_type_declare])
|
||
[-u,--prefix_file=FILE] [-w,--with-namespace])
|
||
| (-A,--as3 [-i,--indent-size=TABSIZE])
|
||
| (-P,--xml2cpp [-i,--indent-size=TABSIZE] [--no_comm_files]
|
||
[--only_comm_files] [-p,--no_type_prefix]
|
||
[-s,--add_custom_prefix=PREFIX] [-l,--no_lowercase_prefix]
|
||
[-c,--no_type_declare] [-u,--prefix_file=FILE] [--no_united_name]
|
||
[--common_namespace=NAME] [--capital_macro_name]
|
||
[--with_from_xml] [--with_to_xml]
|
||
[--no_pack] [--no_unpack] [--no_visualize]
|
||
[--no_macro_from_xml] [--no_macro_to_xml]
|
||
[--compatible_macro_name] [--no_created_time]
|
||
[--use_switch_case_style] [--no_msvc_c1061_error]
|
||
| (-S,--xml2csharp [-i,--indent-size=TABSIZE] [--no_error_trace])
|
||
| (-G,--gen_xmltmplt --meta_name=NAME [-e,--meta_version=VERSION]
|
||
[-x,--xml_format=formatId] [-n,--encoding=ENCODING] [-o,--out_file=FILE])
|
||
| (-T,--export_prefix --prefix_file=FILE
|
||
| (-E,--errorlookup=ERRORCODE)
|
||
[-O,--out_path=PATH] [-f,--old_xml_tagset] [-d,--dump_lib ] [-h,--help] [-v -version] xmlfile...
|
||
|
||
主要转换操作选项:
|
||
-B,--xml2dr 指定使用将多个xml格式的元数据描述库转换成二进制个数描述库的功能(xml2dr)。
|
||
-C,--xml2c 指定使用将多个xml格式的元数据描述库转换成C语言定义格式描述库的功能(xml2c)。
|
||
-H,--xml2h 指定使用将多个xml格式的元数据描述库转换为数据的C语言头文件的功能(xml2h)。
|
||
每个xml文件会转换为一个相应头文件;除文件后缀外,头文件与xml文件名相同。
|
||
-A,--xml2as3 指定使用将多个xml格式的元数据描述库转换为ActionScript3语言的类文件的功能。
|
||
-P,--xml2cpp 指定使用将多个xml格式的元数据描述库转换为C++语言类文件的功能。
|
||
-S,--xml2csharp 指定使用将多个xml格式的元数据描述库转换为C#语言类文件的功能。
|
||
-G,--gen_xmltmplt 为指定元数据生成xml格式的配置文件模板(gen_xmltmplt)。
|
||
-T,--export_prefix 导出tdr生成.h文件或C++类文件时使用的数据成员前缀表到文件中。
|
||
-E,--errorlookup 根据tdr API接口返回的错误号,查找具体的错误信息。
|
||
|
||
|
||
xml2dr的可选项:
|
||
-o,--out_file=FILE
|
||
指定转换出来的二进制描述库的文件名,如果没有指定此选择,则缺省以a.tdr为文件名。
|
||
|
||
xml2c的可选项:
|
||
-o,--out_file=FILE
|
||
指定转换出来的C语言定义格式描述库的文件名,如果没有指定此选择,则缺省以a.c为文件名。
|
||
|
||
xml2h的可选项:
|
||
-p,--no_type_prefix
|
||
生成的结构体(struct)/联合体(union)成员名不添加表示此成员类型的前缀。
|
||
如果不指定此选择,缺省会添加表示成员类型的前缀。
|
||
-s,--add_custom_prefix=PREFIX
|
||
生成的结构体(struct)/联合体(union)成员名添加自定义的前缀。
|
||
PREFIX为要添加的前缀串,目前其最多只能包含8个字符。
|
||
-l,--no_lowercase_prefix
|
||
如果指定此选项,则生成的结构体(struct)/联合体(union)成员名不强制将首字母改成小写。
|
||
-c,--no_type_declare
|
||
如果指定了此选项则在元数据的C语句头文件中不生成结构体(struct)/联合体(union)的类型声明。
|
||
-u,--prefix_file=FILE
|
||
如果指定了此选项则使用文件FILE中的前缀规则生成C语言头文件的数据成员前缀。
|
||
注意,如果指定了此选项,其他关于前缀的选项均被设置为无效。
|
||
-w,--with-namespace
|
||
如果指定此选项,则在生成的头文件中加入namespace(其值为metalib的name属性的值)。
|
||
|
||
xml2as3的可选项:
|
||
-i,--indent-size
|
||
指定生成的ActionScript3类文件的缩进大小(必须大于0),默认为 4 个空格。
|
||
|
||
xml2cpp的可选项(同时支持所有xml2h的可选项, -w选项除外):
|
||
-i,--indent-size
|
||
指定生成的c++类文件的缩进大小(必须大于0),默认为 4 个空格。
|
||
--no_comm_files
|
||
如果指定了此选项则不生成与协议无关的、公用的C++类文件。
|
||
--only_comm_files
|
||
如果指定了此选项则只生成与协议无关的、公用C++类文件, 此时不需要指定xml描述文件。
|
||
--no_united_name
|
||
如果指定了此选项,根节点的 name 属性值为 "" 的xml描述文件, 生成的代码不指定namespace。
|
||
--common_namespace=NAME
|
||
如果指定了此选项则生成的common文件的namespace为NAME,否则采用默认值"tsf4g_tdr"。
|
||
--capital_macro_name
|
||
如果指定了此选项则生成的C++头文件中防止重复包含的预定义宏采用全大写。
|
||
--with_from_xml
|
||
如果指定了此选则生成输入XML格式数据的成员函数及相关的第三方源代码。
|
||
--with_to_xml
|
||
如果指定了此选则生成输出XML格式数据的成员函数。
|
||
--no_pack
|
||
如果指定了此选则不生成 pack 成员函数。
|
||
--no_unpack
|
||
如果指定了此选则不生成 unpack 成员函数。
|
||
--no_visualize
|
||
如果指定了此选项则不生成visualize成员函数, 默认生成visualize成员函数。
|
||
--no_macro_from_xml
|
||
如果指定了此选项则加载xml格式数据时,不支持整数类型配置成macro名,默认支持。
|
||
--no_macro_to_xml
|
||
如果指定了此选项则输出xml格式数据时,绑定了macrosgroup的类型以数值输出, 默认以macro名输出。
|
||
--compatible_macro_name
|
||
如果指定了此选项则生成的C++代码的头文件中的宏名和枚举名与--xml2h方式一致,默认不一致。
|
||
--no_created_time
|
||
如果指定了此选项则生成的所有文件中不输出时间注释信息,默认输出时间注释。
|
||
--use_switch_case_style
|
||
如果指定了此选项则生成的union方法使用switch case风格分支处理语句,默认if else风格。
|
||
--no_msvc_c1061_error
|
||
如果出现了MSVC的C1061(blocks netsted too deeply)编译错误,请务必打开此选项。
|
||
--with_tlog_util
|
||
如果指定了此选项并且未指定--no_comm_files,则生成与协议无关的、公共的tlog辅助文件。
|
||
|
||
xml2csharp的可选项:
|
||
-i,--indent-size
|
||
指定生成的c++类文件的缩进大小(必须大于0),默认为 4 个空格。
|
||
-p,--no_type_prefix
|
||
生成的类成员名不添加表示此成员类型的前缀。
|
||
如果不指定此选择,缺省会添加表示成员类型的前缀。
|
||
--no_error_trace
|
||
如果指定了此选项则生成的C#类文件中不插入用于跟踪错误的调试代码。
|
||
|
||
gen_xmltmplt的必选项:
|
||
-m,--meta_name=NAME 指定要生成模板的元数据名称。
|
||
|
||
gen_xmltmplt的可选项:
|
||
-e,--meta_version=VERSION 如果指定此选项,则只输出版本号小于或等于此值的元数据或子成员数据。
|
||
VERSION必须大于元数据的基础版本,且小于TDR支持的最大版本(2147483647)。
|
||
如果没有指定此选项,或指定的值为0,则取指定元数据的最大版本值。
|
||
-x,--xml_formatID=FORMATID 指定生成的xml文件的格式, 目前支持如下格式:
|
||
ATTR: 简单非数组成员以属性方式输出。
|
||
LIST: 简单非数组成员以子节点方式输出。
|
||
如果没有指定 -x 选项,则缺省输出格式为 LIST。
|
||
-n,--encoding=ENCODING 指定输出的xml模板文件的头部的 encoding 属性的值。
|
||
如果没有指定 -n 选项,则缺省输出 encoding="GBK"。
|
||
-o,--out_file=FILE 指定生成的配置文件,如果没有指定此选择,则缺省以a.xml为文件名。
|
||
|
||
export_prefix的必选项:
|
||
-u,--prefix_file=FILE 指定用于保存导出的数据成员前缀表的文件名。
|
||
|
||
转换公共选项:
|
||
-O,--out_path=PATH 指定输出文件的保存路径。
|
||
如果不指定此选项:
|
||
对于xml2dr和xml2c其输出目录缺省为当前工作目录;
|
||
对于xml2h其输出目录为对应xml所在目录。
|
||
-f,--old_xml_tagset 指明xml元数据描述库是采用FO定义的老的XML标签进行描述的,转换工具必须按照老的格式去解析。
|
||
如果没有指定此选项,则转换工具会按照TDR定义的xml标签去解析xml元数据描述库。
|
||
-d,--dump_lib 以可视化的方式打印出元数据描述库,并输出到"dump_lib.txt"文件中。
|
||
|
||
其他选项:
|
||
-h,--help 输出此工具的帮助列表
|
||
-v,--version 输出此工具的构建版本
|
||
|
||
使用示例:
|
||
./csharptdr -B -o ov_res.tdr ov_res.xml
|
||
#xml格式元数据库生成.tdr二进制库
|
||
./csharptdr -C -o ov_res.c --old_xml_tagset ov_res.xml
|
||
#使用老标签集的xml格式元数据库生成.c文件
|
||
./csharptdr -H -O "include" --add_custom_prefix="m_" --no_type_prefix net_protocol.xml
|
||
#xml元数据库生成.h文件,生成的文件保存在include目录
|
||
#结构体(struct)/联合体(union)成员名添加前缀"m_",但不添加类型前缀
|
||
./csharptdr -G -m Pkg -x ATTR -o Pkg.xml net_protocol.xml
|
||
#为Pkg生成xml格式的配置文件, 剪切版本为Pkg的最大版本, 文件名为Pkg.xml
|
||
./csharptdr -T -u prefixfile
|
||
#导出生成.h文件时使用的数据成员前缀表到文件prefixfile中
|
||
./csharptdr -A --indent-size=8 net_protocol.xml
|
||
#根据net_protocol.xml中描述的协议生成ActionScript3语言的类文件,缩进大小为8个空格
|
||
./csharptdr -P --indent-size=8 net_protocol.xml
|
||
#根据net_protocol.xml中描述的协议生成C++语言的类文件,缩进大小为8个空格
|
||
./csharptdr -S --indent-size=8 net_protocol.xml
|
||
#根据net_protocol.xml中描述的协议生成C#语言的类文件,缩进大小为8个空格
|
||
./csharptdr -E 0x83010404
|
||
#查询错误号0x83010404对应的错误信息
|
||
|