Source code for ifgen.struct.util
"""
Utility interfaces related to struct code generation.
"""
# internal
from ifgen.generation.interface import GenerateTask
[docs]
def struct_dependencies(task: GenerateTask) -> set[str]:
"""Generates string type names for dependencies."""
unique = set()
for config in task.instance["fields"]:
if "type" in config:
unique.add(config["type"])
# Add includes for bit-fields.
for bit_field in config.get("fields", []):
if "type" in bit_field:
unique.add(bit_field["type"])
# Add includes for alternates.
for alternate in config.get("alternates", []):
for alternate_bit_field in alternate.get("fields", []):
if "type" in alternate_bit_field:
unique.add(alternate_bit_field["type"])
return unique