13ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// This may look like C code, but it is really -*- C++ -*-
23ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
33ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
477328896b876314656427663695bc7b2c9be3f74dirk// Copyright Dirk Lemstra 2014-2015
53ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
63ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Definition of Magick::Exception and derived classes
73ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Magick::Warning* and Magick::Error*.  Derived from C++ STD
83ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// 'exception' class for convenience.
93ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// These classes form part of the Magick++ user interface.
113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#if !defined(Magick_Exception_header)
143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#define Magick_Exception_header
153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include "Magick++/Include.h"
173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include <string>
183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include <exception>
193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
203ed852eea50f9d4cd633efb8c2b054b8e33c253cristynamespace Magick
213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
226f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport Exception: public std::exception
233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
256f15d82aec290f076ce634e702d0f708526ea366dirk
266f15d82aec290f076ce634e702d0f708526ea366dirk    // Construct with message string
276f15d82aec290f076ce634e702d0f708526ea366dirk    Exception(const std::string& what_);
286f15d82aec290f076ce634e702d0f708526ea366dirk
291694921b43fae47089dd97243009e5e781f2a597dirk    // Construct with message string and nested exception
301694921b43fae47089dd97243009e5e781f2a597dirk    Exception(const std::string& what_, Exception* nested_);
311694921b43fae47089dd97243009e5e781f2a597dirk
326f15d82aec290f076ce634e702d0f708526ea366dirk    // Copy constructor
336f15d82aec290f076ce634e702d0f708526ea366dirk    Exception(const Exception& original_);
346f15d82aec290f076ce634e702d0f708526ea366dirk
356f15d82aec290f076ce634e702d0f708526ea366dirk    // Destructor
366f15d82aec290f076ce634e702d0f708526ea366dirk    virtual ~Exception() throw();
376f15d82aec290f076ce634e702d0f708526ea366dirk
386f15d82aec290f076ce634e702d0f708526ea366dirk    // Assignment operator
396f15d82aec290f076ce634e702d0f708526ea366dirk    Exception& operator=(const Exception& original_);
406f15d82aec290f076ce634e702d0f708526ea366dirk
416f15d82aec290f076ce634e702d0f708526ea366dirk    // Get string identifying exception
426f15d82aec290f076ce634e702d0f708526ea366dirk    virtual const char* what() const throw();
433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
441694921b43fae47089dd97243009e5e781f2a597dirk    // Get nested exception
451694921b43fae47089dd97243009e5e781f2a597dirk    const Exception* nested() const throw();
461694921b43fae47089dd97243009e5e781f2a597dirk
471694921b43fae47089dd97243009e5e781f2a597dirk    //////////////////////////////////////////////////////////////////////
481694921b43fae47089dd97243009e5e781f2a597dirk    //
491694921b43fae47089dd97243009e5e781f2a597dirk    // No user-serviceable parts beyond this point
501694921b43fae47089dd97243009e5e781f2a597dirk    //
511694921b43fae47089dd97243009e5e781f2a597dirk    //////////////////////////////////////////////////////////////////////
521694921b43fae47089dd97243009e5e781f2a597dirk
531694921b43fae47089dd97243009e5e781f2a597dirk    void nested(Exception* nested_) throw();
541694921b43fae47089dd97243009e5e781f2a597dirk
553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  private:
563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    std::string _what;
571694921b43fae47089dd97243009e5e781f2a597dirk    Exception* _nested;
583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  //
616f15d82aec290f076ce634e702d0f708526ea366dirk  // Error exceptions
623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  //
633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
646f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport Error: public Exception
653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
676f15d82aec290f076ce634e702d0f708526ea366dirk    explicit Error(const std::string& what_);
681694921b43fae47089dd97243009e5e781f2a597dirk    explicit Error(const std::string& what_,Exception *nested_);
696f15d82aec290f076ce634e702d0f708526ea366dirk    ~Error() throw();
703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
716f15d82aec290f076ce634e702d0f708526ea366dirk
726f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorBlob: public Error
733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
756f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorBlob(const std::string& what_);
761694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorBlob(const std::string& what_,Exception *nested_);
776f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorBlob() throw();
783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
806f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorCache: public Error
813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
836f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorCache(const std::string& what_);
841694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorCache(const std::string& what_,Exception *nested_);
856f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorCache() throw();
863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
886f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorCoder: public Error
893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
916f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorCoder(const std::string& what_);
921694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorCoder(const std::string& what_,Exception *nested_);
936f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorCoder() throw();
943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
966f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorConfigure: public Error
973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
996f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorConfigure(const std::string& what_);
1001694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorConfigure(const std::string& what_,Exception *nested_);
1016f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorConfigure() throw();
1023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
1033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1046f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorCorruptImage: public Error
1053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
1063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
1076f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorCorruptImage(const std::string& what_);
1081694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorCorruptImage(const std::string& what_,Exception *nested_);
1096f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorCorruptImage() throw();
1103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
1116f15d82aec290f076ce634e702d0f708526ea366dirk
1126f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorDelegate: public Error
1133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
1143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
1156f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorDelegate(const std::string& what_);
1161694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorDelegate(const std::string& what_,Exception *nested_);
1176f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorDelegate() throw();
1183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
1196f15d82aec290f076ce634e702d0f708526ea366dirk
1206f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorDraw: public Error
1213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
1223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
1236f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorDraw(const std::string& what_);
1241694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorDraw(const std::string& what_,Exception *nested_);
1256f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorDraw() throw();
1263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
1273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1286f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorFileOpen: public Error
1293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
1303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
1316f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorFileOpen(const std::string& what_);
1321694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorFileOpen(const std::string& what_,Exception *nested_);
1336f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorFileOpen() throw();
1343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
1353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1366f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorImage: public Error
1373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
1383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
1396f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorImage(const std::string& what_);
1401694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorImage(const std::string& what_,Exception *nested_);
1416f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorImage() throw();
1423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
1433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1446f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorMissingDelegate: public Error
1453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
1463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
1476f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorMissingDelegate(const std::string& what_);
1481694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorMissingDelegate(const std::string& what_,Exception *nested_);
1496f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorMissingDelegate() throw();
1503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
1513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1526f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorModule: public Error
1533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
1543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
1556f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorModule(const std::string& what_);
1561694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorModule(const std::string& what_,Exception *nested_);
1576f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorModule() throw();
1583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
1593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1606f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorMonitor: public Error
1613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
1623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
1636f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorMonitor(const std::string& what_);
1641694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorMonitor(const std::string& what_,Exception *nested_);
1656f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorMonitor() throw();
1663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
1673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1686f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorOption: public Error
1693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
1703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
1716f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorOption(const std::string& what_);
1721694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorOption(const std::string& what_,Exception *nested_);
1736f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorOption() throw();
1743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
1753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
176caa4d7415dc03d49be07b829bdbae58bc8f76a33dirk  class MagickPPExport ErrorPolicy: public Error
177caa4d7415dc03d49be07b829bdbae58bc8f76a33dirk  {
178caa4d7415dc03d49be07b829bdbae58bc8f76a33dirk  public:
179caa4d7415dc03d49be07b829bdbae58bc8f76a33dirk    explicit ErrorPolicy(const std::string& what_);
1801694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorPolicy(const std::string& what_,Exception *nested_);
181caa4d7415dc03d49be07b829bdbae58bc8f76a33dirk    ~ErrorPolicy() throw();
182caa4d7415dc03d49be07b829bdbae58bc8f76a33dirk  };
183caa4d7415dc03d49be07b829bdbae58bc8f76a33dirk
1846f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorRegistry: public Error
1853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
1863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
1876f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorRegistry(const std::string& what_);
1881694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorRegistry(const std::string& what_,Exception *nested_);
1896f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorRegistry() throw();
1903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
1913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1926f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorResourceLimit: public Error
1933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
1943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
1956f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorResourceLimit(const std::string& what_);
1961694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorResourceLimit(const std::string& what_,Exception *nested_);
1976f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorResourceLimit() throw();
1983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
1993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2006f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorStream: public Error
2013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
2023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
2036f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorStream(const std::string& what_);
2041694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorStream(const std::string& what_,Exception *nested_);
2056f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorStream() throw();
2063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
2073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2086f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorType: public Error
2093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
2103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
2116f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorType(const std::string& what_);
2121694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorType(const std::string& what_,Exception *nested_);
2136f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorType() throw();
2143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
2153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2166f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorUndefined: public Error
2173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
2183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
2196f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorUndefined(const std::string& what_);
2201694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorUndefined(const std::string& what_,Exception *nested_);
2216f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorUndefined() throw();
2223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
2236f15d82aec290f076ce634e702d0f708526ea366dirk
2246f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport ErrorXServer: public Error
2253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
2263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
2276f15d82aec290f076ce634e702d0f708526ea366dirk    explicit ErrorXServer(const std::string& what_);
2281694921b43fae47089dd97243009e5e781f2a597dirk    explicit ErrorXServer(const std::string& what_,Exception *nested_);
2296f15d82aec290f076ce634e702d0f708526ea366dirk    ~ErrorXServer() throw();
2303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
2313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  //
2336f15d82aec290f076ce634e702d0f708526ea366dirk  // Warnings
2343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  //
2353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2366f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport Warning: public Exception
2373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
2383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
2396f15d82aec290f076ce634e702d0f708526ea366dirk    explicit Warning(const std::string& what_);
2401694921b43fae47089dd97243009e5e781f2a597dirk    explicit Warning(const std::string& what_,Exception *nested_);
2416f15d82aec290f076ce634e702d0f708526ea366dirk    ~Warning() throw();
2423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
2433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2446f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningBlob: public Warning
2453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
2463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
2476f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningBlob(const std::string& what_);
2481694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningBlob(const std::string& what_,Exception *nested_);
2496f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningBlob() throw();
2503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
2513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2526f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningCache: public Warning
2533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
2543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
2556f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningCache(const std::string& what_);
2561694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningCache(const std::string& what_,Exception *nested_);
2576f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningCache() throw();
2583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
2593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2606f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningCoder: public Warning
2613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
2623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
2636f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningCoder(const std::string& what_);
2641694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningCoder(const std::string& what_,Exception *nested_);
2656f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningCoder() throw();
2663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
2673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2686f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningConfigure: public Warning
2693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
2703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
2716f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningConfigure(const std::string& what_);
2721694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningConfigure(const std::string& what_,Exception *nested_);
2736f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningConfigure() throw();
2743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
2753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2766f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningCorruptImage: public Warning
2773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
2783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
2796f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningCorruptImage(const std::string& what_);
2801694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningCorruptImage(const std::string& what_,Exception *nested_);
2816f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningCorruptImage() throw();
2823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
2833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2846f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningDelegate: public Warning
2853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
2863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
2876f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningDelegate(const std::string& what_);
2881694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningDelegate(const std::string& what_,Exception *nested_);
2896f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningDelegate() throw();
2903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
2916f15d82aec290f076ce634e702d0f708526ea366dirk
2926f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningDraw : public Warning
2933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
2943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
2956f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningDraw(const std::string& what_);
2961694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningDraw(const std::string& what_,Exception *nested_);
2976f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningDraw() throw();
2983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
2996f15d82aec290f076ce634e702d0f708526ea366dirk
3006f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningFileOpen: public Warning
3013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
3023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
3036f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningFileOpen(const std::string& what_);
3041694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningFileOpen(const std::string& what_,Exception *nested_);
3056f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningFileOpen() throw();
3063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
3073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3086f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningImage: public Warning
3093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
3103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
3116f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningImage(const std::string& what_);
3121694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningImage(const std::string& what_,Exception *nested_);
3136f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningImage() throw();
3143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
3153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3166f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningMissingDelegate: public Warning
3173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
3183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
3196f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningMissingDelegate(const std::string& what_);
3201694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningMissingDelegate(const std::string& what_,
3211694921b43fae47089dd97243009e5e781f2a597dirk      Exception *nested_);
3226f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningMissingDelegate() throw();
3233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
3243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3256f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningModule: public Warning
3263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
3273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
3286f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningModule(const std::string& what_);
3291694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningModule(const std::string& what_,Exception *nested_);
3306f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningModule() throw();
3313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
3323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3336f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningMonitor: public Warning
3343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
3353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
3366f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningMonitor(const std::string& what_);
3371694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningMonitor(const std::string& what_,Exception *nested_);
3386f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningMonitor() throw();
3393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
3403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3416f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningOption: public Warning
3423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
3433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
3446f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningOption(const std::string& what_);
3451694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningOption(const std::string& what_,Exception *nested_);
3466f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningOption() throw();
3473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
3483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
349caa4d7415dc03d49be07b829bdbae58bc8f76a33dirk  class MagickPPExport WarningPolicy: public Warning
350caa4d7415dc03d49be07b829bdbae58bc8f76a33dirk  {
351caa4d7415dc03d49be07b829bdbae58bc8f76a33dirk  public:
352caa4d7415dc03d49be07b829bdbae58bc8f76a33dirk    explicit WarningPolicy(const std::string& what_);
3531694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningPolicy(const std::string& what_,Exception *nested_);
354caa4d7415dc03d49be07b829bdbae58bc8f76a33dirk    ~WarningPolicy() throw();
355caa4d7415dc03d49be07b829bdbae58bc8f76a33dirk  };
356caa4d7415dc03d49be07b829bdbae58bc8f76a33dirk
3576f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningRegistry: public Warning
3583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
3593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
3606f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningRegistry(const std::string& what_);
3611694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningRegistry(const std::string& what_,Exception *nested_);
3626f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningRegistry() throw();
3633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
3643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3656f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningResourceLimit: public Warning
3663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
3673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
3686f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningResourceLimit(const std::string& what_);
3691694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningResourceLimit(const std::string& what_,Exception *nested_);
3706f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningResourceLimit() throw();
3713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
3723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3736f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningStream: public Warning
3743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
3753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
3766f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningStream(const std::string& what_);
3771694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningStream(const std::string& what_,Exception *nested_);
3786f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningStream() throw();
3793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
3803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3816f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningType: public Warning
3823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
3833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
3846f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningType(const std::string& what_);
3851694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningType(const std::string& what_,Exception *nested_);
3866f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningType() throw();
3873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
3883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
3896f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningUndefined: public Warning
3903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
3913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
3926f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningUndefined(const std::string& what_);
3931694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningUndefined(const std::string& what_,Exception *nested_);
3946f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningUndefined() throw();
3953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
3966f15d82aec290f076ce634e702d0f708526ea366dirk
3976f15d82aec290f076ce634e702d0f708526ea366dirk  class MagickPPExport WarningXServer: public Warning
3983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
3993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  public:
4006f15d82aec290f076ce634e702d0f708526ea366dirk    explicit WarningXServer(const std::string& what_);
4011694921b43fae47089dd97243009e5e781f2a597dirk    explicit WarningXServer(const std::string& what_,Exception *nested_);
4026f15d82aec290f076ce634e702d0f708526ea366dirk    ~WarningXServer() throw();
4033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  };
4043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  //
4063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  // No user-serviceable components beyond this point.
4073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  //
4083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4091694921b43fae47089dd97243009e5e781f2a597dirk  std::string formatExceptionMessage(
4101694921b43fae47089dd97243009e5e781f2a597dirk    const MagickCore::ExceptionInfo *exception_);
4111694921b43fae47089dd97243009e5e781f2a597dirk
4121694921b43fae47089dd97243009e5e781f2a597dirk  Exception* createException(const MagickCore::ExceptionInfo *exception_);
4131694921b43fae47089dd97243009e5e781f2a597dirk
4143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  // Throw exception based on raw data
4156f15d82aec290f076ce634e702d0f708526ea366dirk  extern MagickPPExport void throwExceptionExplicit(
4166f15d82aec290f076ce634e702d0f708526ea366dirk    const MagickCore::ExceptionType severity_,const char* reason_,
4176f15d82aec290f076ce634e702d0f708526ea366dirk    const char* description_=(char *) NULL);
4183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  // Thow exception based on ImageMagick's ExceptionInfo
4206f15d82aec290f076ce634e702d0f708526ea366dirk  extern MagickPPExport void throwException(
421170ed0c49740abf48dfcd2938532241fb760e910dirk    MagickCore::ExceptionInfo *exception_,const bool quiet_=false);
4223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy} // namespace Magick
4243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#endif // Magick_Exception_header
426