Kaynağa Gözat

Added BX_UNUSED_x macro dispatcher.

bkaradzic 12 yıl önce
ebeveyn
işleme
d6fef5bbe1
1 değiştirilmiş dosya ile 19 ekleme ve 6 silme
  1. 19 6
      include/bx/macros.h

+ 19 - 6
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