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}}}")