| /*****************************************************************************/ |
| // 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_exceptions.h#1 $ */ |
| /* $DateTime: 2012/05/30 13:28:51 $ */ |
| /* $Change: 832332 $ */ |
| /* $Author: tknoll $ */ |
| |
| /** \file |
| * C++ exception support for DNG SDK. |
| */ |
| |
| /*****************************************************************************/ |
| |
| #ifndef __dng_exceptions__ |
| #define __dng_exceptions__ |
| |
| /*****************************************************************************/ |
| |
| #include "dng_errors.h" |
| #include "dng_flags.h" |
| |
| /*****************************************************************************/ |
| |
| /// Display a warning message. Note that this may just eat the message. |
| |
| void ReportWarning (const char *message, |
| const char *sub_message = NULL); |
| |
| /*****************************************************************************/ |
| |
| /// Display an error message. Note that this may just eat the message. |
| |
| void ReportError (const char *message, |
| const char *sub_message = NULL); |
| |
| /*****************************************************************************/ |
| |
| /// \brief All exceptions thrown by the DNG SDK use this exception class. |
| |
| class dng_exception |
| { |
| |
| private: |
| |
| dng_error_code fErrorCode; |
| |
| public: |
| |
| /// Construct an exception representing the given error code. |
| /// \param code Error code this exception is for. |
| |
| dng_exception (dng_error_code code) |
| |
| : fErrorCode (code) |
| |
| { |
| } |
| |
| virtual ~dng_exception () |
| { |
| } |
| |
| /// Getter for error code of this exception |
| /// \retval The error code of this exception. |
| |
| dng_error_code ErrorCode () const |
| { |
| return fErrorCode; |
| } |
| |
| }; |
| |
| /******************************************************************************/ |
| |
| /// \brief Throw an exception based on an arbitrary error code. |
| |
| void Throw_dng_error (dng_error_code err, |
| const char * message = NULL, |
| const char * sub_message = NULL, |
| bool silent = false); |
| |
| /******************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code if |
| /// error_code is not dng_error_none . |
| |
| inline void Fail_dng_error (dng_error_code err) |
| { |
| |
| if (err != dng_error_none) |
| { |
| |
| Throw_dng_error (err); |
| |
| } |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code |
| /// dng_error_unknown . |
| |
| inline void ThrowProgramError (const char * sub_message = NULL) |
| { |
| |
| Throw_dng_error (dng_error_unknown, NULL, sub_message); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code |
| /// dng_error_not_yet_implemented . |
| |
| inline void ThrowNotYetImplemented (const char * sub_message = NULL) |
| { |
| |
| Throw_dng_error (dng_error_not_yet_implemented, NULL, sub_message); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code |
| /// dng_error_silent . |
| |
| inline void ThrowSilentError () |
| { |
| |
| Throw_dng_error (dng_error_silent); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code |
| /// dng_error_user_canceled . |
| |
| inline void ThrowUserCanceled () |
| { |
| |
| Throw_dng_error (dng_error_user_canceled); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code |
| /// dng_error_host_insufficient . |
| |
| inline void ThrowHostInsufficient (const char * sub_message = NULL) |
| { |
| |
| Throw_dng_error (dng_error_host_insufficient, NULL, sub_message); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code |
| /// dng_error_memory . |
| |
| inline void ThrowMemoryFull (const char * sub_message = NULL) |
| { |
| |
| Throw_dng_error (dng_error_memory, NULL, sub_message); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code |
| /// dng_error_bad_format . |
| |
| inline void ThrowBadFormat (const char * sub_message = NULL) |
| { |
| |
| Throw_dng_error (dng_error_bad_format, NULL, sub_message); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code |
| /// dng_error_matrix_math . |
| |
| inline void ThrowMatrixMath (const char * sub_message = NULL) |
| { |
| |
| Throw_dng_error (dng_error_matrix_math, NULL, sub_message); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code |
| /// dng_error_open_file . |
| |
| inline void ThrowOpenFile (const char * sub_message = NULL, bool silent = false) |
| { |
| |
| Throw_dng_error (dng_error_open_file, NULL, sub_message, silent); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code |
| /// dng_error_read_file . |
| |
| inline void ThrowReadFile (const char *sub_message = NULL) |
| { |
| |
| Throw_dng_error (dng_error_read_file, NULL, sub_message); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code |
| /// dng_error_write_file . |
| |
| inline void ThrowWriteFile (const char *sub_message = NULL) |
| { |
| |
| Throw_dng_error (dng_error_write_file, NULL, sub_message); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code |
| /// dng_error_end_of_file . |
| |
| inline void ThrowEndOfFile (const char *sub_message = NULL) |
| { |
| |
| Throw_dng_error (dng_error_end_of_file, NULL, sub_message); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code |
| /// dng_error_file_is_damaged . |
| |
| inline void ThrowFileIsDamaged () |
| { |
| |
| Throw_dng_error (dng_error_file_is_damaged); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code |
| /// dng_error_image_too_big_dng . |
| |
| inline void ThrowImageTooBigDNG () |
| { |
| |
| Throw_dng_error (dng_error_image_too_big_dng); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code |
| /// dng_error_image_too_big_tiff . |
| |
| inline void ThrowImageTooBigTIFF () |
| { |
| |
| Throw_dng_error (dng_error_image_too_big_tiff); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| /// \brief Convenience function to throw dng_exception with error code |
| /// dng_error_unsupported_dng . |
| |
| inline void ThrowUnsupportedDNG () |
| { |
| |
| Throw_dng_error (dng_error_unsupported_dng); |
| |
| } |
| |
| /*****************************************************************************/ |
| |
| #endif |
| |
| /*****************************************************************************/ |