Make UEnums store values as uint8 instead of int8.

#codereview Robert.Manuszewski

[CL 2643276 by Mikolaj Sieluzycki in Main branch]
This commit is contained in:
Mikolaj Sieluzycki
2015-08-04 08:20:16 -04:00
committed by Mikolaj.Sieluzycki@epicgames.com
parent f2e90ce538
commit a53cf2e072
8 changed files with 100 additions and 76 deletions

View File

@@ -2946,10 +2946,10 @@ void FNativeClassHeaderGenerator::ExportGeneratedEnumsInitCode(const TArray<UEnu
GeneratedEnumRegisterFunctionText.Logf(TEXT(" {\r\n"));
GeneratedEnumRegisterFunctionText.Logf(TEXT(" ReturnEnum = new(EC_InternalUseOnlyConstructor, Outer, TEXT(\"%s\"), RF_Public|RF_Transient|RF_Native) UEnum(FObjectInitializer());\r\n"), *Enum->GetName());
GeneratedEnumRegisterFunctionText.Logf(TEXT(" TArray<TPair<FName, int8>> EnumNames;\r\n"));
GeneratedEnumRegisterFunctionText.Logf(TEXT(" TArray<TPair<FName, uint8>> EnumNames;\r\n"));
for (int32 Index = 0; Index < Enum->NumEnums(); Index++)
{
GeneratedEnumRegisterFunctionText.Logf(TEXT(" EnumNames.Add(TPairInitializer<FName, int8>(FName(TEXT(\"%s\")), %d));\r\n"), *Enum->GetNameByIndex(Index).ToString(), Enum->GetValueByIndex(Index));
GeneratedEnumRegisterFunctionText.Logf(TEXT(" EnumNames.Add(TPairInitializer<FName, uint8>(FName(TEXT(\"%s\")), %d));\r\n"), *Enum->GetNameByIndex(Index).ToString(), Enum->GetValueByIndex(Index));
}
FString EnumTypeStr;

View File

@@ -1175,7 +1175,7 @@ UEnum* FHeaderParser::CompileEnum(FUnrealSourceFile& SourceFile)
FToken TagToken;
TArray<FScriptLocation> EnumTagLocations;
TArray<TPair<FName, int8>> EnumNames;
TArray<TPair<FName, uint8>> EnumNames;
int32 CurrentEnumValue = 0;
@@ -1217,7 +1217,7 @@ UEnum* FHeaderParser::CompileEnum(FUnrealSourceFile& SourceFile)
break;
}
TPair<FName, int8> CurrentEnum = TPair<FName, int8>(TPairInitializer<FName, int8>(NewTag, CurrentEnumValue));
TPair<FName, uint8> CurrentEnum = TPair<FName, uint8>(TPairInitializer<FName, uint8>(NewTag, CurrentEnumValue));
if (EnumNames.Find(CurrentEnum, iFound))
{