CNames class
Defined in module l0_c_names (l0_c_names.py).
C identifiers and the session-local temporary-name sequence.
Public static attributes
- static set C_KEYWORDS
Public functions
- auto mangle_struct_name(self, str module_name, str struct_name) -> str
- Mangle a struct name to avoid C namespace collisions.
- auto mangle_enum_name(self, str module_name, str enum_name) -> str
- Mangle an enum name.
- auto mangle_function_name(self, str module_name, str func_name) -> str
- Mangle a function name.
- auto mangle_let_name(self, str module_name, str let_name) -> str
- Mangle a top-level let name to C identifier.
- auto mangle_identifier(self, str name) -> str
- Mangle an identifier if it conflicts with C keywords or L0 names.
- auto fresh_tmp(self, str kind = "tmp") -> str
- Generate a unique temporary variable name.
- auto emit_enum_tag(self, EnumType enum_type, str variant_name) -> str
- Emit C tag enum value for an enum variant.
Protected static attributes
- static int _tmp_counter
Function documentation
str l0_c_names:: CNames:: mangle_struct_name(self,
str module_name,
str struct_name)
Mangle a struct name to avoid C namespace collisions.
| Parameters | |
|---|---|
| module_name | Module name. |
| struct_name | L0 struct name. |
| Returns | Mangled C struct name (e.g., "l0_module_Point"). |
str l0_c_names:: CNames:: mangle_enum_name(self,
str module_name,
str enum_name)
Mangle an enum name.
| Parameters | |
|---|---|
| module_name | Module name. |
| enum_name | L0 enum name. |
| Returns | Mangled C enum name. |
str l0_c_names:: CNames:: mangle_function_name(self,
str module_name,
str func_name)
Mangle a function name.
| Parameters | |
|---|---|
| module_name | Module name. |
| func_name | L0 function name. |
| Returns | Mangled C function name. |
str l0_c_names:: CNames:: mangle_let_name(self,
str module_name,
str let_name)
Mangle a top-level let name to C identifier.
| Parameters | |
|---|---|
| module_name | Module name. |
| let_name | L0 constant name. |
| Returns | Mangled C identifier. |
str l0_c_names:: CNames:: mangle_identifier(self,
str name)
Mangle an identifier if it conflicts with C keywords or L0 names.
| Parameters | |
|---|---|
| name | The L0 identifier to mangle. |
| Returns | The safe C identifier. |
Used for local variables, parameters, and pattern variables. Appends '__v' suffix to avoid C keyword conflicts. Also mangles names starting with '_' or 'l0_'/'L0_' to avoid clashes with runtime names.
str l0_c_names:: CNames:: fresh_tmp(self,
str kind = "tmp")
Generate a unique temporary variable name.
| Parameters | |
|---|---|
| kind | Category of temporary (e.g., "tmp", "ptr", "try"). |
| Returns | Unique C identifier like "l0_tmp_1", "l0_ptr_2", etc. |
str l0_c_names:: CNames:: emit_enum_tag(self,
EnumType enum_type,
str variant_name)
Emit C tag enum value for an enum variant.
| Parameters | |
|---|---|
| enum_type | The L0 enum type. |
| variant_name | The name of the variant. |
| Returns | The mangled C enum tag identifier. |