diff options
author | rtk0c <[email protected]> | 2022-06-03 22:58:28 -0700 |
---|---|---|
committer | rtk0c <[email protected]> | 2022-06-03 22:58:28 -0700 |
commit | 8510a85f79f706b93982b4e398b187b5f77081dd (patch) | |
tree | 996c27f54f748d940f58454f7ef1e1570d1a31d5 /source/10-common/LookupTable.hpp | |
parent | bd07ae3f4e1bcdedc3e373460671ca9713a03de5 (diff) |
Changeset: 61 [BUGGED] Move object kind enums to use generated ToString and FromStrong
The old mechanism rely on a specific prefix to Ires and GameObject string representations, but the generator currently leaves the enum value. Therefore all editor (e.g. drag & drop) and IO (e.g. ires loading) mechanisms are broken.
Diffstat (limited to 'source/10-common/LookupTable.hpp')
-rw-r--r-- | source/10-common/LookupTable.hpp | 78 |
1 files changed, 39 insertions, 39 deletions
diff --git a/source/10-common/LookupTable.hpp b/source/10-common/LookupTable.hpp index 360cc2b..54548f2 100644 --- a/source/10-common/LookupTable.hpp +++ b/source/10-common/LookupTable.hpp @@ -5,60 +5,60 @@ // BIDI stands for bi-directional #define BIDI_LUT_DECL(name, aType, aCount, bType, bCount) \ - int gLut_##name##_A2B[aCount]; \ - int gLut_##name##_B2A[bCount]; \ + int gLutBidi_##name##_A2B[aCount]; \ + int gLutBidi_##name##_B2A[bCount]; \ using name##AType = aType; \ using name##BType = bType; \ - void InitializeLut##name() -#define BIDI_LUT_MAP_FOR(name) \ - int* lutMappingA2B = gLut_##name##_A2B; \ - int* lutMappingB2A = gLut_##name##_B2A + void InitializeLutBidi##name() +#define BIDI_LUT_MAP_FOR(name) \ + int* lutMappingA2B = gLutBidi_##name##_A2B; \ + int* lutMappingB2A = gLutBidi_##name##_B2A #define BIDI_LUT_MAP(from, to) \ lutMappingA2B[from] = to; \ lutMappingB2A[to] = from -#define BIDI_LUT_INIT(name) InitializeLut##name() -#define BIDI_LUT_A2B_LOOKUP(name, from) (name##BType)(gLut_##name##_A2B[from]) -#define BIDI_LUT_B2A_LOOKUP(name, to) (name##AType)(gLut_##name##_B2A[to]) +#define BIDI_LUT_INIT(name) InitializeLutBidi##name() +#define BIDI_LUT_A2B_LOOKUP(name, from) (name##BType)(gLutBidi_##name##_A2B[from]) +#define BIDI_LUT_B2A_LOOKUP(name, to) (name##AType)(gLutBidi_##name##_B2A[to]) // Forward string lookup -#define FSTR_LUT_DECL(name, enumMinValue, enumMaxValue) \ - constexpr int kLutMinVal_##name = enumMinValue; \ - const char* gLut_##name[(int)enumMaxValue - (int)enumMinValue]; \ - void InitializeLut##name() -#define FSTR_LUT_MAP_FOR(name) \ - const char** lutMapping = gLut_##name; \ - int lutMappingMinValue = kLutMinVal_##name +#define FSTR_LUT_DECL(name, enumMinValue, enumMaxValue) \ + constexpr int kLutFwMinVal_##name = enumMinValue; \ + const char* gLutFw_##name[(int)enumMaxValue - (int)enumMinValue]; \ + void InitializeLutFw##name() +#define FSTR_LUT_MAP_FOR(name) \ + const char** lutMapping = gLutFw_##name; \ + int lutMappingMinValue = kLutFwMinVal_##name #define FSTR_LUT_MAP(value, text) lutMapping[value - lutMappingMinValue] = text #define FSTR_LUT_MAP_ENUM(enumValue) FSTR_LUT_MAP(enumValue, #enumValue) -#define FSTR_LUT_LOOKUP(name, enumValue) gLut_##name[enumValue - kLutMinVal_##name] -#define FSTR_LUT_INIT(name) InitializeLut##name() +#define FSTR_LUT_LOOKUP(name, enumValue) gLutFw_##name[enumValue - kLutFwMinVal_##name] +#define FSTR_LUT_INIT(name) InitializeLutFw##name() // RSTR stands for reverse-string lookup -#define RSTR_LUT_DECL(name, enumMinValue, enumMaxValue) \ - robin_hood::unordered_flat_map<std::string_view, decltype(enumMaxValue)> gLut_##name; \ - void InitializeLut##name() -#define RSTR_LUT_MAP_FOR(name) auto& lutMapping = gLut_##name; +#define RSTR_LUT_DECL(name, enumMinValue, enumMaxValue) \ + robin_hood::unordered_flat_map<std::string_view, decltype(enumMaxValue)> gLutRv_##name; \ + void InitializeLutRv##name() +#define RSTR_LUT_MAP_FOR(name) auto& lutMapping = gLutRv_##name; #define RSTR_LUT_MAP(value, text) lutMapping.insert_or_assign(std::string_view(text), value); -#define RSTR_LUT(name) gLut_##name -#define BSTR_LUT_LOOKUP(name, string) gLut_##name.find(std::string_view(text))->second -#define RSTR_LUT_INIT(name) InitializeLut##name() +#define RSTR_LUT(name) gLutRv_##name +#define BSTR_LUT_LOOKUP(name, string) gLutRv_##name.find(std::string_view(text))->second +#define RSTR_LUT_INIT(name) InitializeLutRv##name() // BSTR stands for bi-directional string lookup -#define BSTR_LUT_DECL(name, enumMinValue, enumMaxValue) \ - constexpr int kLutMinVal_##name = enumMinValue; \ - const char* gLut_##name##_V2S[(int)enumMaxValue - (int)enumMinValue]; \ - robin_hood::unordered_flat_map<std::string_view, decltype(enumMaxValue)> gLut_##name##_S2V; \ - void InitializeLut##name() -#define BSTR_LUT_MAP_FOR(name) \ - const char** lutMappingV2S = gLut_##name##_V2S; \ - auto& lutMappingS2V = gLut_##name##_S2V; \ - int lutMappingMinValue = kLutMinVal_##name +#define BSTR_LUT_DECL(name, enumMinValue, enumMaxValue) \ + constexpr int kLutBstrMinVal_##name = enumMinValue; \ + const char* gLutBstr_##name##_V2S[(int)enumMaxValue - (int)enumMinValue]; \ + robin_hood::unordered_flat_map<std::string_view, decltype(enumMaxValue)> gLutBstr_##name##_S2V; \ + void InitializeLutBstr##name() +#define BSTR_LUT_MAP_FOR(name) \ + const char** lutMappingV2S = gLutBstr_##name##_V2S; \ + auto& lutMappingS2V = gLutBstr_##name##_S2V; \ + int lutMappingMinValue = kLutBstrMinVal_##name #define BSTR_LUT_MAP(value, text) \ lutMappingV2S[value - lutMappingMinValue] = text; \ lutMappingS2V.insert_or_assign(std::string_view(text), value); #define BSTR_LUT_MAP_ENUM(enumValue) BSTR_LUT_MAP(enumValue, #enumValue) -#define BSTR_LUT_V2S(name) gLut_##name##_V2S -#define BSTR_LUT_S2V(name) gLut_##name##_S2V -#define BSTR_LUT_V2S_LOOKUP(name, enumValue) gLut_##name##_V2S[enumValue - kLutMinVal_##name] -#define BSTR_LUT_S2V_LOOKUP(name, string) gLut_##name##_S2V.find(std::string_view(text))->second -#define BSTR_LUT_INIT(name) InitializeLut##name() +#define BSTR_LUT_V2S(name) gLutBstr_##name##_V2S +#define BSTR_LUT_S2V(name) gLutBstr_##name##_S2V +#define BSTR_LUT_V2S_LOOKUP(name, enumValue) gLutBstr_##name##_V2S[enumValue - kLutBstrMinVal_##name] +#define BSTR_LUT_S2V_LOOKUP(name, string) gLutBstr_##name##_S2V.find(std::string_view(text))->second +#define BSTR_LUT_INIT(name) InitializeLutBstr##name() |