diff options
Diffstat (limited to 'gee/hashmultiset.c')
-rw-r--r-- | gee/hashmultiset.c | 226 |
1 files changed, 168 insertions, 58 deletions
diff --git a/gee/hashmultiset.c b/gee/hashmultiset.c index 5f408d4..0ae8afd 100644 --- a/gee/hashmultiset.c +++ b/gee/hashmultiset.c @@ -27,13 +27,25 @@ #include <glib-object.h> -#define GEE_TYPE_ITERABLE (gee_iterable_get_type ()) -#define GEE_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERABLE, GeeIterable)) -#define GEE_IS_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERABLE)) -#define GEE_ITERABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERABLE, GeeIterableIface)) +#define GEE_TYPE_TRAVERSABLE (gee_traversable_get_type ()) +#define GEE_TRAVERSABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_TRAVERSABLE, GeeTraversable)) +#define GEE_IS_TRAVERSABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_TRAVERSABLE)) +#define GEE_TRAVERSABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_TRAVERSABLE, GeeTraversableIface)) -typedef struct _GeeIterable GeeIterable; -typedef struct _GeeIterableIface GeeIterableIface; +typedef struct _GeeTraversable GeeTraversable; +typedef struct _GeeTraversableIface GeeTraversableIface; + +#define GEE_TRAVERSABLE_TYPE_STREAM (gee_traversable_stream_get_type ()) + +#define GEE_TYPE_LAZY (gee_lazy_get_type ()) +#define GEE_LAZY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_LAZY, GeeLazy)) +#define GEE_LAZY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_LAZY, GeeLazyClass)) +#define GEE_IS_LAZY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_LAZY)) +#define GEE_IS_LAZY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_LAZY)) +#define GEE_LAZY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_LAZY, GeeLazyClass)) + +typedef struct _GeeLazy GeeLazy; +typedef struct _GeeLazyClass GeeLazyClass; #define GEE_TYPE_ITERATOR (gee_iterator_get_type ()) #define GEE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERATOR, GeeIterator)) @@ -43,6 +55,14 @@ typedef struct _GeeIterableIface GeeIterableIface; typedef struct _GeeIterator GeeIterator; typedef struct _GeeIteratorIface GeeIteratorIface; +#define GEE_TYPE_ITERABLE (gee_iterable_get_type ()) +#define GEE_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERABLE, GeeIterable)) +#define GEE_IS_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERABLE)) +#define GEE_ITERABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERABLE, GeeIterableIface)) + +typedef struct _GeeIterable GeeIterable; +typedef struct _GeeIterableIface GeeIterableIface; + #define GEE_TYPE_COLLECTION (gee_collection_get_type ()) #define GEE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_COLLECTION, GeeCollection)) #define GEE_IS_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_COLLECTION)) @@ -147,23 +167,55 @@ typedef struct _GeeHashMap GeeHashMap; typedef struct _GeeHashMapClass GeeHashMapClass; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +typedef gboolean (*GeeForallFunc) (gpointer g, void* user_data); +typedef enum { + GEE_TRAVERSABLE_STREAM_YIELD, + GEE_TRAVERSABLE_STREAM_CONTINUE, + GEE_TRAVERSABLE_STREAM_END +} GeeTraversableStream; + +typedef GeeTraversableStream (*GeeStreamFunc) (GeeTraversableStream state, GeeLazy* g, GeeLazy** lazy, void* user_data); struct _GeeIteratorIface { GTypeInterface parent_iface; gboolean (*next) (GeeIterator* self); gboolean (*has_next) (GeeIterator* self); - gboolean (*first) (GeeIterator* self); gpointer (*get) (GeeIterator* self); void (*remove) (GeeIterator* self); + gboolean (*get_valid) (GeeIterator* self); + gboolean (*get_read_only) (GeeIterator* self); +}; + +typedef gpointer (*GeeFoldFunc) (gpointer g, gpointer a, void* user_data); +typedef gpointer (*GeeMapFunc) (gpointer g, void* user_data); +typedef gboolean (*GeePredicate) (gconstpointer g, void* user_data); +struct _GeeTraversableIface { + GTypeInterface parent_iface; + GType (*get_g_type) (GeeTraversable* self); + GBoxedCopyFunc (*get_g_dup_func) (GeeTraversable* self); + GDestroyNotify (*get_g_destroy_func) (GeeTraversable* self); + gboolean (*foreach) (GeeTraversable* self, GeeForallFunc f, void* f_target); + GeeIterator* (*stream) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeStreamFunc f, void* f_target, GDestroyNotify f_target_destroy_notify); + gpointer (*fold) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldFunc f, void* f_target, gpointer seed); + GeeIterator* (*map) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeMapFunc f, void* f_target); + GeeIterator* (*scan) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldFunc f, void* f_target, gpointer seed); + GeeIterator* (*filter) (GeeTraversable* self, GeePredicate pred, void* pred_target, GDestroyNotify pred_target_destroy_notify); + GeeIterator* (*chop) (GeeTraversable* self, gint offset, gint length); + GType (*get_element_type) (GeeTraversable* self); }; struct _GeeIterableIface { GTypeInterface parent_iface; + GType (*get_g_type) (GeeIterable* self); + GBoxedCopyFunc (*get_g_dup_func) (GeeIterable* self); + GDestroyNotify (*get_g_destroy_func) (GeeIterable* self); GeeIterator* (*iterator) (GeeIterable* self); - GType (*get_element_type) (GeeIterable* self); }; struct _GeeCollectionIface { GTypeInterface parent_iface; + GType (*get_g_type) (GeeCollection* self); + GBoxedCopyFunc (*get_g_dup_func) (GeeCollection* self); + GDestroyNotify (*get_g_destroy_func) (GeeCollection* self); gboolean (*contains) (GeeCollection* self, gconstpointer item); gboolean (*add) (GeeCollection* self, gconstpointer item); gboolean (*remove) (GeeCollection* self, gconstpointer item); @@ -175,6 +227,7 @@ struct _GeeCollectionIface { gpointer* (*to_array) (GeeCollection* self, int* result_length1); gint (*get_size) (GeeCollection* self); gboolean (*get_is_empty) (GeeCollection* self); + gboolean (*get_read_only) (GeeCollection* self); GeeCollection* (*get_read_only_view) (GeeCollection* self); }; @@ -189,62 +242,88 @@ struct _GeeAbstractCollectionClass { gboolean (*add) (GeeAbstractCollection* self, gconstpointer item); gboolean (*remove) (GeeAbstractCollection* self, gconstpointer item); void (*clear) (GeeAbstractCollection* self); - gpointer* (*to_array) (GeeAbstractCollection* self, int* result_length1); - gboolean (*add_all) (GeeAbstractCollection* self, GeeCollection* collection); - gboolean (*contains_all) (GeeAbstractCollection* self, GeeCollection* collection); - gboolean (*remove_all) (GeeAbstractCollection* self, GeeCollection* collection); - gboolean (*retain_all) (GeeAbstractCollection* self, GeeCollection* collection); GeeIterator* (*iterator) (GeeAbstractCollection* self); + gboolean (*foreach) (GeeAbstractCollection* self, GeeForallFunc f, void* f_target); + void (*reserved0) (GeeAbstractCollection* self); + void (*reserved1) (GeeAbstractCollection* self); + void (*reserved2) (GeeAbstractCollection* self); + void (*reserved3) (GeeAbstractCollection* self); + void (*reserved4) (GeeAbstractCollection* self); + void (*reserved5) (GeeAbstractCollection* self); + void (*reserved6) (GeeAbstractCollection* self); + void (*reserved7) (GeeAbstractCollection* self); + void (*reserved8) (GeeAbstractCollection* self); + void (*reserved9) (GeeAbstractCollection* self); gint (*get_size) (GeeAbstractCollection* self); - gboolean (*get_is_empty) (GeeAbstractCollection* self); + gboolean (*get_read_only) (GeeAbstractCollection* self); GeeCollection* (*get_read_only_view) (GeeAbstractCollection* self); }; struct _GeeMultiSetIface { GTypeInterface parent_iface; + GType (*get_g_type) (GeeMultiSet* self); + GBoxedCopyFunc (*get_g_dup_func) (GeeMultiSet* self); + GDestroyNotify (*get_g_destroy_func) (GeeMultiSet* self); gint (*count) (GeeMultiSet* self, gconstpointer item); + GeeMultiSet* (*get_read_only_view) (GeeMultiSet* self); }; +typedef gpointer (*GeeFoldMapFunc) (gconstpointer k, gconstpointer v, gpointer a, void* user_data); +typedef gboolean (*GeeForallMapFunc) (gconstpointer k, gconstpointer v, void* user_data); struct _GeeMapIteratorIface { GTypeInterface parent_iface; + GType (*get_k_type) (GeeMapIterator* self); + GBoxedCopyFunc (*get_k_dup_func) (GeeMapIterator* self); + GDestroyNotify (*get_k_destroy_func) (GeeMapIterator* self); + GType (*get_v_type) (GeeMapIterator* self); + GBoxedCopyFunc (*get_v_dup_func) (GeeMapIterator* self); + GDestroyNotify (*get_v_destroy_func) (GeeMapIterator* self); gboolean (*next) (GeeMapIterator* self); gboolean (*has_next) (GeeMapIterator* self); - gboolean (*first) (GeeMapIterator* self); gpointer (*get_key) (GeeMapIterator* self); gpointer (*get_value) (GeeMapIterator* self); void (*set_value) (GeeMapIterator* self, gconstpointer value); void (*unset) (GeeMapIterator* self); + gpointer (*fold) (GeeMapIterator* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldMapFunc f, void* f_target, gpointer seed); + gboolean (*foreach) (GeeMapIterator* self, GeeForallMapFunc f, void* f_target); + gboolean (*get_valid) (GeeMapIterator* self); + gboolean (*get_mutable) (GeeMapIterator* self); + gboolean (*get_read_only) (GeeMapIterator* self); }; struct _GeeSetIface { GTypeInterface parent_iface; + GType (*get_g_type) (GeeSet* self); + GBoxedCopyFunc (*get_g_dup_func) (GeeSet* self); + GDestroyNotify (*get_g_destroy_func) (GeeSet* self); GeeSet* (*get_read_only_view) (GeeSet* self); }; struct _GeeMapIface { GTypeInterface parent_iface; + GType (*get_k_type) (GeeMap* self); + GBoxedCopyFunc (*get_k_dup_func) (GeeMap* self); + GDestroyNotify (*get_k_destroy_func) (GeeMap* self); + GType (*get_v_type) (GeeMap* self); + GBoxedCopyFunc (*get_v_dup_func) (GeeMap* self); + GDestroyNotify (*get_v_destroy_func) (GeeMap* self); gboolean (*has_key) (GeeMap* self, gconstpointer key); - gboolean (*contains) (GeeMap* self, gconstpointer key); gboolean (*has) (GeeMap* self, gconstpointer key, gconstpointer value); gpointer (*get) (GeeMap* self, gconstpointer key); void (*set) (GeeMap* self, gconstpointer key, gconstpointer value); gboolean (*unset) (GeeMap* self, gconstpointer key, gpointer* value); - gboolean (*remove) (GeeMap* self, gconstpointer key, gpointer* value); void (*clear) (GeeMap* self); GeeMapIterator* (*map_iterator) (GeeMap* self); void (*set_all) (GeeMap* self, GeeMap* map); gboolean (*unset_all) (GeeMap* self, GeeMap* map); - gboolean (*remove_all) (GeeMap* self, GeeMap* map); gboolean (*has_all) (GeeMap* self, GeeMap* map); - gboolean (*contains_all) (GeeMap* self, GeeMap* map); gint (*get_size) (GeeMap* self); gboolean (*get_is_empty) (GeeMap* self); + gboolean (*get_read_only) (GeeMap* self); GeeSet* (*get_keys) (GeeMap* self); GeeCollection* (*get_values) (GeeMap* self); GeeSet* (*get_entries) (GeeMap* self); GeeMap* (*get_read_only_view) (GeeMap* self); - GType (*get_key_type) (GeeMap* self); - GType (*get_value_type) (GeeMap* self); }; struct _GeeAbstractMultiSet { @@ -255,6 +334,16 @@ struct _GeeAbstractMultiSet { struct _GeeAbstractMultiSetClass { GeeAbstractCollectionClass parent_class; + void (*reserved0) (GeeAbstractMultiSet* self); + void (*reserved1) (GeeAbstractMultiSet* self); + void (*reserved2) (GeeAbstractMultiSet* self); + void (*reserved3) (GeeAbstractMultiSet* self); + void (*reserved4) (GeeAbstractMultiSet* self); + void (*reserved5) (GeeAbstractMultiSet* self); + void (*reserved6) (GeeAbstractMultiSet* self); + void (*reserved7) (GeeAbstractMultiSet* self); + void (*reserved8) (GeeAbstractMultiSet* self); + GeeMultiSet* (*get_read_only_view) (GeeAbstractMultiSet* self); }; struct _GeeHashMultiSet { @@ -272,10 +361,21 @@ struct _GeeHashMultiSetPrivate { GDestroyNotify g_destroy_func; }; +typedef guint (*GeeHashDataFunc) (gconstpointer v, void* user_data); +typedef gboolean (*GeeEqualDataFunc) (gconstpointer a, gconstpointer b, void* user_data); static gpointer gee_hash_multi_set_parent_class = NULL; +GType gee_traversable_stream_get_type (void) G_GNUC_CONST; +gpointer gee_lazy_ref (gpointer instance); +void gee_lazy_unref (gpointer instance); +GParamSpec* gee_param_spec_lazy (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void gee_value_set_lazy (GValue* value, gpointer v_object); +void gee_value_take_lazy (GValue* value, gpointer v_object); +gpointer gee_value_get_lazy (const GValue* value); +GType gee_lazy_get_type (void) G_GNUC_CONST; GType gee_iterator_get_type (void) G_GNUC_CONST; +GType gee_traversable_get_type (void) G_GNUC_CONST; GType gee_iterable_get_type (void) G_GNUC_CONST; GType gee_collection_get_type (void) G_GNUC_CONST; GType gee_abstract_collection_get_type (void) G_GNUC_CONST; @@ -291,21 +391,19 @@ enum { GEE_HASH_MULTI_SET_DUMMY_PROPERTY, GEE_HASH_MULTI_SET_G_TYPE, GEE_HASH_MULTI_SET_G_DUP_FUNC, - GEE_HASH_MULTI_SET_G_DESTROY_FUNC, - GEE_HASH_MULTI_SET_HASH_FUNC, - GEE_HASH_MULTI_SET_EQUAL_FUNC + GEE_HASH_MULTI_SET_G_DESTROY_FUNC }; -GeeHashMultiSet* gee_hash_multi_set_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GHashFunc hash_func, GEqualFunc equal_func); -GeeHashMultiSet* gee_hash_multi_set_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GHashFunc hash_func, GEqualFunc equal_func); -GeeHashMap* gee_hash_map_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GHashFunc key_hash_func, GEqualFunc key_equal_func, GEqualFunc value_equal_func); -GeeHashMap* gee_hash_map_construct (GType object_type, GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GHashFunc key_hash_func, GEqualFunc key_equal_func, GEqualFunc value_equal_func); +GeeHashMultiSet* gee_hash_multi_set_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeHashDataFunc hash_func, void* hash_func_target, GeeEqualDataFunc equal_func, void* equal_func_target); +GeeHashMultiSet* gee_hash_multi_set_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeHashDataFunc hash_func, void* hash_func_target, GeeEqualDataFunc equal_func, void* equal_func_target); +GeeHashMap* gee_hash_map_new (GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashDataFunc key_hash_func, void* key_hash_func_target, GDestroyNotify key_hash_func_target_destroy_notify, GeeEqualDataFunc key_equal_func, void* key_equal_func_target, GDestroyNotify key_equal_func_target_destroy_notify, GeeEqualDataFunc value_equal_func, void* value_equal_func_target, GDestroyNotify value_equal_func_target_destroy_notify); +GeeHashMap* gee_hash_map_construct (GType object_type, GType k_type, GBoxedCopyFunc k_dup_func, GDestroyNotify k_destroy_func, GType v_type, GBoxedCopyFunc v_dup_func, GDestroyNotify v_destroy_func, GeeHashDataFunc key_hash_func, void* key_hash_func_target, GDestroyNotify key_hash_func_target_destroy_notify, GeeEqualDataFunc key_equal_func, void* key_equal_func_target, GDestroyNotify key_equal_func_target_destroy_notify, GeeEqualDataFunc value_equal_func, void* value_equal_func_target, GDestroyNotify value_equal_func_target_destroy_notify); GType gee_abstract_map_get_type (void) G_GNUC_CONST; GType gee_hash_map_get_type (void) G_GNUC_CONST; GeeAbstractMultiSet* gee_abstract_multi_set_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeMap* storage_map); -GHashFunc gee_hash_multi_set_get_hash_func (GeeHashMultiSet* self); -GHashFunc gee_hash_map_get_key_hash_func (GeeHashMap* self); -GEqualFunc gee_hash_multi_set_get_equal_func (GeeHashMultiSet* self); -GEqualFunc gee_hash_map_get_key_equal_func (GeeHashMap* self); +GeeHashDataFunc gee_hash_multi_set_get_hash_func (GeeHashMultiSet* self, gpointer* result_target); +GeeHashDataFunc gee_hash_map_get_key_hash_func (GeeHashMap* self, gpointer* result_target); +GeeEqualDataFunc gee_hash_multi_set_get_equal_func (GeeHashMultiSet* self, gpointer* result_target); +GeeEqualDataFunc gee_hash_map_get_key_equal_func (GeeHashMap* self, gpointer* result_target); static void _vala_gee_hash_multi_set_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); static void _vala_gee_hash_multi_set_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); @@ -319,15 +417,19 @@ static void _vala_gee_hash_multi_set_set_property (GObject * object, guint prope * @param hash_func an optional element hash function * @param equal_func an optional element equality testing function */ -GeeHashMultiSet* gee_hash_multi_set_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GHashFunc hash_func, GEqualFunc equal_func) { +GeeHashMultiSet* gee_hash_multi_set_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeHashDataFunc hash_func, void* hash_func_target, GeeEqualDataFunc equal_func, void* equal_func_target) { GeeHashMultiSet * self = NULL; - GHashFunc _tmp0_; - GEqualFunc _tmp1_; + GeeHashDataFunc _tmp0_; + void* _tmp0__target; + GeeEqualDataFunc _tmp1_; + void* _tmp1__target; GeeHashMap* _tmp2_; GeeHashMap* _tmp3_; _tmp0_ = hash_func; + _tmp0__target = hash_func_target; _tmp1_ = equal_func; - _tmp2_ = gee_hash_map_new (g_type, (GBoxedCopyFunc) g_dup_func, g_destroy_func, G_TYPE_INT, NULL, NULL, _tmp0_, _tmp1_, NULL); + _tmp1__target = equal_func_target; + _tmp2_ = gee_hash_map_new (g_type, (GBoxedCopyFunc) g_dup_func, g_destroy_func, G_TYPE_INT, NULL, NULL, _tmp0_, _tmp0__target, NULL, _tmp1_, _tmp1__target, NULL, NULL, NULL, NULL); _tmp3_ = _tmp2_; self = (GeeHashMultiSet*) gee_abstract_multi_set_construct (object_type, g_type, (GBoxedCopyFunc) g_dup_func, g_destroy_func, (GeeMap*) _tmp3_); self->priv->g_type = g_type; @@ -338,35 +440,51 @@ GeeHashMultiSet* gee_hash_multi_set_construct (GType object_type, GType g_type, } -GeeHashMultiSet* gee_hash_multi_set_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GHashFunc hash_func, GEqualFunc equal_func) { - return gee_hash_multi_set_construct (GEE_TYPE_HASH_MULTI_SET, g_type, g_dup_func, g_destroy_func, hash_func, equal_func); +GeeHashMultiSet* gee_hash_multi_set_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeHashDataFunc hash_func, void* hash_func_target, GeeEqualDataFunc equal_func, void* equal_func_target) { + return gee_hash_multi_set_construct (GEE_TYPE_HASH_MULTI_SET, g_type, g_dup_func, g_destroy_func, hash_func, hash_func_target, equal_func, equal_func_target); } -GHashFunc gee_hash_multi_set_get_hash_func (GeeHashMultiSet* self) { - GHashFunc result; +GeeHashDataFunc gee_hash_multi_set_get_hash_func (GeeHashMultiSet* self, gpointer* result_target) { + GeeHashDataFunc result; GeeMap* _tmp0_; - GHashFunc _tmp1_; - GHashFunc _tmp2_; + GeeHashDataFunc _tmp1_; + void* _tmp1__target; + GeeHashDataFunc _tmp2_; + void* _tmp2__target; + GeeHashDataFunc _tmp3_; + void* _tmp3__target; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = ((GeeAbstractMultiSet*) self)->_storage_map; - _tmp1_ = gee_hash_map_get_key_hash_func (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_HASH_MAP, GeeHashMap)); + _tmp1_ = gee_hash_map_get_key_hash_func (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_HASH_MAP, GeeHashMap), &_tmp1__target); _tmp2_ = _tmp1_; - result = _tmp2_; + _tmp2__target = _tmp1__target; + _tmp3_ = _tmp2_; + _tmp3__target = _tmp2__target; + *result_target = _tmp3__target; + result = _tmp3_; return result; } -GEqualFunc gee_hash_multi_set_get_equal_func (GeeHashMultiSet* self) { - GEqualFunc result; +GeeEqualDataFunc gee_hash_multi_set_get_equal_func (GeeHashMultiSet* self, gpointer* result_target) { + GeeEqualDataFunc result; GeeMap* _tmp0_; - GEqualFunc _tmp1_; - GEqualFunc _tmp2_; + GeeEqualDataFunc _tmp1_; + void* _tmp1__target; + GeeEqualDataFunc _tmp2_; + void* _tmp2__target; + GeeEqualDataFunc _tmp3_; + void* _tmp3__target; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = ((GeeAbstractMultiSet*) self)->_storage_map; - _tmp1_ = gee_hash_map_get_key_equal_func (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_HASH_MAP, GeeHashMap)); + _tmp1_ = gee_hash_map_get_key_equal_func (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_HASH_MAP, GeeHashMap), &_tmp1__target); _tmp2_ = _tmp1_; - result = _tmp2_; + _tmp2__target = _tmp1__target; + _tmp3_ = _tmp2_; + _tmp3__target = _tmp2__target; + *result_target = _tmp3__target; + result = _tmp3_; return result; } @@ -379,8 +497,6 @@ static void gee_hash_multi_set_class_init (GeeHashMultiSetClass * klass) { g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MULTI_SET_G_TYPE, g_param_spec_gtype ("g-type", "type", "type", G_TYPE_NONE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MULTI_SET_G_DUP_FUNC, g_param_spec_pointer ("g-dup-func", "dup func", "dup func", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MULTI_SET_G_DESTROY_FUNC, g_param_spec_pointer ("g-destroy-func", "destroy func", "destroy func", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); - g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MULTI_SET_HASH_FUNC, g_param_spec_pointer ("hash-func", "hash-func", "hash-func", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE)); - g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_HASH_MULTI_SET_EQUAL_FUNC, g_param_spec_pointer ("equal-func", "equal-func", "equal-func", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE)); } @@ -408,12 +524,6 @@ static void _vala_gee_hash_multi_set_get_property (GObject * object, guint prope GeeHashMultiSet * self; self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_HASH_MULTI_SET, GeeHashMultiSet); switch (property_id) { - case GEE_HASH_MULTI_SET_HASH_FUNC: - g_value_set_pointer (value, gee_hash_multi_set_get_hash_func (self)); - break; - case GEE_HASH_MULTI_SET_EQUAL_FUNC: - g_value_set_pointer (value, gee_hash_multi_set_get_equal_func (self)); - break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; |