prepare v4.2.5
[m6w6/ext-http] / src / php_http_misc.h
index 99660ea98ada5caf0ddc74105c3e72d0b60a17a7..c45ab1595aeee65c4e0dee3a16a2be9924310d39 100644 (file)
@@ -102,11 +102,52 @@ static inline const char *php_http_locate_bin_eol(const char *bin, size_t len, i
 #      define HASH_OF(p) ((HashTable*)(Z_TYPE_P(p)==IS_ARRAY ? Z_ARRVAL_P(p) : ((Z_TYPE_P(p)==IS_OBJECT ? Z_OBJ_HT_P(p)->get_properties(Z_OBJ_P(p)) : NULL))))
 #endif
 
+#if PHP_VERSION_ID >= 80100
+# define php_http_mem_stream_open(type, zstr) php_stream_memory_open((type), (zstr))
+#else
+# define php_http_mem_stream_open(type, zstr) php_stream_memory_open((type), (zstr)->val, (zstr)->len)
+# define ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, allow_null) \
+                ZEND_BEGIN_ARG_INFO_EX(name, 0, return_reference, required_num_args)
+# define ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(name, return_reference, required_num_args, type, allow_null) \
+                ZEND_BEGIN_ARG_INFO_EX(name, 0, return_reference, required_num_args)
+#endif
 
 #define HT_IS_RECURSIVE(ht) GC_IS_RECURSIVE(ht)
 #define HT_PROTECT_RECURSION(ht) GC_PROTECT_RECURSION(ht)
 #define HT_UNPROTECT_RECURSION(ht) GC_UNPROTECT_RECURSION(ht)
 
+#ifndef convert_to_explicit_type
+# define convert_to_explicit_type(pzv, type) \
+       do { \
+               switch (type) { \
+                       case IS_NULL: \
+                               convert_to_null(pzv); \
+                               break; \
+                       case IS_LONG: \
+                               convert_to_long(pzv); \
+                               break; \
+                       case IS_DOUBLE: \
+                               convert_to_double(pzv); \
+                               break; \
+                       case _IS_BOOL: \
+                               convert_to_boolean(pzv); \
+                               break; \
+                       case IS_ARRAY: \
+                               convert_to_array(pzv); \
+                               break; \
+                       case IS_OBJECT: \
+                               convert_to_object(pzv); \
+                               break; \
+                       case IS_STRING: \
+                               convert_to_string(pzv); \
+                               break; \
+                       default: \
+                               assert(0); \
+                               break; \
+               } \
+       } while (0);
+
+#endif
 static inline void *PHP_HTTP_OBJ(zend_object *zo, zval *zv)
 {
        if (!zo) {