# csbuf **Repository Path**: wint/csbuf ## Basic Information - **Project Name**: csbuf - **Description**: 序列化 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2016-01-04 - **Last Updated**: 2023-11-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #csbuf .csbuf 协议解析器 proto.py infile [-o outdir] [-c] [-l] [-g] infile 可以指定协议声明文件或所在目录 -i infile 指定协议声明文件或所在目录,当输入源多于一处时,使用这个标识添加更多的输入 -o outdir 指定 outdir 为生成的协议文件存放目录 -c 指定需要生成 c++ 协议 -l 指定需要生成 lua 协议 -g 指定需要生成 go 协议 -t 指定需要生成 typescript 协议 -p 指定需要生成 python 协议 协议声明文件可使用的关键字有 package, import, message, array, group 可使用的基本数据类型有 bool, string, bytes, uint8, uint16, uint32, uint64, int8, int16, int32, int64, float, double 协议定义以分号作为结束符,// 用于注释,消息域可以使用基本类型或其它消息定义,需要指定所在序号 package 声明协议所在包,必须在每个协议文件头定义,后接包名 如 package test import 导入其它协议文件,后接协议声明文件名(不含后缀名) 如 import test message 声明一个消息体,后接消息名和消息编号,消息域以大括号封闭 消息编号是作为消息的识别码,如果不写则使用自动编号 如 message mymsg 1001 { uint8 field1 = 1; } array 声明消息域为数组,出现在消息域头部 如 array string pid = 2; group 声明一组使用相同协议号的消息组,所有不在 group 标志内的消息都分为 0 组 在 group 标志内的组按定义顺序分组为 1, 2 ... 给 group 指定的协议号会组这个标志内的消息都使用这个协议号 可以使用 _; 来跳过某一分组的消息定义 如 group 2001 { message ..., message ... } 以下是一个消息示例: package test import test1 message Test1 1001 { uint32 pid = 1; // 角色 id array string gid = 2; // 定义一个字符串数组 }