ensure options are applied before the headers are set
[m6w6/ext-http] / php_http_exception.h
index c461b1919070010770fc6ecebb9c080c4ed36f91..969a3514872392c95ccd72ed8920920690333837 100644 (file)
@@ -6,19 +6,39 @@
     | modification, are permitted provided that the conditions mentioned |
     | in the accompanying LICENSE file are met.                          |
     +--------------------------------------------------------------------+
-    | Copyright (c) 2004-2010, Michael Wallner <mike@php.net>            |
+    | Copyright (c) 2004-2014, Michael Wallner <mike@php.net>            |
     +--------------------------------------------------------------------+
 */
 
-/* $Id: php_http_exception_object.h 292841 2009-12-31 08:48:57Z mike $ */
-
 #ifndef PHP_HTTP_EXCEPTION_H
 #define PHP_HTTP_EXCEPTION_H
 
-PHP_MINIT_FUNCTION(http_exception_object);
-
-extern zend_class_entry *php_http_exception_class_entry;
-extern zend_function_entry php_http_exception_method_entry[];
+/* short hand for zend_throw_exception_ex */
+#define php_http_throw(e, fmt, ...) \
+       zend_throw_exception_ex(php_http_exception_ ##e## _class_entry, 0 TSRMLS_CC, fmt, __VA_ARGS__)
+
+/* wrap a call with replaced zend_error_handling */
+#define php_http_expect(test, e, fail) \
+       do { \
+               zend_error_handling __zeh; \
+               zend_replace_error_handling(EH_THROW, php_http_exception_ ##e## _class_entry, &__zeh TSRMLS_CC); \
+               if (!(test)) { \
+                       zend_restore_error_handling(&__zeh TSRMLS_CC); \
+                       fail; \
+               } \
+               zend_restore_error_handling(&__zeh TSRMLS_CC); \
+       } while(0)
+
+PHP_HTTP_API zend_class_entry *php_http_exception_interface_class_entry;
+PHP_HTTP_API zend_class_entry *php_http_exception_runtime_class_entry;
+PHP_HTTP_API zend_class_entry *php_http_exception_unexpected_val_class_entry;
+PHP_HTTP_API zend_class_entry *php_http_exception_bad_method_call_class_entry;
+PHP_HTTP_API zend_class_entry *php_http_exception_invalid_arg_class_entry;
+PHP_HTTP_API zend_class_entry *php_http_exception_bad_header_class_entry;
+PHP_HTTP_API zend_class_entry *php_http_exception_bad_url_class_entry;
+PHP_HTTP_API zend_class_entry *php_http_exception_bad_message_class_entry;
+PHP_HTTP_API zend_class_entry *php_http_exception_bad_conversion_class_entry;
+PHP_HTTP_API zend_class_entry *php_http_exception_bad_querystring_class_entry;
 
 PHP_MINIT_FUNCTION(http_exception);