| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #ifndef __CXX_Exception_h |
| #define __CXX_Exception_h |
|
|
| #include "CXX/WrapPython.h" |
| #include "CXX/Version.hxx" |
| #include "CXX/Config.hxx" |
| #include "CXX/IndirectPythonInterface.hxx" |
|
|
| #include <string> |
| #include <iostream> |
|
|
| |
| namespace Py |
| { |
| class ExtensionExceptionType; |
|
|
| class Object; |
|
|
| class PYCXX_EXPORT Exception |
| { |
| public: |
| Exception( ExtensionExceptionType &exception, const std::string& reason ); |
| Exception( ExtensionExceptionType &exception, Object &reason ); |
|
|
| explicit Exception () |
| {} |
| |
| |
| |
| |
| |
| |
| |
| Exception (PyObject* exception, const std::string& reason) |
| { |
| PyErr_SetString (exception, reason.c_str()); |
| } |
| |
| Exception (PyObject* exception, Object &reason); |
|
|
| void clear() |
| |
| { |
| PyErr_Clear(); |
| } |
| }; |
| |
| |
| |
| class PYCXX_EXPORT StandardError: public Exception |
| { |
| protected: |
| explicit StandardError() |
| {} |
| }; |
| |
| class PYCXX_EXPORT LookupError: public StandardError |
| { |
| protected: |
| explicit LookupError() |
| {} |
| }; |
| |
| class PYCXX_EXPORT ArithmeticError: public StandardError |
| { |
| protected: |
| explicit ArithmeticError() |
| {} |
| }; |
| |
| class PYCXX_EXPORT EnvironmentError: public StandardError |
| { |
| protected: |
| explicit EnvironmentError() |
| {} |
| }; |
| |
| |
| |
| class PYCXX_EXPORT TypeError: public StandardError |
| { |
| public: |
| TypeError (const std::string& reason) |
| : StandardError() |
| { |
| PyErr_SetString (Py::_Exc_TypeError(),reason.c_str()); |
| } |
| }; |
| |
| class PYCXX_EXPORT IndexError: public LookupError |
| { |
| public: |
| IndexError (const std::string& reason) |
| : LookupError() |
| { |
| PyErr_SetString (Py::_Exc_IndexError(), reason.c_str()); |
| } |
| }; |
| |
| class PYCXX_EXPORT AttributeError: public StandardError |
| { |
| public: |
| AttributeError (const std::string& reason) |
| : StandardError() |
| { |
| PyErr_SetString (Py::_Exc_AttributeError(), reason.c_str()); |
| } |
| }; |
| |
| class PYCXX_EXPORT NameError: public StandardError |
| { |
| public: |
| NameError (const std::string& reason) |
| : StandardError() |
| { |
| PyErr_SetString (Py::_Exc_NameError(), reason.c_str()); |
| } |
| }; |
| |
| class PYCXX_EXPORT RuntimeError: public StandardError |
| { |
| public: |
| RuntimeError (const std::string& reason) |
| : StandardError() |
| { |
| PyErr_SetString (Py::_Exc_RuntimeError(), reason.c_str()); |
| } |
| }; |
| |
| class NotImplementedError: public StandardError |
| { |
| public: |
| NotImplementedError (const std::string& reason) |
| : StandardError() |
| { |
| PyErr_SetString (Py::_Exc_NotImplementedError(), reason.c_str()); |
| } |
| }; |
| |
| class PYCXX_EXPORT SystemError: public StandardError |
| { |
| public: |
| SystemError (const std::string& reason) |
| : StandardError() |
| { |
| PyErr_SetString (Py::_Exc_SystemError(),reason.c_str()); |
| } |
| }; |
| |
| class PYCXX_EXPORT KeyError: public LookupError |
| { |
| public: |
| KeyError (const std::string& reason) |
| : LookupError() |
| { |
| PyErr_SetString (Py::_Exc_KeyError(),reason.c_str()); |
| } |
| }; |
| |
| |
| class PYCXX_EXPORT ValueError: public StandardError |
| { |
| public: |
| ValueError (const std::string& reason) |
| : StandardError() |
| { |
| PyErr_SetString (Py::_Exc_ValueError(), reason.c_str()); |
| } |
| }; |
| |
| class PYCXX_EXPORT OverflowError: public ArithmeticError |
| { |
| public: |
| OverflowError (const std::string& reason) |
| : ArithmeticError() |
| { |
| PyErr_SetString (Py::_Exc_OverflowError(), reason.c_str()); |
| } |
| }; |
| |
| class PYCXX_EXPORT ZeroDivisionError: public ArithmeticError |
| { |
| public: |
| ZeroDivisionError (const std::string& reason) |
| : ArithmeticError() |
| { |
| PyErr_SetString (Py::_Exc_ZeroDivisionError(), reason.c_str()); |
| } |
| }; |
| |
| class PYCXX_EXPORT FloatingPointError: public ArithmeticError |
| { |
| public: |
| FloatingPointError (const std::string& reason) |
| : ArithmeticError() |
| { |
| PyErr_SetString (Py::_Exc_FloatingPointError(), reason.c_str()); |
| } |
| }; |
| |
| class PYCXX_EXPORT MemoryError: public StandardError |
| { |
| public: |
| MemoryError (const std::string& reason) |
| : StandardError() |
| { |
| PyErr_SetString (Py::_Exc_MemoryError(), reason.c_str()); |
| } |
| }; |
| |
| class PYCXX_EXPORT SystemExit: public StandardError |
| { |
| public: |
| SystemExit (const std::string& reason) |
| : StandardError() |
| { |
| PyErr_SetString (Py::_Exc_SystemExit(),reason.c_str()); |
| } |
| }; |
|
|
| } |
|
|
| #endif |
|
|