MCPcopy Create free account
hub / github.com/SakuraEngine/SakuraEngine / MetaDatabase

Class MetaDatabase

tools/meta_codegen/framework/old_framework.py:72–165  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

70
71
72class MetaDatabase(object):
73 def __init__(self):
74 self.records = []
75 self.enums = []
76 self.name_to_record = {}
77 self.name_to_enum = {}
78 self.functions = []
79 self.includes = set()
80
81 def add_include(self, path):
82 self.includes.add(os.path.normpath(path).replace(os.sep, "/"))
83
84 def set_names(self, type, name):
85 type.name = name
86 type.id = name.replace("::", "_")
87 type.luaName = name.replace("::", ".")
88 var = str.rsplit(name, "::", 1)
89 type.short_name = var[-1]
90 if len(var) > 1:
91 type.namespace = var[0]
92
93 def load_meta_file(self, file, add):
94 try:
95 meta = json.load(open(file, encoding='utf-8'), object_hook=lambda d: SimpleNamespace(**d))
96 except json.decoder.JSONDecodeError as e:
97 print(e)
98 abort(file)
99 for name, record in vars(meta.records).items():
100 self.set_names(record, name)
101 if add:
102 self.records.append(record)
103 self.add_include(record.fileName)
104 self.name_to_record[record.name] = record
105 for name, enum in vars(meta.enums).items():
106 self.set_names(enum, name)
107 if add:
108 self.enums.append(enum)
109 self.add_include(enum.fileName)
110 self.name_to_enum[enum.name] = enum
111 for function in meta.functions:
112 self.add_include(function.fileName)
113 self.functions.append(function)
114
115 def render(self, filename, **context):
116 try:
117 template = Template(
118 open(filename, "rb").read(),
119 filename=filename,
120 input_encoding="utf8",
121 strict_undefined=True,
122 )
123 return template.render(**context)
124 except Exception:
125 # Uncomment to see a traceback in generated Python code:
126 # raise
127 abort(exceptions.text_error_template().render())
128
129 def generate_forward(self):

Callers 1

generateFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected