市面上的pb Thrift 目标都是一个为数据中转或协议约定 KFData的定位是一个代码数据 持久化与传递
- 支持继承关系
- 支持对象指针mixobject
- KFData数据格式有自描述特性
- 无任何解析文件和描述文件可读
- 结合KFD[描述文件]可以正常查看任意数据
- JSON级别的兼容性
- 兼容属性的类型改变
- 兼容属性ID的改变
- 兼容对象继承关系改变
- 代码注释生成描述文件
- 不依赖编译器支持
- 不用单独写如proto类似的文件
- 支持差量读写及传输
- 可在原对象上读写数据
- 支持数据序列化[暂未实现]及反序列化过程中定制个性操作
- 可在一个数据反序列化后马上绑定一些本地的配置数据等
- 支持个性数据的标准化
- 如FString 可以当 std::string的标准序列化及反序列化
- 很容易支持第三方库的序列化与反序列化
- 反射特性[实现中]
- 等等想到了再写
///KFD(C,CLASS=类名,EXTEND=父类名,TMPL=自定义模版文件,CNAME=描述名,NOF=是否导出解析文件(1|0),NEW=实例化函数) ///KFD(P=属性id(>1&!=127),NAME=属性名称,CNAME=属性显示名,TYPE=基础类型,OTYPE=对象类型,OR=是否OVERRIDE) ///KFD(*)
关于P的额外字段
CALL=解析时调用函数 CLEAR=解析时调用函数
READ=自定义序列化函数 WRITE=自定义反序列化函数
ENUM=关联的枚举类型 ENUMATTACH=连动枚举类型[格式说明待补充]
关于P为数组时的额外字段
ARRCLEAR=清空数组函数 ARRSIZE=数组长度函数 ARRPUSH=增加元素函数 ARRBACK=数组最后一项
基于std的CPP文件最小解析定义为[其他字段均为可选项]:
///KFD(C) ///KFD(P=1) ///KFD(*)
工具会自动解析类型以及其他字段
名称:需要重定义的基础类型名如int8,uint8 值字字符:自定义类型名称 类型:目前没有意义不用填写