00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 #ifndef _MAGICKCORE_EXCEPTION_H
00019 #define _MAGICKCORE_EXCEPTION_H
00020 
00021 #if defined(__cplusplus) || defined(c_plusplus)
00022 extern "C" {
00023 #endif
00024 
00025 #include <stdarg.h>
00026 #include "magick/semaphore.h"
00027 
00028 typedef enum
00029 {
00030   UndefinedException,
00031   WarningException = 300,
00032   ResourceLimitWarning = 300,
00033   TypeWarning = 305,
00034   OptionWarning = 310,
00035   DelegateWarning = 315,
00036   MissingDelegateWarning = 320,
00037   CorruptImageWarning = 325,
00038   FileOpenWarning = 330,
00039   BlobWarning = 335,
00040   StreamWarning = 340,
00041   CacheWarning = 345,
00042   CoderWarning = 350,
00043   ModuleWarning = 355,
00044   DrawWarning = 360,
00045   ImageWarning = 365,
00046   WandWarning = 370,
00047   XServerWarning = 380,
00048   MonitorWarning = 385,
00049   RegistryWarning = 390,
00050   ConfigureWarning = 395,
00051   ErrorException = 400,
00052   ResourceLimitError = 400,
00053   TypeError = 405,
00054   OptionError = 410,
00055   DelegateError = 415,
00056   MissingDelegateError = 420,
00057   CorruptImageError = 425,
00058   FileOpenError = 430,
00059   BlobError = 435,
00060   StreamError = 440,
00061   CacheError = 445,
00062   CoderError = 450,
00063   ModuleError = 455,
00064   DrawError = 460,
00065   ImageError = 465,
00066   WandError = 470,
00067   XServerError = 480,
00068   MonitorError = 485,
00069   RegistryError = 490,
00070   ConfigureError = 495,
00071   FatalErrorException = 700,
00072   ResourceLimitFatalError = 700,
00073   TypeFatalError = 705,
00074   OptionFatalError = 710,
00075   DelegateFatalError = 715,
00076   MissingDelegateFatalError = 720,
00077   CorruptImageFatalError = 725,
00078   FileOpenFatalError = 730,
00079   BlobFatalError = 735,
00080   StreamFatalError = 740,
00081   CacheFatalError = 745,
00082   CoderFatalError = 750,
00083   ModuleFatalError = 755,
00084   DrawFatalError = 760,
00085   ImageFatalError = 765,
00086   WandFatalError = 770,
00087   XServerFatalError = 780,
00088   MonitorFatalError = 785,
00089   RegistryFatalError = 790,
00090   ConfigureFatalError = 795
00091 } ExceptionType;
00092 
00093 struct _ExceptionInfo
00094 {
00095   ExceptionType
00096     severity;
00097 
00098   int
00099     error_number;
00100 
00101   char
00102     *reason,
00103     *description;
00104 
00105   void
00106     *exceptions;
00107 
00108   MagickBooleanType
00109     relinquish;
00110 
00111   SemaphoreInfo
00112     *semaphore;
00113 
00114   unsigned long
00115     signature;
00116 };
00117 
00118 typedef void
00119   (*ErrorHandler)(const ExceptionType,const char *,const char *);
00120 
00121 typedef void
00122   (*FatalErrorHandler)(const ExceptionType,const char *,const char *);
00123 
00124 typedef void
00125   (*WarningHandler)(const ExceptionType,const char *,const char *);
00126 
00127 extern MagickExport char
00128   *GetExceptionMessage(const int);
00129 
00130 extern MagickExport const char
00131   *GetLocaleExceptionMessage(const ExceptionType,const char *);
00132 
00133 extern MagickExport ErrorHandler
00134   SetErrorHandler(ErrorHandler);
00135 
00136 extern MagickExport ExceptionInfo
00137   *AcquireExceptionInfo(void),
00138   *DestroyExceptionInfo(ExceptionInfo *);
00139 
00140 extern MagickExport FatalErrorHandler
00141   SetFatalErrorHandler(FatalErrorHandler);
00142 
00143 extern MagickExport MagickBooleanType
00144   ThrowException(ExceptionInfo *,const ExceptionType,const char *,
00145     const char *),
00146   ThrowMagickException(ExceptionInfo *,const char *,const char *,
00147     const unsigned long,const ExceptionType,const char *,const char *,...)
00148     magick_attribute((format (printf,7,8))),
00149   ThrowMagickExceptionList(ExceptionInfo *,const char *,const char *,
00150     const unsigned long,const ExceptionType,const char *,const char *,va_list)
00151     magick_attribute((format (printf,7,0)));
00152 
00153 extern MagickExport void
00154   CatchException(ExceptionInfo *),
00155   ClearMagickException(ExceptionInfo *),
00156   GetExceptionInfo(ExceptionInfo *),
00157   InheritException(ExceptionInfo *,const ExceptionInfo *),
00158   MagickError(const ExceptionType,const char *,const char *),
00159   MagickFatalError(const ExceptionType,const char *,const char *),
00160   MagickWarning(const ExceptionType,const char *,const char *);
00161 
00162 extern MagickExport WarningHandler
00163   SetWarningHandler(WarningHandler);
00164 
00165 #if defined(__cplusplus) || defined(c_plusplus)
00166 }
00167 #endif
00168 
00169 #endif