1/*****************************************************************************/
2// Copyright 2006-2007 Adobe Systems Incorporated
3// All Rights Reserved.
4//
5// NOTICE:  Adobe permits you to use, modify, and distribute this file in
6// accordance with the terms of the Adobe license agreement accompanying it.
7/*****************************************************************************/
8
9/* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_assertions.h#3 $ */
10/* $DateTime: 2012/09/05 12:31:51 $ */
11/* $Change: 847652 $ */
12/* $Author: tknoll $ */
13
14/** \file
15 * Conditionally compiled assertion check support.
16 */
17
18/*****************************************************************************/
19
20#ifndef __dng_assertions__
21#define __dng_assertions__
22
23/*****************************************************************************/
24
25#include "dng_exceptions.h"
26#include "dng_flags.h"
27
28/*****************************************************************************/
29
30#if qDNGDebug
31
32/// Platform-specific function to display an assert.
33
34void dng_show_message (const char *s);
35
36/// Show a formatted error message.
37
38void dng_show_message_f (const char *fmt, ...);
39
40#endif
41
42/*****************************************************************************/
43
44#ifndef DNG_ASSERT
45
46#if qDNGDebug
47
48/// Conditionally compiled macro to check an assertion and display a message if
49/// it fails and assertions are compiled in via qDNGDebug
50/// \param x Predicate which must be true.
51/// \param y String to display if x is not true.
52
53#define DNG_ASSERT(x,y) { if (!(x)) dng_show_message (y); }
54
55#else
56
57/// Conditionally compiled macro to check an assertion and display a message if
58/// it fails and assertions are compiled in via qDNGDebug
59/// \param x Predicate which must be true.
60/// \param y String to display if x is not true.
61
62#define DNG_ASSERT(x,y)
63
64#endif
65#endif
66
67/*****************************************************************************/
68
69#ifndef DNG_REQUIRE
70
71#if qDNGDebug
72
73/// Conditionally compiled macro to check an assertion, display a message, and throw
74/// an exception if it fails and assertions are compiled in via qDNGDebug
75/// \param condition Predicate which must be true.
76/// \param msg String to display if condition is not true.
77
78#define DNG_REQUIRE(condition,msg)				\
79	do											\
80		{										\
81												\
82		if (!(condition))						\
83			{									\
84												\
85			DNG_ASSERT(condition, msg);			\
86												\
87			ThrowProgramError (msg);			\
88												\
89			}									\
90												\
91		}										\
92	while (0)
93
94#else
95
96/// Conditionally compiled macro to check an assertion, display a message, and throw
97/// an exception if it fails and assertions are compiled in via qDNGDebug
98/// \param condition Predicate which must be true.
99/// \param msg String to display if condition is not true.
100
101#define DNG_REQUIRE(condition,msg)				\
102	do											\
103		{										\
104												\
105		if (!(condition))						\
106			{									\
107												\
108			ThrowProgramError (msg);			\
109												\
110			}									\
111												\
112		}										\
113	while (0)
114
115#endif
116#endif
117
118/*****************************************************************************/
119
120#ifndef DNG_REPORT
121
122/// Macro to display an informational message
123/// \param x String to display.
124
125#define DNG_REPORT(x) DNG_ASSERT (false, x)
126
127#endif
128
129/*****************************************************************************/
130
131#endif
132
133/*****************************************************************************/
134