65 lines
1.5 KiB
Python
65 lines
1.5 KiB
Python
class ExtractFileWriter:
|
|
indent_width = 4
|
|
indent_level = 0
|
|
indention = ""
|
|
|
|
def __init__(self, name):
|
|
self.name = name.upper()
|
|
|
|
def indent(self):
|
|
self.indent_level += self.indent_width
|
|
self.indention = " " * self.indent_level
|
|
|
|
def unindent(self):
|
|
self.indent_level -= self.indent_width
|
|
self.indention = " " * self.indent_level
|
|
|
|
def header_guard_start(self):
|
|
print(f"#ifndef {self.name}")
|
|
print(f"#define {self.name}")
|
|
print()
|
|
|
|
def header_guard_stop(self):
|
|
print(f"#endif // {self.name}")
|
|
|
|
def include(self, header):
|
|
print(f"${self.indention}#include {header}")
|
|
|
|
def enum_start(self, name):
|
|
print(f"{self.indention}typedef enum {name} {{")
|
|
self.indent()
|
|
|
|
def enum_stop(self, name):
|
|
self.unindent()
|
|
print(f"}} {name};")
|
|
print()
|
|
|
|
def enum_list(self, name, enums):
|
|
self.enum_start(name)
|
|
for enum in enums:
|
|
print(f"{self.indention}{enum},")
|
|
self.enum_stop(name)
|
|
|
|
def enum_dict(self, name, enums):
|
|
self.enum_start(name)
|
|
for enum, v in enums.items():
|
|
print(f"{self.indention}{enum} = {v},")
|
|
self.enum_stop(name)
|
|
|
|
def output(self, out):
|
|
print(f"{self.indention}{out}", end="")
|
|
|
|
def output_line(self):
|
|
print()
|
|
|
|
def only_output(self, out):
|
|
print(out, end="")
|
|
|
|
def block_start(self):
|
|
print(f"{{")
|
|
self.indent()
|
|
|
|
def block_end(self):
|
|
self.unindent()
|
|
print(f"{self.indention}}}")
|