X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=php_http_std_defs.h;h=9b17bccab0fe86898341c9a64f2a10f2c0097789;hb=4b918f89dfd55ec1b4cc928b50f33e35567ed533;hp=0c061597010e9371bd4a3140c2fd579a147a9bae;hpb=89572c25844ea2a641a6bef11b2cd1e1be699282;p=m6w6%2Fext-http diff --git a/php_http_std_defs.h b/php_http_std_defs.h index 0c06159..9b17bcc 100644 --- a/php_http_std_defs.h +++ b/php_http_std_defs.h @@ -41,19 +41,6 @@ typedef int STATUS; if(target) efree(target); \ target = source -#define ZVAL_STRING_FREE(z, s, d) \ - {\ - zval *__tmp = (z); \ - zval_dtor(__tmp); \ - ZVAL_STRING(__tmp, (s), (d)); \ - } -#define ZVAL_STRINGL_FREE(z, s, l, d) \ - {\ - zval *__tmp = (z); \ - zval_dtor(__tmp); \ - ZVAL_STRINGL(__tmp, (s), (l), (d)); \ - } - /* return bool (v == SUCCESS) */ #define RETVAL_SUCCESS(v) RETVAL_BOOL(SUCCESS == (v)) #define RETURN_SUCCESS(v) RETURN_BOOL(SUCCESS == (v)) @@ -211,6 +198,39 @@ typedef int STATUS; # define DCL_STATIC_PROP_Z(a, n, v) zend_declare_property(ce, (#n), sizeof(#n), (v), (ZEND_ACC_ ##a | ZEND_ACC_STATIC) TSRMLS_CC) # define DCL_STATIC_PROP_N(a, n) zend_declare_property_null(ce, (#n), sizeof(#n), (ZEND_ACC_ ##a | ZEND_ACC_STATIC) TSRMLS_CC) # define GET_STATIC_PROP_EX(ce, n) zend_std_get_static_property(ce, (#n), sizeof(#n), 0 TSRMLS_CC) +# define USE_STATIC_PROP_EX(ce) zend_update_class_constants(ce TSRMLS_CC) +# define SET_STATIC_PROP_EX(ce, n, v) \ + { \ + int refcount; \ + zend_uchar is_ref; \ + zval **__static = GET_STATIC_PROP_EX(ce, n); \ + \ + refcount = (*__static)->refcount; \ + is_ref = (*__static)->is_ref; \ + zval_dtor(*__static); \ + **__static = *(v); \ + zval_copy_ctor(*__static); \ + (*__static)->refcount = refcount; \ + (*__static)->is_ref = is_ref; \ + } +#define SET_STATIC_PROP_STRING_EX(ce, n, s, d) \ + { \ + zval *__tmp; \ + MAKE_STD_ZVAL(__tmp); \ + ZVAL_STRING(__tmp, (s), (d)); \ + SET_STATIC_PROP_EX(ce, n, __tmp); \ + zval_dtor(__tmp); \ + efree(__tmp); \ + } +#define SET_STATIC_PROP_STRINGL_EX(ce, n, s, l, d) \ + { \ + zval *__tmp; \ + MAKE_STD_ZVAL(__tmp); \ + ZVAL_STRINGL(__tmp, (s), (l), (d)); \ + SET_STATIC_PROP_EX(ce, n, __tmp); \ + zval_dtor(__tmp); \ + efree(__tmp); \ + } # define DCL_PROP(a, t, n, v) zend_declare_property_ ##t(ce, (#n), sizeof(#n), (v), (ZEND_ACC_ ##a) TSRMLS_CC) # define DCL_PROP_Z(a, n, v) zend_declare_property(ce, (#n), sizeof(#n), (v), (ZEND_ACC_ ##a) TSRMLS_CC) # define DCL_PROP_N(a, n) zend_declare_property_null(ce, (#n), sizeof(#n), (ZEND_ACC_ ##a) TSRMLS_CC)