X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-pq;a=blobdiff_plain;f=src%2Fphp_pq_object.h;h=a274dd4bb2556b901d2ad648f756cacf816b981f;hp=47ccbbfa925ed33b2dda1af50092bf447d440f5d;hb=7ebb278e7854e8dd7c4fd6c0363531642d135676;hpb=6e28a8741be3fccdaca960e492c31bc26837a4ed diff --git a/src/php_pq_object.h b/src/php_pq_object.h index 47ccbbf..a274dd4 100644 --- a/src/php_pq_object.h +++ b/src/php_pq_object.h @@ -13,10 +13,14 @@ #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,28 @@ 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); +#if PHP_VERSION_ID >= 70400 +typedef zval *php_pq_object_write_prop_t; +#else +typedef void php_pq_object_write_prop_t; +#endif +extern php_pq_object_write_prop_t php_pq_object_write_prop(zval *object, zval *member, zval *value, void **cache_slot); +extern zval *php_pq_object_get_prop_ptr_null(zval *object, zval *member, int type, void **cache_slot); +extern void php_pq_object_prophandler_dtor(zval *zv); #endif