Listing 3

#define debugAssertM(exp, message) { \
      static bool __debugAssertIgnoreAlways__ = false; \
      if (!__debugAssertIgnoreAlways__ && !(exp)) { \
        G3D::_internal::_releaseInputGrab_(); \
        if (G3D::_internal::
                _handleDebugAssert_(#exp, message, __FILE__, __LINE__, \
            __debugAssertIgnoreAlways__, __debugPromptShowDialog__)) { \
             _asm { int 3 }; \
        } \
          G3D::_internal::_restoreInputGrab_(); \
      } \
  }