Browse code

Change enum to be number format agnostic

Robert Cranston authored on 16/09/2023 17:40:57
Showing 2 changed files

... ...
@@ -100,7 +100,7 @@ Commands:
100 100
   value <enum>
101 101
     Print the value of <enum>.
102 102
   enum <value>
103
-    Print the enum(s) that has the given <value>, using exact string matching.
103
+    Print the enum(s) that has the given <value>.
104 104
   supports <name>
105 105
     Print the OpenGL version or extension required to use <name>.
106 106
   names [<support>]
... ...
@@ -57,7 +57,7 @@ Commands:
57 57
   value <enum>
58 58
     Print the value of <enum>.
59 59
   enum <value>
60
-    Print the enum(s) that has the given <value>, using exact string matching.
60
+    Print the enum(s) that has the given <value>.
61 61
   supports <name>
62 62
     Print the OpenGL version or extension required to use <name>.
63 63
   names [<support>]
... ...
@@ -411,7 +411,14 @@ def value(xml, enum):
411 411
 
412 412
 ### `enum`
413 413
 def enum(xml, value):
414
-    enum = xml.xpath(f"{ENUMS}/enum[@value='{value}']/@name")
414
+    def conv(s):
415
+        return int(s, 16 if s.startswith('0x') else 10)
416
+    value = conv(value)
417
+    enum = (
418
+        enum.get('name')
419
+        for enum in xml.xpath(f"{ENUMS}/enum")
420
+        if conv(enum.get('value')) == value
421
+    )
415 422
     return sorted(enum, key=key)
416 423
 
417 424