X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=php_http_std_defs.h;h=f9485e57013a935c7f7345a53894d9a26277a773;hb=b3fc227f0180cc93c521ef52bee7e4faa71c9a4c;hp=c297b6489b0dbb9c7dc454601cacf90008c9fc31;hpb=6be753a288ed7a42e0cd19551d85eb8eb14c4566;p=m6w6%2Fext-http diff --git a/php_http_std_defs.h b/php_http_std_defs.h index c297b64..f9485e5 100644 --- a/php_http_std_defs.h +++ b/php_http_std_defs.h @@ -1,16 +1,13 @@ /* - +----------------------------------------------------------------------+ - | PECL :: http | - +----------------------------------------------------------------------+ - | This source file is subject to version 3.0 of the PHP license, that | - | is bundled with this package in the file LICENSE, and is available | - | through the world-wide-web at http://www.php.net/license/3_0.txt. | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Copyright (c) 2004-2005 Michael Wallner | - +----------------------------------------------------------------------+ + +--------------------------------------------------------------------+ + | PECL :: http | + +--------------------------------------------------------------------+ + | Redistribution and use in source and binary forms, with or without | + | modification, are permitted provided that the conditions mentioned | + | in the accompanying LICENSE file are met. | + +--------------------------------------------------------------------+ + | Copyright (c) 2004-2005, Michael Wallner | + +--------------------------------------------------------------------+ */ /* $Id$ */ @@ -177,7 +174,7 @@ typedef int STATUS; } else { \ add_assoc_zval(dst, key, *data); \ } \ - zval_add_ref(data); \ + ZVAL_ADDREF(*data); \ key = NULL; \ } \ } \ @@ -195,7 +192,7 @@ typedef int STATUS; { \ zend_class_entry ce; \ INIT_CLASS_ENTRY(ce, #classname, name## _fe); \ - ce.create_object = name## _new; \ + ce.create_object = _ ##name## _new; \ name## _ce = zend_register_internal_class_ex(&ce, parent, NULL TSRMLS_CC); \ name## _ce->ce_flags |= flags; \ memcpy(& name## _handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); \ @@ -222,7 +219,7 @@ typedef int STATUS; # define getObject(t, o) getObjectEx(t, o, getThis()) # define getObjectEx(t, o, v) t * o = ((t *) zend_object_store_get_object(v TSRMLS_CC)) -# define putObject(t, o) zend_objects_store_put(o, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) t## _free, NULL TSRMLS_CC); +# define putObject(t, o) zend_objects_store_put(o, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) _ ##t## _free, NULL TSRMLS_CC); # define OBJ_PROP(o) (o)->zo.properties # define DCL_STATIC_PROP(a, t, n, v) zend_declare_property_ ##t(ce, (#n), sizeof(#n)-1, (v), (ZEND_ACC_ ##a | ZEND_ACC_STATIC) TSRMLS_CC) @@ -267,6 +264,18 @@ typedef int STATUS; } \ } +/* + * the property *MUST* be updated after SEP_PROP() + */ +# define SEP_PROP(zpp) \ + { \ + zval **op = zpp; \ + SEPARATE_ZVAL_IF_NOT_REF(zpp); \ + if (op != zpp) { \ + zval_ptr_dtor(op); \ + } \ + } + # define SET_EH_THROW() SET_EH_THROW_EX(zend_exception_get_default()) # define SET_EH_THROW_HTTP() SET_EH_THROW_EX(http_exception_get_default()) # define SET_EH_THROW_EX(ex) php_set_error_handling(EH_THROW, ex TSRMLS_CC) @@ -360,7 +369,17 @@ typedef int STATUS; static unsigned char http_arg_pass_ref_5[] = {5, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_FORCE}; # endif /* ZEND_ENGINE_2 */ #else -# define HTTP_DECLARE_ARG_PASS_INFO() +# ifdef ZEND_ENGINE_2 +# define HTTP_DECLARE_ARG_PASS_INFO() \ + static \ + ZEND_BEGIN_ARG_INFO(http_arg_pass_ref_2, 0) \ + ZEND_ARG_PASS_INFO(0) \ + ZEND_ARG_PASS_INFO(1) \ + ZEND_END_ARG_INFO(); +# else +# define HTTP_DECLARE_ARG_PASS_INFO() \ + static unsigned char http_arg_pass_ref_2[] = {2, BYREF_NONE, BYREF_FORCE}; +# endif /* ZEND_ENGINE_2 */ #endif /* HTTP_HAVE_CURL */ @@ -411,6 +430,31 @@ typedef int STATUS; #define PHP_MSHUTDOWN_CALL(func) PHP_MSHUTDOWN(func)(SHUTDOWN_FUNC_ARGS_PASSTHRU) #define PHP_RSHUTDOWN_CALL(func) PHP_RSHUTDOWN(func)(SHUTDOWN_FUNC_ARGS_PASSTHRU) +#define Z_OBJ_DELREF(z) \ + if (Z_OBJ_HT(z)->del_ref) { \ + Z_OBJ_HT(z)->del_ref(&(z) TSRMLS_CC); \ + } +#define Z_OBJ_ADDREF(z) \ + if (Z_OBJ_HT(z)->add_ref) { \ + Z_OBJ_HT(z)->add_ref(&(z) TSRMLS_CC); \ + } +#define Z_OBJ_DELREF_P(z) \ + if (Z_OBJ_HT_P(z)->del_ref) { \ + Z_OBJ_HT_P(z)->del_ref((z) TSRMLS_CC); \ + } +#define Z_OBJ_ADDREF_P(z) \ + if (Z_OBJ_HT_P(z)->add_ref) { \ + Z_OBJ_HT_P(z)->add_ref((z) TSRMLS_CC); \ + } +#define Z_OBJ_DELREF_PP(z) \ + if (Z_OBJ_HT_PP(z)->del_ref) { \ + Z_OBJ_HT_PP(z)->del_ref(*(z) TSRMLS_CC); \ + } +#define Z_OBJ_ADDREF_PP(z) \ + if (Z_OBJ_HT_PP(z)->add_ref) { \ + Z_OBJ_HT_PP(z)->add_ref(*(z) TSRMLS_CC); \ + } + #endif /* PHP_HTTP_STD_DEFS_H */ /*