diff options
| author | Andre Weissflog <floooh@gmail.com> | 2022-06-25 14:40:31 +0200 |
|---|---|---|
| committer | Andre Weissflog <floooh@gmail.com> | 2022-06-25 14:40:31 +0200 |
| commit | f833d5600ededd632afda7a94ae67cd39e3c42d0 (patch) | |
| tree | 76a56877e71a3069426a5c2c1f58a51e3d6e9403 | |
| parent | 105ba48330e68ed862752bc5d844f7d2ba5d7edd (diff) | |
nim bindings: remove to 'const to bitfield' conversion
| -rw-r--r-- | bindgen/gen_nim.py | 30 |
1 files changed, 3 insertions, 27 deletions
diff --git a/bindgen/gen_nim.py b/bindgen/gen_nim.py index a7f42c5d..c118797e 100644 --- a/bindgen/gen_nim.py +++ b/bindgen/gen_nim.py @@ -35,11 +35,6 @@ ignores = [ 'sdtx_vprintf', ] -# consts that should be converted to Nim enum bitfields, values mimic C type declarations -const_bitfield_overrides = { - 'SAPP_MODIFIER_': 'sapp_event_modifier', -} - overrides = { 'sgl_error': 'sgl_get_error', 'sgl_deg': 'sgl_as_degrees', @@ -59,7 +54,6 @@ overrides = { 'SAPP_KEYCODE_9': 'SAPP_KEYCODE_DIGIT_9', 'SG_IMAGETYPE_2D': 'SG_IMAGETYPE_TWO_DEE', 'SG_IMAGETYPE_3D': 'SG_IMAGETYPE_THREE_DEE', - 'sapp_event.modifiers': 'sapp_event_modifier', # type declared above 'ptr': 'pointer', # range ptr } @@ -189,14 +183,6 @@ def check_ignore(name): def is_power_of_two(val): return val == 0 or val & (val - 1) == 0 -def check_consts_bitfield_override(decl): - for override in const_bitfield_overrides: - if all(override in item['name'] for item in decl['items']): - if any(not is_power_of_two(int(item['value'])) for item in decl['items']): - print(f"warning: bitfield override '{override}' encountered non-power-of-two value") - return const_bitfield_overrides[override] - return None - def wrap_keywords(s): if s in keywords: return f'`{s}`' @@ -380,7 +366,7 @@ def gen_consts(decl, prefix): l(f" {as_camel_case(item_name, prefix)}* = {item['value']}") l("") -def gen_enum(decl, prefix, bitfield=None): +def gen_enum(decl, prefix): item_names_by_value = {} value = -1 has_explicit_values = False @@ -395,8 +381,7 @@ def gen_enum(decl, prefix, bitfield=None): else: value += 1 item_names_by_value[value] = as_enum_item_name(item_name) - enum_name = bitfield if bitfield is not None else decl['name'] - enum_name_nim = as_nim_type_name(enum_name, prefix) + enum_name_nim = as_nim_type_name(decl['name'], prefix) l('type') l(f" {enum_name_nim}* {{.pure, size:sizeof(int32).}} = enum") if has_explicit_values: @@ -407,8 +392,6 @@ def gen_enum(decl, prefix, bitfield=None): else: for name in item_names_by_value.values(): l(f" {name},") - if bitfield is not None: - l(f" {enum_name_nim}s = set[{enum_name_nim}]") l("") # returns C prototype compatible function args (with pointers) @@ -503,9 +486,6 @@ def pre_parse(inp): enum_items[enum_name] = [] for item in decl['items']: enum_items[enum_name].append(as_enum_item_name(item['name'])) - for bitfield in const_bitfield_overrides.values(): - enum_types.append(bitfield) - enum_types.append(bitfield + 's') def gen_imports(inp, dep_prefixes): for dep_prefix in dep_prefixes: @@ -599,11 +579,7 @@ def gen_module(inp, dep_prefixes): if not decl['is_dep']: kind = decl['kind'] if kind == 'consts': - bitfield = check_consts_bitfield_override(decl) - if bitfield is not None: - gen_enum(decl, prefix, bitfield=bitfield) - else: - gen_consts(decl, prefix) + gen_consts(decl, prefix) elif not check_ignore(decl['name']): if kind == 'struct': gen_struct(decl, prefix) |