X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_std_defs.h;h=bcd91acd3ad752ca86930cfe80ffb7a6450004f3;hp=1e117b9da25626d51f422adbe26cfae208da9a07;hb=0ef9c0b48c3ef484004231878a6c8c1e9c33a2b3;hpb=e00740ccbf98e53bc1aa4aad31fa76560a32bfa4 diff --git a/php_http_std_defs.h b/php_http_std_defs.h index 1e117b9..bcd91ac 100644 --- a/php_http_std_defs.h +++ b/php_http_std_defs.h @@ -36,10 +36,21 @@ typedef int STATUS; /* lenof() */ #define lenof(S) (sizeof(S) - 1) +#ifndef MIN +# define MIN(a,b) (ab?a:b) +#endif + /* STR_SET() */ -#define STR_SET(target, source) \ - if(target) efree(target); \ - target = source +#ifndef STR_SET +# define STR_SET(STR, SET) \ + { \ + STR_FREE(STR); \ + STR = SET; \ + } +#endif /* return bool (v == SUCCESS) */ #define RETVAL_SUCCESS(v) RETVAL_BOOL(SUCCESS == (v)) @@ -51,13 +62,17 @@ typedef int STATUS; RETVAL_OBJECT(o); \ return #define RETVAL_OBJVAL(ov) \ - return_value->is_ref = 1; \ - return_value->type = IS_OBJECT; \ - return_value->value.obj = (ov); \ - zend_objects_store_add_ref(return_value TSRMLS_CC) + ZVAL_OBJVAL(return_value, ov) #define RETURN_OBJVAL(ov) \ RETVAL_OBJVAL(ov); \ return +#define ZVAL_OBJVAL(zv, ov) \ + (zv)->is_ref = 1; \ + (zv)->type = IS_OBJECT; \ + (zv)->value.obj = (ov); \ + if (Z_OBJ_HT_P(zv)->add_ref) { \ + Z_OBJ_HT_P(zv)->add_ref((zv) TSRMLS_CC); \ + } /* function accepts no args */ #define NO_ARGS \ @@ -200,41 +215,23 @@ typedef int STATUS; # 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 OBJ_PROP(o) (o)->zo.properties -# define DCL_STATIC_PROP(a, t, n, v) zend_declare_property_ ##t(ce, (#n), sizeof(#n), (v), (ZEND_ACC_ ##a | ZEND_ACC_STATIC) TSRMLS_CC) -# 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) -#ifdef zend_update_class_constants -# define USE_STATIC_PROP_EX(ce) zend_update_class_constants(ce TSRMLS_CC) -#else -# define USE_STATIC_PROP_EX(ce) -#endif -# define SET_STATIC_PROP_EX(ce, n, v) zend_update_static_property(ce, #n, sizeof(#n), v TSRMLS_CC) -# define SET_STATIC_PROP_STRING_EX(ce, n, s, d) \ - { \ - char *c = (s); \ - zend_update_static_property_string(ce, #n, sizeof(#n), (c) TSRMLS_CC); \ - if (!d) { \ - efree(c); \ - } \ - } -# define SET_STATIC_PROP_STRINGL_EX(ce, n, s, l, d) \ - { \ - char *c = (s); \ - zend_update_static_property_stringl(ce, #n, sizeof(#n), (c), (l) TSRMLS_CC); \ - if (!d) { \ - efree(c); \ - }\ - } -# define DCL_PROP(a, t, n, v) zend_declare_property_ ##t(ce, (#n), sizeof(#n)-1, (v), (ZEND_ACC_ ##a) TSRMLS_CC) -# define DCL_PROP_Z(a, n, v) zend_declare_property(ce, (#n), sizeof(#n)-1, (v), (ZEND_ACC_ ##a) TSRMLS_CC) -# define DCL_PROP_N(a, n) zend_declare_property_null(ce, (#n), sizeof(#n)-1, (ZEND_ACC_ ##a) TSRMLS_CC) -# define UPD_PROP(o, t, n, v) UPD_PROP_EX(o, getThis(), t, n, v) -# define UPD_PROP_EX(o, this, t, n, v) zend_update_property_ ##t(o->zo.ce, this, (#n), sizeof(#n)-1, (v) TSRMLS_CC) -# define SET_PROP(o, n, z) SET_PROP_EX(o, getThis(), n, z) -# define SET_PROP_EX(o, this, n, z) zend_update_property(o->zo.ce, this, (#n), sizeof(#n)-1, (z) TSRMLS_CC) -# define GET_PROP(o, n) GET_PROP_EX(o, getThis(), n) -# define GET_PROP_EX(o, this, n) zend_read_property(o->zo.ce, this, (#n), sizeof(#n)-1, 0 TSRMLS_CC) + +# define DCL_STATIC_PROP(a, t, n, v) zend_declare_property_ ##t(ce, (#n), sizeof(#n), (v), (ZEND_ACC_ ##a | ZEND_ACC_STATIC) TSRMLS_CC) +# 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 UPD_STATIC_PROP_EX(ce, t, n, v) zend_update_static_property_ ##t(ce, #n, sizeof(#n), (v) TSRMLS_CC) +# define SET_STATIC_PROP_EX(ce, n, v) zend_update_static_property(ce, #n, sizeof(#n), v TSRMLS_CC) + +# define DCL_PROP(a, t, n, v) zend_declare_property_ ##t(ce, (#n), sizeof(#n)-1, (v), (ZEND_ACC_ ##a) TSRMLS_CC) +# define DCL_PROP_Z(a, n, v) zend_declare_property(ce, (#n), sizeof(#n)-1, (v), (ZEND_ACC_ ##a) TSRMLS_CC) +# define DCL_PROP_N(a, n) zend_declare_property_null(ce, (#n), sizeof(#n)-1, (ZEND_ACC_ ##a) TSRMLS_CC) +# define UPD_PROP(o, t, n, v) UPD_PROP_EX(o, getThis(), t, n, v) +# define UPD_PROP_EX(o, this, t, n, v) zend_update_property_ ##t(o->zo.ce, this, (#n), sizeof(#n)-1, (v) TSRMLS_CC) +# define SET_PROP(o, n, z) SET_PROP_EX(o, getThis(), n, z) +# define SET_PROP_EX(o, this, n, z) zend_update_property(o->zo.ce, this, (#n), sizeof(#n)-1, (z) TSRMLS_CC) +# define GET_PROP(o, n) GET_PROP_EX(o, getThis(), n) +# define GET_PROP_EX(o, this, n) zend_read_property(o->zo.ce, this, (#n), sizeof(#n)-1, 0 TSRMLS_CC) # define DCL_CONST(t, n, v) zend_declare_class_constant_ ##t(ce, (n), sizeof(n), (v) TSRMLS_CC)