l0_c_names::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.