From 486add62ed9d4d18588e6020001a6785a269ceaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joel=20Ho=CC=88ner?= Date: Sun, 26 Nov 2017 05:33:37 +0100 Subject: [PATCH] Added static assert + verify int type sizes --- include/Zydis/CommonTypes.h | 11 +++++++++++ include/Zydis/Defines.h | 9 +++++++++ 2 files changed, 20 insertions(+) diff --git a/include/Zydis/CommonTypes.h b/include/Zydis/CommonTypes.h index fbc5da0..d9726c6 100644 --- a/include/Zydis/CommonTypes.h +++ b/include/Zydis/CommonTypes.h @@ -86,6 +86,17 @@ # endif #endif +// Verify assumptions. +ZYDIS_STATIC_ASSERT(sizeof(ZydisU8) == 1); +ZYDIS_STATIC_ASSERT(sizeof(ZydisU16) == 2); +ZYDIS_STATIC_ASSERT(sizeof(ZydisU32) == 4); +ZYDIS_STATIC_ASSERT(sizeof(ZydisU64) == 8); +ZYDIS_STATIC_ASSERT(sizeof(ZydisI8) == 1); +ZYDIS_STATIC_ASSERT(sizeof(ZydisI16) == 2); +ZYDIS_STATIC_ASSERT(sizeof(ZydisI32) == 4); +ZYDIS_STATIC_ASSERT(sizeof(ZydisI64) == 8); +ZYDIS_STATIC_ASSERT(sizeof(ZydisUSize) == sizeof(ZydisISize)); + /* ============================================================================================== */ /* NULL */ /* ============================================================================================== */ diff --git a/include/Zydis/Defines.h b/include/Zydis/Defines.h index 9dd70f0..e847205 100644 --- a/include/Zydis/Defines.h +++ b/include/Zydis/Defines.h @@ -164,6 +164,15 @@ /* Utils */ /* ============================================================================================== */ +/** + * @brief Compiler-time assertion. + */ +#if __STDC_VERSION__ >= 201112L +# define ZYDIS_STATIC_ASSERT(x) _Static_assert(x, #x) +#else +# define ZYDIS_STATIC_ASSERT(x) typedef int ZYDIS_SASSERT_IMPL[(x) ? 1 : -1] +#endif + /** * @brief Declares a bitfield. */