/**
@file debugAssert.h
debugAssert(expression);
debugAssertM(expression, message);
@cite
John Robbins, Microsoft Systems Journal Bugslayer Column, Feb 1999.
http://msdn.microsoft.com/library/periodic/period99/feb99_BUGSLAYE_BUGSLAYE.htm
@cite
Douglas Cox, An assert() Replacement, Code of The Day, flipcode, Sept 19, 2000
http://www.flipcode.com/cgi-bin/msg.cgi?showThread=COTD-AssertReplace&forum=cotd&id=-1
@maintainer Morgan McGuire, matrix@graphics3d.com
@created 2001-08-26
@edited 2006-01-12
Copyright 2000-2006, Morgan McGuire.
All rights reserved.
*/
#ifndef x68BFA40003704acb85BC500AEC18DCA7
#define x68BFA40003704acb85BC500AEC18DCA7
#include
#include "AyaBase.hpp"
namespace Aya
{
typedef bool (*AssertionHook)(const char* _expression, const char* filename, int lineNumber);
/**
Allows customization of the global function invoked when a debugAssert fails.
The initial value is Aya::_internal::_handleDebugAssert_. Aya will invoke
rawBreak if the hook returns true. If NULL, assertions are not handled.
*/
void setAssertionHook(AssertionHook hook);
AssertionHook assertionHook();
/**
Called by alwaysAssertM in case of failure in release mode. If returns
true then the program exits with -1 (you can replace this with your own
version that throws an exception or has other failure modes).
*/
void setFailureHook(AssertionHook hook);
AssertionHook failureHook();
namespace _internal
{
extern AssertionHook _debugHook;
extern AssertionHook _failureHook;
} // namespace _internal
} // namespace Aya
#endif