#pragma once #include // used to retain original type "x" #define EMULATOR_CAST(T, x) T struct Emu32 { }; struct Emu64 { }; template struct EmulatorTraits; template <> struct EmulatorTraits { using PVOID = std::uint32_t; using ULONG_PTR = std::uint32_t; using SIZE_T = std::uint32_t; using UNICODE = char16_t; using HANDLE = std::uint32_t; }; template <> struct EmulatorTraits { using PVOID = std::uint64_t; using ULONG_PTR = std::uint64_t; using SIZE_T = std::uint64_t; using UNICODE = char16_t; using HANDLE = std::uint64_t; };