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 34 void dng_show_message (const char *s); 35 36 /// Show a formatted error message. 37 38 void 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