C++ Enum 转 Lua Table工具
C++ Enum转Lua Table工具
观察C++ Enum结构
总结结构
enum GameMessage
{
//*******
///******************
GM_GAMESERVER_INIT_OK = 101,//逻辑服务器初始化完成消息(共享内存部分)
GM_DATABASESERVER_INIT_OK,//数据库服务器初始化完成
//GM_REGISTER_GAME_SERVER,
/*************** 仙盟开始 *************************/
SM_PILL_RETURN,
}
分析结构
- enum GameMessage开头
- {}中包含所有枚举注释
- 每一行可能为枚举或注释
- 枚举 (带,号 带枚举值 带注释)
- 注释(//开头 ///开头 /*/包含)
定义每行的结构类
public class EnumLineStream
{
public string name;//枚举名
public int valuse;//枚举值
public string annotation;注释
public bool isStart;是否是开头{
public bool isEnd;是否是结尾}
}
读取文件 关键API
StreamReader sr = new StreamReader(路径, Encoding.Default);
string line;
while ((line = sr.ReadLine()) != null)
{
解析(line)
}
解析思想
- 判断该行是否为{或}
- 判断该行是否为空
- 判断该行是否为注释(//开头 ///开头 /*/包含)
- 判断该行是否为枚举(带,号 带枚举值 带注释)
根据解析获得的数据生成文件 关键API
string filePath = Directory.GetCurrentDirectory() + "/GameMessage.lua";//保存文件路径
FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite);//创建文件
StreamWriter streamWriter = new StreamWriter(fileStream);
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < data.Count; i++)
{
//。。。。读取数据
stringBuilder.AppendLine(数据);//添加并换行
}
streamWriter.Write(stringBuilder);//写入文件
streamWriter.Close();//关闭文件
C++ Enum 转 Lua Table工具的更多相关文章
- lua table integer index 特性
table.maxn (table) Returns the largest positive numerical index of the given table, or zero if the t ...
- 树形打印lua table表
为方便调试lua程序,往往想以树的形式打印出一个table,以观其表内数据.以下罗列了三种种关于树形打印lua table的方法;法一 local print = print local tconca ...
- lua table 排序--满足多条件排序
前提 假设 一个小怪 有三种属性,等级(level).品质(quality).id(pid) 我们需要对他们进行排序,两种排序情况,第一是单一属性排序,比如按照等级进行排序,或者多种属性进行优先级排序 ...
- 详解LUA开发工具及其环境配置
LUA开发工具及其环境配置是本文要介绍的内容,主要是来了解并学习lua开发工具的使用和环境的配置,第一次接触LUA的话,就跟本人一起学习吧.看我能不能忽悠到你. LUA是语言,那么一定有编写的工具.第 ...
- cocos2d-x lua table数据存储
cocos2d-x lua table数据存储 version: cocos2d-x 3.6 1. 将table转为json http://blog.csdn.net/songcf_faith/art ...
- cocos2d-x lua table与json的转换
cocos2d-x lua table与json的转换 version: cocos2d-x 3.6 1.引入json库 require("src/cocos/cocos2d/json&qu ...
- Lua table使用
days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Th ...
- lua table表
lua table表 语法结构 创建一个 table 直接使用 "{}" 即可 table1 = {} -- 赋值 table1["name"] = " ...
- lua table表判断是否为空
官方手册里早已经给了答案,那就是靠lua内置的next函数 即如此用: a = {} if next(a) == nil then next其实就是pairs遍历table时用来取下一个内容的函数. ...
随机推荐
- 2018.10.30 uoj#273. 【清华集训2016】你的生命已如风中残烛(组合数学)
传送门 组合数学妙题. 我们把这mmm个数都减去111. 然后出牌的地方就变成了−1-1−1. 然后发现求出每个位置的前缀和之后全部都是非负数. 考虑在最后加入一个−1-1−1构成一个m+1m+1m+ ...
- 对象序列化:pickle和shelve
import pickle class DVD: def __init__(self,tilte,year=None,duration=None,director_id=None): self.tit ...
- linux命令详解之useradd命令使用方法[linux下 添加用户、删除用户、修改用户密码、用户组管理]
http://www.jb51.net/article/45848.htm Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这 ...
- 3-具体学习git--reset回到过去的版本(commit间穿梭),checkout单个文件穿梭
git log --oneline 命令可以在一块儿显示做过的改动. 我在change 2时忘了一条,想在change 1后再添加一个语句或一个操作,然后这个状态再提交仍作为change 2.将这个s ...
- python3.4用函数操作mysql5.7数据库
#!/usr/bin/env python # -*- coding:utf-8 -*- # __author__ = "blzhu" """ pyt ...
- for循环添加的闭包问题
function test(){ var arr = []; for (var i=0;i;i++){ arr[i] = function(){ console.log(i); } } return ...
- R语言的文件写入
R语言的文件写入 官方文档介绍如下: write.table(x, file = "", append = FALSE, quote = TRUE, sep = " &q ...
- vue2.x和vue1.0
1.首先挂载方式上 在vue2.0中,如果使用body或者html作为挂载点,则会报以下警告: Do not mount Vue to <html> or <body> - m ...
- VC6.0编译器设置
主要通过VC的菜单项Project->Settings->C/C++页来完成.我们可以看到这一页的最下面Project Options中的内容,一般如下:/nologo /MDd /W3 ...
- 20155326刘美岑 2016-2017-2 《Java程序设计》第5周学习总结
20155326刘美岑 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 使用 try.catch (1)java中所有的错误都会被打包为对象,如果愿意,可以尝 ...