/*****************************************************************************/
// Copyright 2006-2007 Adobe Systems Incorporated
// All Rights Reserved.
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in
// accordance with the terms of the Adobe license agreement accompanying it.
/*****************************************************************************/
/* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_assertions.h#3 $ */
/* $DateTime: 2012/09/05 12:31:51 $ */
/* $Change: 847652 $ */
/* $Author: tknoll $ */
/** \file
* Conditionally compiled assertion check support.
*/
/*****************************************************************************/
#ifndef __dng_assertions__
#define __dng_assertions__
/*****************************************************************************/
#include "dng_exceptions.h"
#include "dng_flags.h"
/*****************************************************************************/
#if qDNGDebug
/// Platform-specific function to display an assert.
void dng_show_message (const char *s);
/// Show a formatted error message.
void dng_show_message_f (const char *fmt, ...);
#endif
/*****************************************************************************/
#ifndef DNG_ASSERT
#if qDNGDebug
/// Conditionally compiled macro to check an assertion and display a message if
/// it fails and assertions are compiled in via qDNGDebug
/// \param x Predicate which must be true.
/// \param y String to display if x is not true.
#define DNG_ASSERT(x,y) { if (!(x)) dng_show_message (y); }
#else
/// Conditionally compiled macro to check an assertion and display a message if
/// it fails and assertions are compiled in via qDNGDebug
/// \param x Predicate which must be true.
/// \param y String to display if x is not true.
#define DNG_ASSERT(x,y)
#endif
#endif
/*****************************************************************************/
#ifndef DNG_REQUIRE
#if qDNGDebug
/// Conditionally compiled macro to check an assertion, display a message, and throw
/// an exception if it fails and assertions are compiled in via qDNGDebug
/// \param condition Predicate which must be true.
/// \param msg String to display if condition is not true.
#define DNG_REQUIRE(condition,msg) \
do \
{ \
\
if (!(condition)) \
{ \
\
DNG_ASSERT(condition, msg); \
\
ThrowProgramError (msg); \
\
} \
\
} \
while (0)
#else
/// Conditionally compiled macro to check an assertion, display a message, and throw
/// an exception if it fails and assertions are compiled in via qDNGDebug
/// \param condition Predicate which must be true.
/// \param msg String to display if condition is not true.
#define DNG_REQUIRE(condition,msg) \
do \
{ \
\
if (!(condition)) \
{ \
\
ThrowProgramError (msg); \
\
} \
\
} \
while (0)
#endif
#endif
/*****************************************************************************/
#ifndef DNG_REPORT
/// Macro to display an informational message
/// \param x String to display.
#define DNG_REPORT(x) DNG_ASSERT (false, x)
#endif
/*****************************************************************************/
#endif
/*****************************************************************************/