From f80da36a7022a8dc090d299b5493435b87b9126c Mon Sep 17 00:00:00 2001 From: Alexander Arvidsson <2972103+AlexanderArvidsson@users.noreply.github.com> Date: Sun, 5 Jan 2025 18:17:54 +0100 Subject: bindgen: Utility function for Odin comments --- bindgen/gen_odin.py | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) (limited to 'bindgen') diff --git a/bindgen/gen_odin.py b/bindgen/gen_odin.py index 6e2a5e32..487a391d 100644 --- a/bindgen/gen_odin.py +++ b/bindgen/gen_odin.py @@ -149,6 +149,18 @@ def l(s): global out_lines out_lines += s + '\n' +def c(s, indent=""): + if '\n' in s: + l(f'{indent}/*') + if indent: + # prefix all lines with indent + l(indent + indent.join(s.splitlines(True))) + else: + l(s) + l(f'{indent}*/') + else: + l(f'{indent}// {s.strip()}') + def check_override(name, default=None): if name in overrides: return overrides[name] @@ -428,12 +440,7 @@ def gen_c_imports(inp, c_prefix, prefix): res_type = funcdecl_result_c(decl, prefix) res_str = '' if res_type == '' else f'-> {res_type}' if decl.get('comment'): - if '\n' in decl["comment"]: - l(" /*") - l(" " + " ".join(decl['comment'].splitlines(True))) - l(" */") - else: - l(" // " + decl['comment'].strip()) + c(decl['comment'], indent=" ") # Need to special case sapp_sg to avoid Odin's context keyword if c_prefix == "sapp_sg": l(f' @(link_name="{decl["name"]}")') @@ -453,12 +460,7 @@ def gen_struct(decl, prefix): c_struct_name = check_override(decl['name']) struct_name = as_struct_or_enum_type(c_struct_name, prefix) if decl.get('comment'): - if '\n' in decl["comment"]: - l("/*") - l(decl["comment"]) - l("*/") - else: - l("// " + decl['comment'].strip()) + c(decl['comment']) l(f'{struct_name} :: struct {{') for field in decl['fields']: field_name = check_override(field['name']) @@ -474,12 +476,7 @@ def gen_struct(decl, prefix): def gen_enum(decl, prefix): enum_name = check_override(decl['name']) if decl.get('comment'): - if '\n' in decl["comment"]: - l("/*") - l(decl["comment"]) - l("*/") - else: - l("// " + decl['comment'].strip()) + c(decl['comment']) l(f'{as_struct_or_enum_type(enum_name, prefix)} :: enum i32 {{') for item in decl['items']: item_name = as_enum_item_name(check_override(item['name'])) -- cgit v1.2.3