1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 12:32:20 +02:00
Beef/BeefLibs/corlib/src/Enum.bf
2020-07-06 09:55:19 -07:00

41 lines
912 B
Beef

using System.Reflection;
namespace System
{
struct Enum
{
public static void EnumToString(Type type, String strBuffer, int64 iVal)
{
for (var field in type.GetFields())
{
if (field.[Friend]mFieldData.[Friend]mData == iVal)
{
strBuffer.Append(field.Name);
return;
}
}
((int32)iVal).ToString(strBuffer);
}
public static Result<T> Parse<T>(StringView str, bool ignoreCase = false) where T : Enum
{
var typeInst = (TypeInstance)typeof(T);
for (var field in typeInst.GetFields())
{
if (str.Equals(field.[Friend]mFieldData.mName, ignoreCase))
return .Ok(*((T*)(&field.[Friend]mFieldData.mData)));
}
return .Err;
}
/*public override void ToString(String strBuffer) mut
{
Type type = GetType();
int32* iPtr = (int32*)((int)(&this) + (int)type.Size);
EnumToString(type, strBuffer, *iPtr);
//EnumToString(GetType(), )
}*/
}
}