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();//关闭文件
    
    
    
  • 相关阅读:
    垃圾回收于内存优化(摘自网络)
    as3.0 动态改变影片剪辑的颜色
    2进制_8进制_16进制之间快速转换的技巧.txt
    24位真彩色转换为8位灰度图片(完整代码)
    大端模式和小端模式
    如何将真彩色图转换为各种灰度图
    C++图像缩放
    二进制转十进制快速转换方法
    电脑上运行的使用大全
    移位运算符详解
  • 原文地址:https://www.cnblogs.com/zouqiang/p/9852901.html
Copyright © 2011-2022 走看看