dl
dl_code_writer.h
浏览该文件的文档.
1
12#pragma once
13
14#include "io/dl_log.h"
15#include "base/dl_vector2.h"
16#include "base/dl_range_find.h"
17
19{
20// 变量类型
21enum class VariableType
22{
23 BASE, // 基础
24 USER, // 自定义
25 ARRAY, // array
26 SINGLE, // 单值容器
27 PAIR, // 键值对
28};
29//
30// int a = 3;
31// Student a = {a,a};
32// std::array<int, 3> a = {};
33// std::vector<int> a = {};
34// std::map<int, int> a = {};
35
37constexpr bool IsStdType(std::string_view str)
38{
39 return str == "string";
40}
41
43inline void AddStdNamespace(std::string& str)
44{
45 if (IsStdType(str))
46 str = "std::" + str;
47}
48
50inline void ReplaceType(std::string& str)
51{
52 if (str == "uchar")
53 str = "unsigned char";
54 else if (str == "int32")
55 str = "int32_t";
56 else if (str == "int64")
57 str = "int64_t";
58}
59
60// 变量
62{
64 std::string _type;// 类型 map<int, int>
65 std::string _name;// 变量名 a
66 std::string _comment;// 注释
67 std::string _value;// 缺省值 1,2 3,4
68};
69// 结构体
70struct Struct
71{
72 std::string _comment;// 注释
73 std::string _name;// 类名
74 std::string _value;// 变量名
75 std::vector<Variable> _allVariable;// 所有成员
76
77 // 使所有变量对齐
79
80 Variable* GetVariable(std::string_view name)
81 {
82 return Find::FirstYes(_allVariable, [name](const Variable& v) {
83 return v._name == name;
84 });
85 }
86};
87// 一段代码
88struct Segment
89{
90 void Output(std::string_view path_name);
91 Struct* GetStruct(std::string_view name)
92 {
93 return Find::FirstYes(_allStruct, [name](const Struct& s) {
94 return s._name == name;
95 });
96 }
97 Variable* GetVariable(std::string_view name0, std::string_view name1)
98 {
99 Struct* s = GetStruct(name0);
100 if (!s)
101 return nullptr;
102 return s->GetVariable(name1);
103 }
104
105 std::vector<Struct> _allStruct;// 所有成员
106};
107
109
110}
日志系统
2维vector
Segment * Create(const Vector2< std::string, size_t > &vec2)
void ReplaceType(std::string &str)
类型转写
void AddStdNamespace(std::string &str)
如果是标准库类型,则添加std前缀
constexpr bool IsStdType(std::string_view str)
是标准库类型
auto FirstYes(C &container, F func)
find,返回下标
void Output(std::string_view path_name)
std::vector< Struct > _allStruct
Variable * GetVariable(std::string_view name0, std::string_view name1)
Struct * GetStruct(std::string_view name)
std::vector< Variable > _allVariable
Variable * GetVariable(std::string_view name)