Home | History | Annotate | Download | only in source
      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