diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/includes.h | 2 | ||||
-rw-r--r-- | src/origexception.h | 62 |
2 files changed, 63 insertions, 1 deletions
diff --git a/src/includes.h b/src/includes.h index 501a71d..95f517e 100644 --- a/src/includes.h +++ b/src/includes.h @@ -58,7 +58,6 @@ #include "../include/classinfo.h" #include "../include/extension.h" #include "../include/exception.h" -#include "../include/origexception.h" #include "../include/init.h" /** @@ -75,6 +74,7 @@ #include "doublemember.h" #include "methodmember.h" #include "arithmetic.h" +#include "origexception.h" #ifndef ZVAL_COPY_VALUE #define ZVAL_COPY_VALUE(z, v) \ diff --git a/src/origexception.h b/src/origexception.h new file mode 100644 index 0000000..ca59e7f --- /dev/null +++ b/src/origexception.h @@ -0,0 +1,62 @@ +/** + * OrigException.h + * + * Class that wraps around an exception that was thrown by PHP code, + * and that could - but not necessarily has to - be caught by C++ + * + * @author Emiel Bruijntjes <emiel.bruijntjes@copernica.com> + * @copyright 2013 Copernica BV + */ + +/** + * Set up namespace + */ +namespace Php { + +/** + * Class definition + */ +class OrigException : public Value, public Exception +{ +private: + /** + * Has the exception been restored by the C++ code so that it can be dealt by PHP? + * @var boolean + */ + bool _restored; + +public: + /** + * Constructor + * @param zval + */ + OrigException(struct _zval_struct *zval); + + /** + * Copy constructor + * @param exception + */ + OrigException(const OrigException &exception); + + /** + * Move constructor + * @param exception + */ + OrigException(OrigException &&exception); + + /** + * Destructor + */ + virtual ~OrigException() throw(); + + /** + * Restore the exception - because the exception was not handled by C++ code + * @internal + */ + void restore(); +}; + +/** + * End of namespace + */ +} |