use the new params parser
[m6w6/ext-http] / php_http_misc.h
index 7e5953031dffffc4e09db91a2c01eb79e03ebef0..cbb2d3d155d2d9d64a5bc2d3facaf7d5eea26237 100644 (file)
@@ -6,12 +6,10 @@
     | 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-2011, Michael Wallner <mike@php.net>            |
     +--------------------------------------------------------------------+
 */
 
-/* $Id: php_http_api.h 298891 2010-05-03 08:26:38Z mike $ */
-
 #ifndef PHP_HTTP_MISC_H
 #define PHP_HTTP_MISC_H
 
@@ -79,7 +77,7 @@ PHP_HTTP_API void php_http_sleep(double s);
 #define PHP_HTTP_MATCH_CASE            0x01
 #define PHP_HTTP_MATCH_WORD            0x10
 #define PHP_HTTP_MATCH_FULL            0x20
-#define PHP_HTTP_MATCH_STRICT  (PHP_HTTP_ENV_MATCH_CASE|PHP_HTTP_ENV_MATCH_FULL)
+#define PHP_HTTP_MATCH_STRICT  (PHP_HTTP_MATCH_CASE|PHP_HTTP_MATCH_FULL)
 
 extern int php_http_match(const char *haystack, const char *needle, int flags);
 
@@ -158,7 +156,7 @@ static inline const char *php_http_locate_bin_eol(const char *bin, size_t len, i
                Z_ARRVAL_P(zv) = (ht); \
        }
 
-static inline zval *php_http_zsep(int type, zval *z)
+static inline zval *php_http_ztyp(int type, zval *z)
 {
        SEPARATE_ARG_IF_REF(z);
        if (Z_TYPE_P(z) != type) {
@@ -175,6 +173,26 @@ static inline zval *php_http_zsep(int type, zval *z)
        return z;
 }
 
+static inline zval *php_http_zsep(zend_bool add_ref, int type, zval *z) {
+       if (add_ref) {
+               Z_ADDREF_P(z);
+       }
+       if (Z_TYPE_P(z) != type) {
+               switch (type) {
+                       case IS_NULL:   convert_to_null_ex(&z);         break;
+                       case IS_BOOL:   convert_to_boolean_ex(&z);      break;
+                       case IS_LONG:   convert_to_long_ex(&z);         break;
+                       case IS_DOUBLE: convert_to_double_ex(&z);       break;
+                       case IS_STRING: convert_to_string_ex(&z);       break;
+                       case IS_ARRAY:  convert_to_array_ex(&z);        break;
+                       case IS_OBJECT: convert_to_object_ex(&z);       break;
+               }
+       } else {
+               SEPARATE_ZVAL_IF_NOT_REF(&z);
+       }
+       return z;
+}
+
 
 /* return bool (v == SUCCESS) */
 #define RETVAL_SUCCESS(v) RETVAL_BOOL(SUCCESS == (v))
@@ -332,6 +350,12 @@ static inline zval *php_http_zsep(int type, zval *z)
                                ZEND_ARG_PASS_INFO(0) \
                                ZEND_ARG_PASS_INFO(1) \
                        ZEND_END_ARG_INFO(); \
+\
+                       ZEND_BEGIN_ARG_INFO(http_arg_pass_ref_3, 0) \
+                       ZEND_ARG_PASS_INFO(0) \
+                       ZEND_ARG_PASS_INFO(0) \
+                       ZEND_ARG_PASS_INFO(1) \
+                       ZEND_END_ARG_INFO(); \
 \
                        ZEND_BEGIN_ARG_INFO(http_arg_pass_ref_4, 0) \
                                ZEND_ARG_PASS_INFO(0) \
@@ -413,6 +437,7 @@ extern void php_http_error(long type TSRMLS_DC, long code, const char *format, .
 #define HE_ERROR       E_ERROR TSRMLS_CC
 
 typedef enum php_http_error {
+       PHP_HTTP_E_UNKNOWN = 0,
        PHP_HTTP_E_RUNTIME,
        PHP_HTTP_E_INVALID_PARAM,
        PHP_HTTP_E_HEADER,