#!/usr/bin/python3 import os import sys import re from disassemble import get_z_name script_dir = os.path.dirname(os.path.realpath(__file__)) root_dir = script_dir + "/../" asm_dir = root_dir + "asm/non_matchings/overlays/actors" src_dir = root_dir + "src/overlays/actors" include_dir = root_dir + "include" indent = " " includes = "#include \n#include \n\n" def remove_struct(root, filename): with open(os.path.join(root, filename)) as f: c_text = f.read() struct_start = c_text.find("typedef") struct_end = c_text.find("#define") struct = c_text[struct_start:struct_end] newfile_text = "#include \"" + filename[:-2] + ".h\"" + "\n\n" + c_text[struct_end:] with open(os.path.join(root, filename), "w", newline="\n") as f: f.write(newfile_text) return struct def handle_file(root, filename): guard_name = "_" + filename[:-2].upper() + "_H_" top_guard = "#ifndef " + guard_name + "\n#define " + guard_name + "\n\n" header_text = top_guard header_text += includes struct = remove_struct(root, filename) header_text += struct u_split = filename[:-2].split("_") init_vars_name = "" for part in u_split[1:]: init_vars_name += part[0].upper() if len(part) > 1: init_vars_name += part[1:] init_vars_name += "_" init_vars_name += "InitVars" header_text += "extern const ActorInit " + init_vars_name + ";\n\n" header_text += "#endif\n" with open(os.path.join(root, filename[:-2] + ".h"), "w", newline="\n") as f: f.write(header_text) def main(): for root, dirs, files in os.walk(src_dir): for filename in files: if filename.endswith(".c"): file_path = os.path.join(root, filename) with open(file_path) as f: file_text = f.read() brace_count = file_text.count("{") if brace_count == 2: handle_file(root, filename) dog = 5 main()