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_exceptions.h#1 $ */
     10 /* $DateTime: 2012/05/30 13:28:51 $ */
     11 /* $Change: 832332 $ */
     12 /* $Author: tknoll $ */
     13 
     14 /** \file
     15  * C++ exception support for DNG SDK.
     16 */
     17 
     18 /*****************************************************************************/
     19 
     20 #ifndef __dng_exceptions__
     21 #define __dng_exceptions__
     22 
     23 /*****************************************************************************/
     24 
     25 #include "dng_errors.h"
     26 #include "dng_flags.h"
     27 
     28 /*****************************************************************************/
     29 
     30 /// Display a warning message. Note that this may just eat the message.
     31 
     32 void ReportWarning (const char *message,
     33 				    const char *sub_message = NULL);
     34 
     35 /*****************************************************************************/
     36 
     37 /// Display an error message. Note that this may just eat the message.
     38 
     39 void ReportError (const char *message,
     40 				  const char *sub_message = NULL);
     41 
     42 /*****************************************************************************/
     43 
     44 /// \brief All exceptions thrown by the DNG SDK use this exception class.
     45 
     46 class dng_exception
     47 	{
     48 
     49 	private:
     50 
     51 		dng_error_code fErrorCode;
     52 
     53 	public:
     54 
     55 		/// Construct an exception representing the given error code.
     56 		/// \param code Error code this exception is for.
     57 
     58 		dng_exception (dng_error_code code)
     59 
     60 			: fErrorCode (code)
     61 
     62 			{
     63 			}
     64 
     65 		virtual ~dng_exception ()
     66 			{
     67 			}
     68 
     69 		/// Getter for error code of this exception
     70 		/// \retval The error code of this exception.
     71 
     72 		dng_error_code ErrorCode () const
     73 			{
     74 			return fErrorCode;
     75 			}
     76 
     77 	};
     78 
     79 /******************************************************************************/
     80 
     81 /// \brief Throw an exception based on an arbitrary error code.
     82 
     83 void Throw_dng_error (dng_error_code err,
     84 					  const char * message = NULL,
     85 					  const char * sub_message = NULL,
     86 					  bool silent = false);
     87 
     88 /******************************************************************************/
     89 
     90 /// \brief Convenience function to throw dng_exception with error code if
     91 /// error_code is not dng_error_none .
     92 
     93 inline void Fail_dng_error (dng_error_code err)
     94 	{
     95 
     96 	if (err != dng_error_none)
     97 		{
     98 
     99 		Throw_dng_error (err);
    100 
    101 		}
    102 
    103 	}
    104 
    105 /*****************************************************************************/
    106 
    107 /// \brief Convenience function to throw dng_exception with error code
    108 /// dng_error_unknown .
    109 
    110 inline void ThrowProgramError (const char * sub_message = NULL)
    111 	{
    112 
    113 	Throw_dng_error (dng_error_unknown, NULL, sub_message);
    114 
    115 	}
    116 
    117 /*****************************************************************************/
    118 
    119 /// \brief Convenience function to throw dng_exception with error code
    120 /// dng_error_not_yet_implemented .
    121 
    122 inline void ThrowNotYetImplemented (const char * sub_message = NULL)
    123 	{
    124 
    125 	Throw_dng_error (dng_error_not_yet_implemented, NULL, sub_message);
    126 
    127 	}
    128 
    129 /*****************************************************************************/
    130 
    131 /// \brief Convenience function to throw dng_exception with error code
    132 /// dng_error_silent .
    133 
    134 inline void ThrowSilentError ()
    135 	{
    136 
    137 	Throw_dng_error (dng_error_silent);
    138 
    139 	}
    140 
    141 /*****************************************************************************/
    142 
    143 /// \brief Convenience function to throw dng_exception with error code
    144 /// dng_error_user_canceled .
    145 
    146 inline void ThrowUserCanceled ()
    147 	{
    148 
    149 	Throw_dng_error (dng_error_user_canceled);
    150 
    151 	}
    152 
    153 /*****************************************************************************/
    154 
    155 /// \brief Convenience function to throw dng_exception with error code
    156 /// dng_error_host_insufficient .
    157 
    158 inline void ThrowHostInsufficient (const char * sub_message = NULL)
    159 	{
    160 
    161 	Throw_dng_error (dng_error_host_insufficient, NULL, sub_message);
    162 
    163 	}
    164 
    165 /*****************************************************************************/
    166 
    167 /// \brief Convenience function to throw dng_exception with error code
    168 /// dng_error_memory .
    169 
    170 inline void ThrowMemoryFull (const char * sub_message = NULL)
    171 	{
    172 
    173 	Throw_dng_error (dng_error_memory, NULL, sub_message);
    174 
    175 	}
    176 
    177 /*****************************************************************************/
    178 
    179 /// \brief Convenience function to throw dng_exception with error code
    180 /// dng_error_bad_format .
    181 
    182 inline void ThrowBadFormat (const char * sub_message = NULL)
    183 	{
    184 
    185 	Throw_dng_error (dng_error_bad_format, NULL, sub_message);
    186 
    187 	}
    188 
    189 /*****************************************************************************/
    190 
    191 /// \brief Convenience function to throw dng_exception with error code
    192 /// dng_error_matrix_math .
    193 
    194 inline void ThrowMatrixMath (const char * sub_message = NULL)
    195 	{
    196 
    197 	Throw_dng_error (dng_error_matrix_math, NULL, sub_message);
    198 
    199 	}
    200 
    201 /*****************************************************************************/
    202 
    203 /// \brief Convenience function to throw dng_exception with error code
    204 /// dng_error_open_file .
    205 
    206 inline void ThrowOpenFile (const char * sub_message = NULL, bool silent = false)
    207 	{
    208 
    209 	Throw_dng_error (dng_error_open_file, NULL, sub_message, silent);
    210 
    211 	}
    212 
    213 /*****************************************************************************/
    214 
    215 /// \brief Convenience function to throw dng_exception with error code
    216 /// dng_error_read_file .
    217 
    218 inline void ThrowReadFile (const char *sub_message = NULL)
    219 	{
    220 
    221 	Throw_dng_error (dng_error_read_file, NULL, sub_message);
    222 
    223 	}
    224 
    225 /*****************************************************************************/
    226 
    227 /// \brief Convenience function to throw dng_exception with error code
    228 /// dng_error_write_file .
    229 
    230 inline void ThrowWriteFile (const char *sub_message = NULL)
    231 	{
    232 
    233 	Throw_dng_error (dng_error_write_file, NULL, sub_message);
    234 
    235 	}
    236 
    237 /*****************************************************************************/
    238 
    239 /// \brief Convenience function to throw dng_exception with error code
    240 /// dng_error_end_of_file .
    241 
    242 inline void ThrowEndOfFile (const char *sub_message = NULL)
    243 	{
    244 
    245 	Throw_dng_error (dng_error_end_of_file, NULL, sub_message);
    246 
    247 	}
    248 
    249 /*****************************************************************************/
    250 
    251 /// \brief Convenience function to throw dng_exception with error code
    252 /// dng_error_file_is_damaged .
    253 
    254 inline void ThrowFileIsDamaged ()
    255 	{
    256 
    257 	Throw_dng_error (dng_error_file_is_damaged);
    258 
    259 	}
    260 
    261 /*****************************************************************************/
    262 
    263 /// \brief Convenience function to throw dng_exception with error code
    264 /// dng_error_image_too_big_dng .
    265 
    266 inline void ThrowImageTooBigDNG ()
    267 	{
    268 
    269 	Throw_dng_error (dng_error_image_too_big_dng);
    270 
    271 	}
    272 
    273 /*****************************************************************************/
    274 
    275 /// \brief Convenience function to throw dng_exception with error code
    276 /// dng_error_image_too_big_tiff .
    277 
    278 inline void ThrowImageTooBigTIFF ()
    279 	{
    280 
    281 	Throw_dng_error (dng_error_image_too_big_tiff);
    282 
    283 	}
    284 
    285 /*****************************************************************************/
    286 
    287 /// \brief Convenience function to throw dng_exception with error code
    288 /// dng_error_unsupported_dng .
    289 
    290 inline void ThrowUnsupportedDNG ()
    291 	{
    292 
    293 	Throw_dng_error (dng_error_unsupported_dng);
    294 
    295 	}
    296 
    297 /*****************************************************************************/
    298 
    299 #endif
    300 
    301 /*****************************************************************************/
    302