1 from lcfg.api import ConfigIOProvider
2 from lcfg.utils import is_basic
6 class CHeaderConfigProvider(ConfigIOProvider):
7 def __init__(self, header_save,
8 header_prefix="CONFIG_") -> None:
9 self.__header_export = header_save
10 self.__prefix = header_prefix
11 self.__re = re.compile(r"^[A-Za-z0-9_]+$")
13 def export(self, env, config_dict):
15 for k, v in config_dict.items():
16 result = [ "#define" ]
18 s = f"{self.__prefix}{s}"
20 if isinstance(v, str) and self.__re.match(v):
21 s = f"{s}_{str.upper(v)}"
26 v = self.serialize_value(v)
27 if v is None or v is False:
28 result.insert(0, "//")
32 lines.append(" ".join(result))
34 with open(self.__header_export, 'w') as f:
35 f.write("\n".join(lines))
38 def serialize_value(self, v):
42 if isinstance(v, bool):
45 if v and isinstance(v, str):
52 f"serialising {type(v)}: not supported")