| 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);
-
-#define PHP_HTTP_EX_DEF_CE php_http_exception_class_entry
-#define PHP_HTTP_EX_CE(name) php_http_ ##name## _exception_class_entry
-
-extern zend_class_entry *PHP_HTTP_EX_DEF_CE;
-extern zend_class_entry *PHP_HTTP_EX_CE(runtime);
-extern zend_class_entry *PHP_HTTP_EX_CE(header);
-extern zend_class_entry *PHP_HTTP_EX_CE(malformed_headers);
-extern zend_class_entry *PHP_HTTP_EX_CE(request_method);
-extern zend_class_entry *PHP_HTTP_EX_CE(message);
-extern zend_class_entry *PHP_HTTP_EX_CE(message_type);
-extern zend_class_entry *PHP_HTTP_EX_CE(invalid_param);
-extern zend_class_entry *PHP_HTTP_EX_CE(encoding);
-extern zend_class_entry *PHP_HTTP_EX_CE(request);
-extern zend_class_entry *PHP_HTTP_EX_CE(request_pool);
-extern zend_class_entry *PHP_HTTP_EX_CE(request_datashare);
-extern zend_class_entry *PHP_HTTP_EX_CE(request_factory);
-extern zend_class_entry *PHP_HTTP_EX_CE(socket);
-extern zend_class_entry *PHP_HTTP_EX_CE(response);
-extern zend_class_entry *PHP_HTTP_EX_CE(url);
-extern zend_class_entry *PHP_HTTP_EX_CE(querystring);
-extern zend_class_entry *PHP_HTTP_EX_CE(cookie);
-extern zend_function_entry php_http_exception_method_entry[];
-
-PHP_HTTP_API zend_class_entry *php_http_exception_get_default(void);
-PHP_HTTP_API zend_class_entry *php_http_exception_get_for_code(long code);
+/* short hand for zend_throw_exception_ex */
+#define php_http_throw(e, fmt, ...) \
+ zend_throw_exception_ex(php_http_exception_ ##e## _class_entry, 0, 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); \
+ if (!(test)) { \
+ zend_restore_error_handling(&__zeh); \
+ fail; \
+ } \
+ zend_restore_error_handling(&__zeh); \
+ } 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);