• 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# 图片存入SQL Server数据库
    C#如何将Build成功的程序集Copy到上一层目录
    JavaScript中JSON字符串和JSON对象相互转化
    如何将C#对象转化为JSON字符串
    SQL的常用语句
    NHibernate的使用
    如何配置Spring的XML文件及使用
    TRIGGER的使用(修改SP自动触发)
    iOS UIButton上下排列(上图下文)
    将.c .h文件打包成静态库 .a .so
  • 原文地址:https://www.cnblogs.com/zouqiang/p/9852901.html
Copyright © 2020-2023  润新知