#define DEBUGGER_BREAKPOINT() raise(SIGTRAP);
#endif
-
-#define FILE_LINE __FILE__ ":" << __LINE__
+#define STR(x) #x
+#define STR2(x) STR(x)
+#define FILE_LINE __FILE__ ":" STR2(__LINE__)
#if defined(_DEBUG) || 1
#define DEBUG_ASSERTS
#if defined(DEBUG_ASSERTS)
/// \brief Sends a \p message to the current debug-message-handler text-output-stream if \p condition evaluates to false.
-#define ASSERT_MESSAGE(condition, message)\
+#define ASSERT_MESSAGE(condition, message) do{\
if(!(condition))\
{\
- globalDebugMessageHandler().getOutputStream() << FILE_LINE << "\nassertion failure: " << message << "\n";\
+ globalDebugMessageHandler().getOutputStream() << FILE_LINE "\nassertion failure: " << message << "\n";\
if(!globalDebugMessageHandler().handleMessage()) { DEBUGGER_BREAKPOINT(); }\
-} else\
+}} while(0)
/// \brief Sends a \p message to the current debug-message-handler text-output-stream.
-#define ERROR_MESSAGE(message)\
-globalDebugMessageHandler().getOutputStream() << FILE_LINE << "\nruntime error: " << message << "\n";\
-if(!globalDebugMessageHandler().handleMessage()) { DEBUGGER_BREAKPOINT(); } else\
+#define ERROR_MESSAGE(message) do{\
+globalDebugMessageHandler().getOutputStream() << FILE_LINE "\nruntime error: " << message << "\n";\
+if(!globalDebugMessageHandler().handleMessage()) { DEBUGGER_BREAKPOINT(); }} while(0)
#define ASSERT_NOTNULL(ptr) ASSERT_MESSAGE(ptr != 0, "pointer \"" #ptr "\" is null")
#else
#define ASSERT_MESSAGE(condition, message)
+#define ERROR_MESSAGE(message)
#define ASSERT_NOTNULL(ptr)
#endif