hydrolink/gen_c/gen_enums.py

23 lines
649 B
Python

from hydroparse import HydroEnum, HydroEnumEntry
import os
def generate_enums_h(dir, enums: list[HydroEnum]):
with open(os.path.join(dir, "hydrolink_enums.h"), "w") as f:
for enum in enums:
f.write(f"""#pragma once
typedef enum {enum.name} {{
{enum_entries(enum)}
}}{enum.name};
""")
def enum_entries(enum: HydroEnum):
array = []
entry: HydroEnumEntry
for entry in enum.entries:
array.append(
f"{enum.name}_{entry.name} = {entry.value}, /// {entry.description}"
)
array.append(f"{enum.name}_ENUM_END = {enum.highest_value + 1}")
return "\n".join(array)