| #pragma once |
| |
| #ifndef TCG_MACROS_H |
| #define TCG_MACROS_H |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| #define TCG_ASSERT(assertion, failure_expr) \ |
| \ |
| if (!(assertion)) { \ |
| assert(assertion); \ |
| failure_expr; \ |
| } else \ |
| (void)0 |
| |
| |
| |
| |
| |
| |
| |
| #define TCG_DO_JOIN2(A, B) A##B |
| #define TCG_DO_JOIN(A, B) TCG_DO_JOIN2(A, B) // Argument macro expansion here |
| #define TCG_JOIN(A, B) TCG_DO_JOIN(A, B) |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| #define TCG_STATIC_ASSERT(expr) \ |
| struct TCG_JOIN(_tcg_static_assert_, __LINE__) { \ |
| int : -int(!(expr)); \ |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| #ifdef NDEBUG |
| #define TCG_DEBUG(expr1) |
| #define TCG_DEBUG2(expr1, expr2) |
| #define TCG_DEBUG3(expr1, exrp2, expr3) |
| #define TCG_DEBUG4(expr1, expr2, expr3, expr4) |
| #define TCG_DEBUG5(expr1, expr2, expr3, expr4, expr5) |
| #else |
| #define TCG_DEBUG(expr1) expr1 |
| #define TCG_DEBUG2(expr1, expr2) expr1, expr2 |
| #define TCG_DEBUG3(expr1, exrp2, expr3) expr1, expr2, expr3 |
| #define TCG_DEBUG4(expr1, expr2, expr3, expr4) expr1, expr2, expr3, expr4 |
| #define TCG_DEBUG5(expr1, expr2, expr3, expr4, expr5) expr1, expr2, expr3, expr4, expr5 |
| #endif |
| |
| #endif // TCG_MACROS_H |