Giter VIP home page Giter VIP logo

kfdata's Introduction

Kungfu data


为什么需要Kungfu data (以下简称KFData) ?

市面上的pb Thrift 目标都是一个为数据中转或协议约定 KFData的定位是一个代码数据 持久化与传递

KFData支持哪些特性?

  • 支持继承关系
  • 支持对象指针mixobject
  • KFData数据格式有自描述特性
    • 无任何解析文件和描述文件可读
    • 结合KFD[描述文件]可以正常查看任意数据
  • JSON级别的兼容性
    • 兼容属性的类型改变
    • 兼容属性ID的改变
    • 兼容对象继承关系改变
  • 代码注释生成描述文件
    • 不依赖编译器支持
    • 不用单独写如proto类似的文件
  • 支持差量读写及传输
    • 可在原对象上读写数据
  • 支持数据序列化[暂未实现]及反序列化过程中定制个性操作
    • 可在一个数据反序列化后马上绑定一些本地的配置数据等
  • 支持个性数据的标准化
    • 如FString 可以当 std::string的标准序列化及反序列化
  • 很容易支持第三方库的序列化与反序列化
  • 反射特性[实现中]
  • 等等想到了再写

KFData 说明文档


解析注释 关键字乎略大小写

///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 值字字符:自定义类型名称 类型:目前没有意义不用填写

kfdata's People

Contributors

jubupx avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.