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


posted @   邹强  阅读(284)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示