finish port
[m6w6/ext-pq] / src / php_pq_object.h
index 47ccbbfa925ed33b2dda1af50092bf447d440f5d..2c7417a6e6d61369c26ee6ad8a46a43a868601b4 100644 (file)
 #ifndef PHP_PQ_OBJECT_H
 #define PHP_PQ_OBJECT_H
 
-typedef struct php_pq_object {
-       void *intern;
-       HashTable *prophandler;
+#define PHP_PQ_OBJ_DECL(_intern_type) \
+       _intern_type intern; \
+       HashTable *prophandler; \
+       HashTable gc; \
        zend_object zo;
+
+typedef struct php_pq_object {
+       PHP_PQ_OBJ_DECL(void *)
 } php_pq_object_t;
 
 static inline void *PHP_PQ_OBJ(zval *zv, zend_object *zo) {
@@ -31,17 +35,22 @@ typedef void (*php_pq_object_prophandler_func_t)(zval *object, void *o, zval *re
 typedef struct php_pq_object_prophandler {
        php_pq_object_prophandler_func_t read;
        php_pq_object_prophandler_func_t write;
+       php_pq_object_prophandler_func_t gc;
 } php_pq_object_prophandler_t;
 
+extern void *php_pq_object_create(zend_class_entry *ce, void *intern, size_t obj_size, zend_object_handlers *oh, HashTable *ph);
+extern void php_pq_object_dtor(zend_object *obj);
 extern void php_pq_object_to_zval(void *o, zval *zv);
 extern void php_pq_object_to_zval_no_addref(void *o, zval *zv);
 extern void php_pq_object_addref(void *o);
 extern void php_pq_object_delref(void *o);
 extern HashTable *php_pq_object_debug_info(zval *object, int *temp);
 extern HashTable *php_pq_object_properties(zval *object);
+HashTable *php_pq_object_get_gc(zval *object, zval **table, int *n);
 extern zend_class_entry *ancestor(zend_class_entry *ce);
 extern zval *php_pq_object_read_prop(zval *object, zval *member, int type, void **cache_slot, zval *tmp);
 extern void php_pq_object_write_prop(zval *object, zval *member, zval *value, void **cache_slot);
+extern void php_pq_object_prophandler_dtor(zval *zv);
 
 #endif