From 30e7501b006e55bdeec0db18709d3fd4c5db86b5 Mon Sep 17 00:00:00 2001 From: rtk0c Date: Fri, 27 May 2022 13:47:40 -0700 Subject: Changeset: 40 Add custom token typing mechanism --- buildtools/codegen/CodegenLookupTable.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 buildtools/codegen/CodegenLookupTable.h (limited to 'buildtools/codegen/CodegenLookupTable.h') 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]) -- cgit v1.2.3-70-g09d2