1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-19 08:30:25 +02:00

Fix some Enum methods

This commit is contained in:
disarray2077 2021-12-29 12:44:04 -03:00 committed by GitHub
parent 1883b7378a
commit a33cf04aa1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -9,7 +9,8 @@ namespace System
{ {
for (var field in type.GetFields()) for (var field in type.GetFields())
{ {
if (field.[Friend]mFieldData.[Friend]mData == iVal) if (field.[Friend]mFieldData.mFlags.HasFlag(.EnumCase) &&
field.[Friend]mFieldData.[Friend]mData == iVal)
{ {
strBuffer.Append(field.Name); strBuffer.Append(field.Name);
return; return;
@ -21,11 +22,10 @@ namespace System
public static Result<T> Parse<T>(StringView str, bool ignoreCase = false) where T : enum public static Result<T> Parse<T>(StringView str, bool ignoreCase = false) where T : enum
{ {
var typeInst = (TypeInstance)typeof(T); for (var (name, data) in GetEnumerator<T>())
for (var field in typeInst.GetFields())
{ {
if (str.Equals(field.[Friend]mFieldData.mName, ignoreCase)) if (str.Equals(name, ignoreCase))
return .Ok(*((T*)(&field.[Friend]mFieldData.mData))); return .Ok(data);
} }
return .Err; return .Err;
@ -34,10 +34,9 @@ namespace System
public static bool IsDefined<T>(T value) public static bool IsDefined<T>(T value)
where T : enum where T : enum
{ {
var typeInst = (TypeInstance)typeof(T); for (var data in GetValues<T>())
for (var field in typeInst.GetFields())
{ {
if (field.[Friend]mFieldData.[Friend]mData == (.)value) if (data == (.)value)
return true; return true;
} }