diff options
| author | gingerBill <gingerBill@users.noreply.github.com> | 2024-11-11 21:30:19 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-11 21:30:19 +0000 |
| commit | 764c32fd3e7eb026236706ac682a09f8cd10cdc2 (patch) | |
| tree | 21c5a923ae738e2b8b42898e3e80563203d1a560 | |
| parent | bed6828ea3947034c87a0391f1adfa5ba892a4a1 (diff) | |
| parent | 9c374b4d02076cde5c611d60644e286084ea788e (diff) | |
Merge pull request #4477 from laytan/enum-value-has-name
reflect: add `enum_value_has_name` proc
| -rw-r--r-- | core/reflect/reflect.odin | 21 |
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 + } +} |