bintalk语法

BTK文件

BTK文件是bintalk使用的源文件,用来描述结构化数据。一个有效的btk文件可以包含任意数量的定义。如果需要使用一个定义,必须它在之前已经被定义。如果需要使用其他文件中的定义,需要将文件import进来。
一个btk文件的基本结构:
#import OtherFile1.btk
...
#import OtherFileN.btk

definition1
definition2
...
definitionN
定义可以使:
  • 枚举定义
  • 结构体定义
  • 服务定义

基本数据类型

bintalk使用一套基本数据类型来描述结构化数据。每种基本类型会被翻译成特定语言的类型。

TypeDesc
double64 bits double precision floating point number
float32 bits floating point number
int6464 bits integer
uint6464 bits unsigned integer
int3232 bits integer
uint3232 bits unsinged integer
int1616 bits integer
uint1616 bits unsigned integer
int88 bits integer
uint88 bits unsigned integer
boolBoolean value(true or false)
string8 bits character array
binaryuint8 array

 所有动态大小的类型(string, binary)可以限定他们的最大值。
string(32)
表示这个字符串类型最多可以容纳32个字符。

枚举

枚举用来设置一个被命名的常数集合,和c++的"enum"类似。不同的是,不能独立的设置每个枚举项的值,并且虽大枚举项数量不能超过256。
枚举的定义:
enum EnumName
{
    enum_item0,
    enum_item1,
    ...
    enum_itemN,
}

数据域

data_type field_name
"data_type"可以使任意的基础类型,或者是自定义类型(enum, struct)。
比如:
int32 f1
如果想要表示一个特定类型的数据,可以在"data_type"后面加上"[]"。
比如:
int32[] f_array
同样,可以限定数组的最大长度:
int32[8] f_array
这样表示f_array可以包含最多8个int32值。

结构体

类似于C++中的结构体,结构体可以用来自定义数据类型。
结构体定义如下:
struct StructName
{
    data_field1;
    ...
    data_fieldN;
}
一个结构体可以从另一个结构体派生:
struct StructName : ParentStructName
派生后的结构体包含了父结构体的数据域。

服务

服务代表一个功能性结构,一般被用于构建"RPC"系统。一个服务由方法组成。严格上讲,服务并不是一般意义上的"RPC"接口。方法只有参数,没有返回值。仅仅是一个消息传递接口。
service ServiceName
{
    method_name1(field1, field2, ..., fieldN);
    ...
    method_nameN(...);
}
服务也可以派生:
service ServiceName : ParentServiceName
派生后的服务包含了父服务的方法。








  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值