mirror of
https://github.com/tinygrad/tinygrad.git
synced 2026-04-29 03:00:14 -04:00
autogen: fix enum (#14171)
This commit is contained in:
committed by
GitHub
parent
fa5475307c
commit
a021b84604
@@ -491,4 +491,24 @@ typedef struct ip_discovery_header
|
||||
self.assertIn('struct_foo', namespace)
|
||||
self.assertIn('struct_foo_bar', namespace)
|
||||
|
||||
@unittest.skipIf(WIN, "doesn't compile on windows")
|
||||
def test_enums(self):
|
||||
namespace = self.run_gen("""
|
||||
enum Foo { A, B, C };
|
||||
enum Bar { X, Y, Z };
|
||||
""")
|
||||
|
||||
assert namespace["A"] == 0
|
||||
assert namespace["B"] == 1
|
||||
assert namespace["C"] == 2
|
||||
assert namespace["X"] == 0
|
||||
assert namespace["Y"] == 1
|
||||
assert namespace["Z"] == 2
|
||||
assert namespace["enum_Foo"].get(0) == "A"
|
||||
assert namespace["enum_Foo"].get(1) == "B"
|
||||
assert namespace["enum_Foo"].get(2) == "C"
|
||||
assert namespace["enum_Bar"].get(0) == "X"
|
||||
assert namespace["enum_Bar"].get(1) == "Y"
|
||||
assert namespace["enum_Bar"].get(2) == "Z"
|
||||
|
||||
if __name__ == "__main__": unittest.main()
|
||||
|
||||
@@ -65,7 +65,7 @@ else:
|
||||
class CFUNCTYPE:
|
||||
def __class_getitem__(cls, key): return ctypes.CFUNCTYPE(del_an(key[0]), *(del_an(a) for a in key[1]))
|
||||
class Enum:
|
||||
_val_to_name_: dict[int,str] = {}
|
||||
def __init_subclass__(cls): cls._val_to_name_ = {}
|
||||
|
||||
@classmethod
|
||||
def get(cls, val, default="unknown"): return cls._val_to_name_.get(val, default)
|
||||
|
||||
Reference in New Issue
Block a user