diff options
| author | Andre Weissflog <floooh@gmail.com> | 2025-03-17 12:09:49 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-17 12:09:49 +0100 |
| commit | df495a4c01aea5fefccaf91682476d9b950dca6c (patch) | |
| tree | e21f50401423e211f2c77fac29ee8c17ef0acd71 /bindgen | |
| parent | 46d3c53d2485ce2eee67287931ff4a5c1d4c3563 (diff) | |
| parent | a737aae10c12cd53c70d3a6cd9f9e6e89970b03b (diff) | |
Merge pull request #1216 from adamrt/add-tigerstyle-for-zig-bindgen
bindgen: add option to use tiger style for zig
Diffstat (limited to 'bindgen')
| -rw-r--r-- | bindgen/gen_all.py | 8 | ||||
| -rw-r--r-- | bindgen/gen_zig.py | 17 |
2 files changed, 17 insertions, 8 deletions
diff --git a/bindgen/gen_all.py b/bindgen/gen_all.py index 03a93756..7f34a89c 100644 --- a/bindgen/gen_all.py +++ b/bindgen/gen_all.py @@ -1,4 +1,8 @@ -import os, gen_nim, gen_zig, gen_odin, gen_rust, gen_d, gen_jai, gen_c3 +import os, argparse, gen_nim, gen_zig, gen_odin, gen_rust, gen_d, gen_jai, gen_c3 + +parser = argparse.ArgumentParser() +parser.add_argument("--zig-tiger-style", action="store_true", help="Enable zig tiger style mode.") +args = parser.parse_args() tasks = [ [ '../sokol_log.h', 'slog_', [] ], @@ -39,7 +43,7 @@ zig_tasks = [ gen_zig.prepare() for task in zig_tasks: [c_header_path, main_prefix, dep_prefixes] = task - gen_zig.gen(c_header_path, main_prefix, dep_prefixes) + gen_zig.gen(c_header_path, main_prefix, dep_prefixes, {"tiger-style": args.zig_tiger_style}) # D d_tasks = [ diff --git a/bindgen/gen_zig.py b/bindgen/gen_zig.py index b5e14b7b..52f617e5 100644 --- a/bindgen/gen_zig.py +++ b/bindgen/gen_zig.py @@ -420,9 +420,13 @@ def gen_func_c(decl, prefix): l(f"extern fn {decl['name']}({funcdecl_args_c(decl, prefix)}) {funcdecl_result_c(decl, prefix)};") l('') -def gen_func_zig(decl, prefix): +def gen_func_zig(decl, prefix, tiger_style=False): c_func_name = decl['name'] - zig_func_name = util.as_lower_camel_case(check_override(decl['name']), prefix) + if not tiger_style: + zig_func_name = util.as_lower_camel_case(check_override(decl['name']), prefix) + else: + zig_func_name = util.as_lower_snake_case(check_override(decl['name']), prefix) + c(decl.get('comment')) if c_func_name in c_callbacks: # a simple forwarded C callback function @@ -552,7 +556,7 @@ def gen_helpers(inp): l('}') l('') -def gen_module(inp, dep_prefixes): +def gen_module(inp, dep_prefixes, opt={}): l('// machine generated, do not edit') if inp.get('comment'): l('') @@ -574,7 +578,8 @@ def gen_module(inp, dep_prefixes): gen_enum(decl, prefix) elif kind == 'func': gen_func_c(decl, prefix) - gen_func_zig(decl, prefix) + tiger_style = opt.get('tiger-style', False) + gen_func_zig(decl, prefix, tiger_style=tiger_style) def prepare(): print('=== Generating Zig bindings:') @@ -583,7 +588,7 @@ def prepare(): if not os.path.isdir('sokol-zig/src/sokol/c'): os.makedirs('sokol-zig/src/sokol/c') -def gen(c_header_path, c_prefix, dep_c_prefixes): +def gen(c_header_path, c_prefix, dep_c_prefixes, opt={}): if not c_prefix in module_names: print(f' >> warning: skipping generation for {c_prefix} prefix...') return @@ -593,7 +598,7 @@ def gen(c_header_path, c_prefix, dep_c_prefixes): reset_globals() shutil.copyfile(c_header_path, f'sokol-zig/src/sokol/c/{os.path.basename(c_header_path)}') ir = gen_ir.gen(c_header_path, c_source_path, module_name, c_prefix, dep_c_prefixes, with_comments=True) - gen_module(ir, dep_c_prefixes,) + gen_module(ir, dep_c_prefixes, opt) output_path = f"sokol-zig/src/sokol/{ir['module']}.zig" with open(output_path, 'w', newline='\n') as f_outp: f_outp.write(out_lines) |