aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2024-11-11 21:30:19 +0000
committerGitHub <noreply@github.com>2024-11-11 21:30:19 +0000
commit764c32fd3e7eb026236706ac682a09f8cd10cdc2 (patch)
tree21c5a923ae738e2b8b42898e3e80563203d1a560 /core
parentbed6828ea3947034c87a0391f1adfa5ba892a4a1 (diff)
parent9c374b4d02076cde5c611d60644e286084ea788e (diff)
Merge pull request #4477 from laytan/enum-value-has-name
reflect: add `enum_value_has_name` proc
Diffstat (limited to 'core')
-rw-r--r--core/reflect/reflect.odin21
1 files changed, 21 insertions, 0 deletions
diff --git a/core/reflect/reflect.odin b/core/reflect/reflect.odin
index c04afb380..d547b67ed 100644
--- a/core/reflect/reflect.odin
+++ b/core/reflect/reflect.odin
@@ -723,6 +723,27 @@ enum_name_from_value_any :: proc(value: any) -> (name: string, ok: bool) {
return
}
+/*
+Returns whether the value given has a defined name in the enum type.
+*/
+@(require_results)
+enum_value_has_name :: proc(value: $T) -> bool where intrinsics.type_is_enum(T) {
+ when len(T) == cap(T) {
+ return value >= min(T) && value <= max(T)
+ } else {
+ if value < min(T) || value > max(T) {
+ return false
+ }
+
+ for valid_value in T {
+ if valid_value == value {
+ return true
+ }
+ }
+
+ return false
+ }
+}