+static void php_pqconn_object_gc_listeners(void *o, zval *return_value)
+{
+ php_pqconn_object_t *obj = o;
+ zval *listeners;
+
+ ZEND_HASH_FOREACH_VAL(&obj->intern->listeners, listeners)
+ {
+ zval *listener;
+
+ ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(listeners), listener)
+ {
+ zval zcb;
+
+ add_next_index_zval(return_value, php_pq_callback_to_zval_no_addref(Z_PTR_P(listener), &zcb));
+ }
+ ZEND_HASH_FOREACH_END();
+ }
+ ZEND_HASH_FOREACH_END();
+}
+
+static void php_pqconn_object_read_converters(void *o, zval *return_value)
+{
+ php_pqconn_object_t *obj = o;
+
+ array_init(return_value);
+ zend_hash_copy(Z_ARRVAL_P(return_value), &obj->intern->converters, zval_add_ref);
+}
+
+static void php_pqconn_object_gc_converters(void *o, zval *return_value)
+{
+ php_pqconn_object_t *obj = o;
+ zval *converter;
+
+ ZEND_HASH_FOREACH_VAL(&obj->intern->converters, converter)
+ {
+ add_next_index_zval(return_value, converter);
+ }
+ ZEND_HASH_FOREACH_END();
+}
+
+static void php_pqconn_object_read_def_fetch_type(void *o, zval *return_value)