cvs: pear /PECL/mono php_mono.c
| From: | Sterling Hughes | Date: | Sat, 08 Feb 2003 17:44:00 +0000 |
| Subject: | cvs: pear /PECL/mono php_mono.c | ||
| Groups: | php.pear.cvs | ||
| Request: | Send a blank email to pear-cvs+get-8764@lists.php.net to get a copy of this message | ||
sterling Sat Feb 8 12:44:00 2003 EDT
Modified files:
/pear/PECL/mono php_mono.c
Log:
add support for object cloning and destruction
Index: pear/PECL/mono/php_mono.c
diff -u pear/PECL/mono/php_mono.c:1.3 pear/PECL/mono/php_mono.c:1.4
--- pear/PECL/mono/php_mono.c:1.3 Fri Feb 7 17:49:27 2003
+++ pear/PECL/mono/php_mono.c Sat Feb 8 12:44:00 2003
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_mono.c,v 1.3 2003/02/07 22:49:27 sterling Exp $ */
+/* $Id: php_mono.c,v 1.4 2003/02/08 17:44:00 sterling Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -718,11 +718,32 @@
static void
object_clone(void *object, void **object_clone TSRMLS_DC)
{
+ php_mono_object *pm = (php_mono_object *) object;
+ php_mono_object **pm_clone = (php_mono_object **) object_clone;
+
+ *pm_clone = emalloc(sizeof(php_mono_object));
+ (*pm_clone)->zo.ce = pm->zo.ce;
+ (*pm_clone)->zo.in_get = (*pm_clone)->zo.in_set = 0;
+
+ ALLOC_HASHTABLE((*pm_clone)->zo.properties);
+ zend_hash_init((*pm_clone)->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+ zend_hash_copy((*pm_clone)->zo.properties, pm->zo.properties, (copy_ctor_func_t)
zval_add_ref,
+ (void *) NULL, sizeof(zval *));
+
+ (*pm_clone)->mimage = pm->mimage;
+ (*pm_clone)->mclass = pm->mclass;
+ (*pm_clone)->mobject = mono_object_clone(pm->mobject);
}
static void
object_dtor(void *object, zend_object_handle handle TSRMLS_DC)
{
+ php_mono_object *pm;
+
+ pm = (php_mono_object *) object;
+
+ mono_object_free(pm->mobject);
+ zend_objects_destroy_object(object, handle TSRMLS_CC);
}
static zend_object_value