From 0632f97757f214b54af7e6ddb992c5eecb31bf54 Mon Sep 17 00:00:00 2001 From: Judah Caruso Date: Sun, 25 May 2025 15:03:01 -0600 Subject: [PATCH] add enum_min, enum_max to [meta] --- meta/type_info.jai | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/meta/type_info.jai b/meta/type_info.jai index b7652fb..8e1db7b 100644 --- a/meta/type_info.jai +++ b/meta/type_info.jai @@ -37,3 +37,37 @@ type_is_struct :: ($$T: Type) -> bool, *Type_Info_Struct { ok, info := check_type_tag(T, .STRUCT); return ok, info.(*Type_Info_Struct); } + +enum_max :: (T: Type) -> int #expand { + #assert T.(*Type_Info).type == .ENUM; + return #run -> int { + info := T.(*Type_Info_Enum); + if info.values.count == 0 { + return 0; + } + + max := 0; + for info.values if it > max { + max = it; + } + + return max; + }; +} + +enum_min :: (T: Type) -> int #expand { + #assert T.(*Type_Info).type == .ENUM; + return #run -> int { + info := T.(*Type_Info_Enum); + if info.values.count == 0 { + return 0; + } + + min := 0xFFFFFF_FFFFFF; + for info.values if it < min { + min = it; + } + + return min; + }; +}