diff options
Diffstat (limited to 'scripts/gen_registry.py')
| -rw-r--r-- | scripts/gen_registry.py | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/scripts/gen_registry.py b/scripts/gen_registry.py index e80759e..dbe6f04 100644 --- a/scripts/gen_registry.py +++ b/scripts/gen_registry.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 """Generate ts_registry_generated.c with registry array and getter functions.""" +import glob import importlib.util import os import re @@ -39,9 +40,9 @@ def _resolve_params_size(params_size, name): return params_size except FileNotFoundError: pass - # Struct not in header, compute size from definition - import glob - + # Struct not in header, compute size from definition. + # Both fp_t (double) and uint_t (uint64_t) are 8 bytes on 64-bit. + # This is a fallback; sizeof() in the generated C code is preferred. lib_dir = os.path.join(ROOT, "lib") for cfile in glob.glob(os.path.join(lib_dir, "*.c")): try: @@ -57,7 +58,11 @@ def _resolve_params_size(params_size, name): body = struct_m.group(1) n_fp = len(re.findall(r"fp_t\s+", body)) n_uint = len(re.findall(r"uint_t\s+", body)) - return str(n_fp * 8 + n_uint * 8) + n_total = n_fp + n_uint + if n_total == 0: + return "0" + # Assume 8-byte alignment (valid for fp_t=double, uint_t=uint64_t) + return str(n_total * 8) return "0" |