zoukankan      html  css  js  c++  java
  • 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();//关闭文件
    
    
    
  • 相关阅读:
    如何培养编程所需要的逻辑思维?
    CSS教程
    Android中Service(服务)详解
    Tomcat热部署的实现原理
    Java多线程和线程池(转)
    导出Excel表格
    各种时间格式化的转化
    上传多媒体文件到微信公众平台
    发起https请求并获取结果
    Java 将字节转换为十六进制字符串
  • 原文地址:https://www.cnblogs.com/zouqiang/p/9852901.html
Copyright © 2011-2022 走看看