From d6fef5bbe10d417753e0e108516c4373ed588c70 Mon Sep 17 00:00:00 2001 From: bkaradzic Date: Sun, 7 Apr 2013 22:10:15 -0700 Subject: [PATCH] Added BX_UNUSED_x macro dispatcher. --- include/bx/macros.h | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/include/bx/macros.h b/include/bx/macros.h index 43419f6..c273c8a 100644 --- a/include/bx/macros.h +++ b/include/bx/macros.h @@ -11,9 +11,9 @@ #define BX_VA_ARGS_COUNT_DETAIL(_a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9, _a10, _a11, _a12, _a13, _a14, _a15, _a16, _last, ...) _last #define BX_VA_ARGS_COUNT(...) BX_VA_ARGS_COUNT_DETAIL(__VA_ARGS__, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1) -#define BX_MACRO_DISPATCHER_DETAIL1(_func, _argCount) _func ## _argCount -#define BX_MACRO_DISPATCHER_DETAIL2(_func, _argCount) BX_MACRO_DISPATCHER_DETAIL1(_func, _argCount) -#define BX_MACRO_DISPATCHER(_func, ...) BX_MACRO_DISPATCHER_DETAIL2(_func, BX_VA_ARGS_COUNT(__VA_ARGS__) ) +#define BX_MACRO_DISPATCHER_DETAIL2(_func, _argCount) _func ## _argCount +#define BX_MACRO_DISPATCHER_DETAIL1(_func, _argCount) BX_MACRO_DISPATCHER_DETAIL2(_func, _argCount) +#define BX_MACRO_DISPATCHER(_func, ...) BX_MACRO_DISPATCHER_DETAIL1(_func, BX_VA_ARGS_COUNT(__VA_ARGS__) ) #define BX_MAKEFOURCC(_a, _b, _c, _d) ( ( (uint32_t)(_a) | ( (uint32_t)(_b) << 8) | ( (uint32_t)(_c) << 16) | ( (uint32_t)(_d) << 24) ) ) @@ -64,21 +64,34 @@ #define BX_ALIGN_STRUCT_256(_struct) BX_ALIGN_STRUCT(256, _struct) #define BX_UNUSED(_unused) do { (void)sizeof(_unused); } while(0) +#define BX_UNUSED_1(_a1) BX_UNUSED(_a1) +#define BX_UNUSED_2(_a1, _a2) BX_UNUSED(_a1); BX_UNUSED(_a2) +#define BX_UNUSED_3(_a1, _a2, _a3) BX_UNUSED_2(_a1, _a2); BX_UNUSED(_a3) +#define BX_UNUSED_4(_a1, _a2, _a3, _a4) BX_UNUSED_3(_a1, _a2, _a3); BX_UNUSED(_a4) +#define BX_UNUSED_5(_a1, _a2, _a3, _a4, _a5) BX_UNUSED_4(_a1, _a2, _a3, _a4); BX_UNUSED(_a5) +#define BX_UNUSED_6(_a1, _a2, _a3, _a4, _a5, _a6) BX_UNUSED_5(_a1, _a2, _a3, _a4, _a5); BX_UNUSED(_a6) +#define BX_UNUSED_7(_a1, _a2, _a3, _a4, _a5, _a6, _a7) BX_UNUSED_6(_a1, _a2, _a3, _a4, _a5, _a6); BX_UNUSED(_a7) +#define BX_UNUSED_8(_a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8) BX_UNUSED_7(_a1, _a2, _a3, _a4, _a5, _a6, _a7); BX_UNUSED(_a8) +#define BX_UNUSED_9(_a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9) BX_UNUSED_8(_a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8); BX_UNUSED(_a9) +#define BX_UNUSED_10(_a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9, _a10) BX_UNUSED_9(_a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9); BX_UNUSED(_a10) +#define BX_UNUSED_11(_a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9, _a10, _a11) BX_UNUSED_10(_a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9, _a10); BX_UNUSED(_a11) +#define BX_UNUSED_12(_a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9, _a10, _a11, _a12) BX_UNUSED_11(_a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9, _a10, _a11); BX_UNUSED(_a12) +#define BX_UNUSED_VARGS(...) BX_MACRO_DISPATCHER(BX_UNUSED_, __VA_ARGS__)(__VA_ARGS__) #define BX_CLASS_NO_COPY_NO_ASSIGNMENT(_class) \ _class(const _class&); \ _class& operator=(const _class&) #ifndef BX_CHECK -# define BX_CHECK(...) do {} while(0) +# define BX_CHECK(_condition, ...) do { BX_UNUSED_VARGS(__VA_ARGS__); } while(0) #endif // BX_CHECK #ifndef BX_TRACE -# define BX_TRACE(...) do {} while(0) +# define BX_TRACE(...) do { BX_UNUSED_VARGS(__VA_ARGS__); } while(0) #endif // BX_TRACE #ifndef BX_WARN -# define BX_WARN(...) do {} while(0) +# define BX_WARN(_condition, ...) do { BX_UNUSED_VARGS(__VA_ARGS__); } while(0) #endif // BX_CHECK #ifndef BX_CONFIG_SPSCQUEUE_USE_MUTEX