36 lines
1.1 KiB
C++
36 lines
1.1 KiB
C++
/* -----------------------------------------------------------------------------
|
|
GSFramework
|
|
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
|
----------------------------------------------------------------------------- */
|
|
|
|
|
|
#ifndef __NASSERT__
|
|
#define __NASSERT__
|
|
|
|
|
|
namespace GS {
|
|
namespace Assert {
|
|
|
|
/// Trigger a system assertion.
|
|
extern void Trigger(const char *source, int line, const char *condition, const char *message = 0);
|
|
|
|
} // Assert
|
|
} // GS
|
|
|
|
// Portable assert.
|
|
#ifdef _DEBUG
|
|
#define __ASSERT__(_EXP_) if (!(_EXP_)) GS::Assert::Trigger(__FILE__, __LINE__, #_EXP_)
|
|
#define __ASSERT_MSG__(_EXP_, _MSG_) if (!(_EXP_)) GS::Assert::Trigger(__FILE__, __LINE__, #_EXP_, _MSG_)
|
|
#define __ASSERT_ALWAYS__ GS::Assert::Trigger(__FILE__, __LINE__, "Unconditional")
|
|
#else
|
|
#define __ASSERT__(_EXP_)
|
|
#define __ASSERT_MSG__(_EXP_, _MSG_)
|
|
#define __ASSERT_ALWAYS__
|
|
#endif
|
|
|
|
#define __RASSERT__(_EXP_) if (!(_EXP_)) GS::Assert::Trigger(__FILE__, __LINE__, #_EXP_)
|
|
#define __RASSERT_MSG__(_EXP_, _MSG_) if (!(_EXP_)) GS::Assert::Trigger(__FILE__, __LINE__, #_EXP_, _MSG_)
|
|
|
|
|
|
#endif // __NASSERT__
|