aboutsummaryrefslogtreecommitdiff
path: root/bindgen
diff options
context:
space:
mode:
authorAndre Weissflog <floooh@gmail.com>2022-06-25 14:40:31 +0200
committerAndre Weissflog <floooh@gmail.com>2022-06-25 14:40:31 +0200
commitf833d5600ededd632afda7a94ae67cd39e3c42d0 (patch)
tree76a56877e71a3069426a5c2c1f58a51e3d6e9403 /bindgen
parent105ba48330e68ed862752bc5d844f7d2ba5d7edd (diff)
nim bindings: remove to 'const to bitfield' conversion
Diffstat (limited to 'bindgen')
-rw-r--r--bindgen/gen_nim.py30
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)