about summary refs log tree commit diff stats
path: root/docs/gen/gen.py
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2025-05-14 16:15:01 +0800
committerGitHub <noreply@github.com>2025-05-14 10:15:01 +0200
commit3d0b4ac9e1a861afb2a5def13a10a74a5f2f1b24 (patch)
tree1bd17ca487b634cf7fc510179007521f05145e2b /docs/gen/gen.py
parent4be5149b8d291268b32a7a8ad93651ecbcd12f1b (diff)
downloadbox64-3d0b4ac9e1a861afb2a5def13a10a74a5f2f1b24.tar.gz
box64-3d0b4ac9e1a861afb2a5def13a10a74a5f2f1b24.zip
[DOCS] Align usage.json and env.h (#2633)
* [DOCS] Align usage.json and env.h

* Removed BOX64_FUTEX_WAITV

* review

* gen
Diffstat (limited to 'docs/gen/gen.py')
-rw-r--r--docs/gen/gen.py34
1 files changed, 18 insertions, 16 deletions
diff --git a/docs/gen/gen.py b/docs/gen/gen.py
index a21dc57d..710e973b 100644
--- a/docs/gen/gen.py
+++ b/docs/gen/gen.py
@@ -186,19 +186,21 @@ with open(env_file, "r") as file:
 
                 if t not in matches:
                     matches[t] = {}
-                matches[t][m.group("define")] = m
-                break
+                if (m.group("define") in matches[t]):
+                    # multiple definitions, no default
+                    matches[t][m.group("define")]['no_default'] = True
+                    break
+                matches[t][m.group("define")] = m.groupdict()
+                matches[t][m.group("define")]['no_default'] = False
 
 for define, m in matches["INTEGER"].items():
-    name = m.group("name")
-    default = (
-        0 if m.group("default") == "DEFAULT_LOG_LEVEL" else int(m.group("default"))
-    )
-    min = int(m.group("min"))
-    max = int(m.group("max"))
+    name = m["name"]
+    default = None if m["no_default"] or not m["default"].isdigit() else int(m["default"])
+    min = int(m["min"])
+    max = int(m["max"])
 
     # Check default in valid range
-    if default < min or default > max:
+    if default and (default < min or default > max):
         print(f"{define:<{PADDING}}: default lays outside of min/max range")
 
     # Check consistency with usage.json
@@ -231,15 +233,15 @@ for define, m in matches["INTEGER"].items():
                 print(
                     f"{define:<{PADDING}}: max value mismatch: env.h={max}, usage.json={max2}{(' (possible false positive)' if blank else '')}"
                 )
-        if default2 and default2 != default:
+        if default2 != default:
             print(
                 f"{define:<{PADDING}}: default value mismatch: env.h={default}, usage.json={default2}"
             )
 
 for define, m in matches["INTEGER64"].items():
     # similar to INTEGER but without min/max
-    name = m.group("name")
-    default = int(m.group("default"))
+    name = m["name"]
+    default = None if m["no_default"] or not m["default"].isdigit() else int(m["default"])
 
     # Check consistency with usage.json
     if e := get_usage_entry(data, define):
@@ -253,14 +255,14 @@ for define, m in matches["INTEGER64"].items():
             if o["default"]:
                 default2 = val
 
-        if default2 and default2 != default:
+        if default2 != default:
             print(
                 f"{define:<{PADDING}}: default value mismatch: env.h={default}, usage.json={default2}"
             )
 
 for define, m in matches["BOOLEAN"].items():
-    name = m.group("name")
-    default = bool(m.group("default"))
+    name = m["name"]
+    default = None if m["no_default"] or m["default"] not in ["0", "1"] else bool(m["default"])
 
     # Check consistency with usage.json
     if e := get_usage_entry(data, define):
@@ -274,7 +276,7 @@ for define, m in matches["BOOLEAN"].items():
             if o["default"]:
                 default2 = val
 
-        if default2 and default2 != default:
+        if default2 != default:
             print(
                 f"{define:<{PADDING}}: default value mismatch: env.h={default}, usage.json={default2}"
             )