X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_message_object.c;h=e934f8bd6a1792de423e1ae4fcfb925450ef5b26;hp=2b8de8ba9b7448571fe9c31a78395c9b5308a762;hb=6bd8a9818c329bb7526f3db8b8d8ef36a95f303f;hpb=d04466a4756cc1ccf2fc17fa807ee0d372d912a7 diff --git a/http_message_object.c b/http_message_object.c index 2b8de8b..e934f8b 100644 --- a/http_message_object.c +++ b/http_message_object.c @@ -26,6 +26,8 @@ #include "php_http_std_defs.h" #include "php_http_message_object.h" +#include "phpstr/phpstr.h" + #ifdef ZEND_ENGINE_2 #define http_message_object_declare_default_properties() _http_message_object_declare_default_properties(TSRMLS_C) @@ -36,6 +38,8 @@ static zval *_http_message_object_read_prop(zval *object, zval *member, int type static void _http_message_object_write_prop(zval *object, zval *member, zval *value TSRMLS_DC); #define http_message_object_get_props _http_message_object_get_props static HashTable *_http_message_object_get_props(zval *object TSRMLS_DC); +#define http_message_object_clone_obj _http_message_object_clone_obj +static inline zend_object_value _http_message_object_clone_obj(zval *object TSRMLS_DC); zend_class_entry *http_message_object_ce; zend_function_entry http_message_object_fe[] = { @@ -73,6 +77,7 @@ void _http_message_object_init(INIT_FUNC_ARGS) HTTP_LONG_CONSTANT("HTTP_MSG_REQUEST", HTTP_MSG_REQUEST); HTTP_LONG_CONSTANT("HTTP_MSG_RESPONSE", HTTP_MSG_RESPONSE); + http_message_object_handlers.clone_obj = http_message_object_clone_obj; http_message_object_handlers.read_property = http_message_object_read_prop; http_message_object_handlers.write_property = http_message_object_write_prop; http_message_object_handlers.get_properties = http_message_object_get_props; @@ -110,6 +115,11 @@ zend_object_value _http_message_object_new_ex(zend_class_entry *ce, http_message return ov; } +zend_object_value _http_message_object_clone(zval *this_ptr TSRMLS_DC) +{ + return http_message_object_clone_obj(this_ptr TSRMLS_CC); +} + static inline void _http_message_object_declare_default_properties(TSRMLS_D) { zend_class_entry *ce = http_message_object_ce; @@ -124,7 +134,7 @@ static inline void _http_message_object_declare_default_properties(TSRMLS_D) DCL_PROP_N(PROTECTED, parentMessage); } -static void _http_message_object_free(zend_object *object TSRMLS_DC) +void _http_message_object_free(zend_object *object TSRMLS_DC) { http_message_object *o = (http_message_object *) object; @@ -139,6 +149,12 @@ static void _http_message_object_free(zend_object *object TSRMLS_DC) efree(o); } +static inline zend_object_value _http_message_object_clone_obj(zval *this_ptr TSRMLS_DC) +{ + getObject(http_message_object, obj); + return http_message_object_from_msg(http_message_dup(obj->message)); +} + static zval *_http_message_object_read_prop(zval *object, zval *member, int type TSRMLS_DC) { getObjectEx(http_message_object, obj, object);