diff options
Diffstat (limited to 'buildtools/codegen/CodegenLookupTable.h')
-rw-r--r-- | buildtools/codegen/CodegenLookupTable.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/buildtools/codegen/CodegenLookupTable.h b/buildtools/codegen/CodegenLookupTable.h new file mode 100644 index 0000000..02c0c7a --- /dev/null +++ b/buildtools/codegen/CodegenLookupTable.h @@ -0,0 +1,19 @@ +#pragma once + +#define LUT_DECL_VAR(name, aType, aCount, bType, bCount) \ + int name##A2B[aCount]; \ + int name##B2A[bCount]; \ + using name##AType = aType; \ + using name##BType = bType; \ + void InitializeLookupTable_##name() + +#define LUT_MAP_FOR(name) \ + int* lutMappingA2B = name##A2B; \ + int* lutMappingB2A = name##B2A +#define LUT_MAP(from, to) \ + lutMappingA2B[from] = to; \ + lutMappingB2A[to] = from + +#define LUT_INIT(name) InitializeLookupTable_##name() +#define LUT_LOOKUP(name, from) (name##BType)(name##A2B[from]) +#define LUT_REV_LOOKUP(name, to) (name##AType)(name##B2A[to]) |