Source code for ifgen.enum.map

"""
A module for generating static map data structures related to enumerations.
"""

# third-party
from vcorelib.io import IndentedFileWriter

# internal
from ifgen.generation.interface import GenerateTask


[docs] def enum_to_string_map(task: GenerateTask, writer: IndentedFileWriter) -> None: """Create a static map for enum to string conversion.""" inst = f"{task.name}_to_string" writer.write( f"static const std::map<{task.name}, const char *> {inst} = " + "{" ) for enum in task.instance.get("enum", {}): with writer.indented(): writer.write("{" + f'{task.name}::{enum}, "{enum}"' + "},") writer.write("};")
[docs] def enum_from_string_map( task: GenerateTask, writer: IndentedFileWriter ) -> None: """Create a static map for string to enum conversion.""" inst = f"{task.name}_from_string" writer.write( f"static const std::map<const std::string, {task.name}> {inst} = " + "{" ) for enum in task.instance.get("enum", {}): with writer.indented(): writer.write("{" + f'"{enum}", {task.name}::{enum}' + "},") writer.write("};")