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();//关闭文件


原文地址:https://www.cnblogs.com/zouqiang/p/9852901.html