1 /* treemultimap.c generated by valac 0.46.6, the Vala compiler
2 * generated from treemultimap.vala, do not modify */
3
4 /* treemultimap.vala
5 *
6 * Copyright (C) 2009 Didier Villevalois
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 *
22 * Author:
23 * Didier 'Ptitjes Villevalois <ptitjes@free.fr>
24 */
25
26 #include <glib-object.h>
27 #include <glib.h>
28
29 #define GEE_TYPE_MULTI_MAP (gee_multi_map_get_type ())
30 #define GEE_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MULTI_MAP, GeeMultiMap))
31 #define GEE_IS_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MULTI_MAP))
32 #define GEE_MULTI_MAP_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MULTI_MAP, GeeMultiMapIface))
33
34 typedef struct _GeeMultiMap GeeMultiMap;
35 typedef struct _GeeMultiMapIface GeeMultiMapIface;
36
37 #define GEE_TYPE_SET (gee_set_get_type ())
38 #define GEE_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_SET, GeeSet))
39 #define GEE_IS_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_SET))
40 #define GEE_SET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_SET, GeeSetIface))
41
42 typedef struct _GeeSet GeeSet;
43 typedef struct _GeeSetIface GeeSetIface;
44
45 #define GEE_TYPE_COLLECTION (gee_collection_get_type ())
46 #define GEE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_COLLECTION, GeeCollection))
47 #define GEE_IS_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_COLLECTION))
48 #define GEE_COLLECTION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_COLLECTION, GeeCollectionIface))
49
50 typedef struct _GeeCollection GeeCollection;
51 typedef struct _GeeCollectionIface GeeCollectionIface;
52
53 #define GEE_TYPE_ITERABLE (gee_iterable_get_type ())
54 #define GEE_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERABLE, GeeIterable))
55 #define GEE_IS_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERABLE))
56 #define GEE_ITERABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERABLE, GeeIterableIface))
57
58 typedef struct _GeeIterable GeeIterable;
59 typedef struct _GeeIterableIface GeeIterableIface;
60
61 #define GEE_TYPE_TRAVERSABLE (gee_traversable_get_type ())
62 #define GEE_TRAVERSABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_TRAVERSABLE, GeeTraversable))
63 #define GEE_IS_TRAVERSABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_TRAVERSABLE))
64 #define GEE_TRAVERSABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_TRAVERSABLE, GeeTraversableIface))
65
66 typedef struct _GeeTraversable GeeTraversable;
67 typedef struct _GeeTraversableIface GeeTraversableIface;
68 typedef gboolean (*GeeForallFunc) (gpointer g, gpointer user_data);
69 typedef enum {
70 GEE_TRAVERSABLE_STREAM_YIELD,
71 GEE_TRAVERSABLE_STREAM_CONTINUE,
72 GEE_TRAVERSABLE_STREAM_END,
73 GEE_TRAVERSABLE_STREAM_WAIT
74 } GeeTraversableStream;
75
76 #define GEE_TRAVERSABLE_TYPE_STREAM (gee_traversable_stream_get_type ())
77
78 #define GEE_TYPE_LAZY (gee_lazy_get_type ())
79 #define GEE_LAZY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_LAZY, GeeLazy))
80 #define GEE_LAZY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_LAZY, GeeLazyClass))
81 #define GEE_IS_LAZY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_LAZY))
82 #define GEE_IS_LAZY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_LAZY))
83 #define GEE_LAZY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_LAZY, GeeLazyClass))
84
85 typedef struct _GeeLazy GeeLazy;
86 typedef struct _GeeLazyClass GeeLazyClass;
87 typedef GeeTraversableStream (*GeeStreamFunc) (GeeTraversableStream state, GeeLazy* g, GeeLazy* * lazy, gpointer user_data);
88
89 #define GEE_TYPE_ITERATOR (gee_iterator_get_type ())
90 #define GEE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERATOR, GeeIterator))
91 #define GEE_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERATOR))
92 #define GEE_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERATOR, GeeIteratorIface))
93
94 typedef struct _GeeIterator GeeIterator;
95 typedef struct _GeeIteratorIface GeeIteratorIface;
96 typedef gpointer (*GeeFoldFunc) (gpointer g, gpointer a, gpointer user_data);
97 typedef gpointer (*GeeMapFunc) (gpointer g, gpointer user_data);
98 typedef gboolean (*GeePredicate) (gconstpointer g, gpointer user_data);
99 typedef GeeIterator* (*GeeFlatMapFunc) (gpointer g, gpointer user_data);
100
101 #define GEE_TYPE_MULTI_SET (gee_multi_set_get_type ())
102 #define GEE_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MULTI_SET, GeeMultiSet))
103 #define GEE_IS_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MULTI_SET))
104 #define GEE_MULTI_SET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MULTI_SET, GeeMultiSetIface))
105
106 typedef struct _GeeMultiSet GeeMultiSet;
107 typedef struct _GeeMultiSetIface GeeMultiSetIface;
108
109 #define GEE_TYPE_MAP_ITERATOR (gee_map_iterator_get_type ())
110 #define GEE_MAP_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MAP_ITERATOR, GeeMapIterator))
111 #define GEE_IS_MAP_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MAP_ITERATOR))
112 #define GEE_MAP_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MAP_ITERATOR, GeeMapIteratorIface))
113
114 typedef struct _GeeMapIterator GeeMapIterator;
115 typedef struct _GeeMapIteratorIface GeeMapIteratorIface;
116 typedef gpointer (*GeeFoldMapFunc) (gconstpointer k, gconstpointer v, gpointer a, gpointer user_data);
117 typedef gboolean (*GeeForallMapFunc) (gconstpointer k, gconstpointer v, gpointer user_data);
118
119 #define GEE_TYPE_ABSTRACT_MULTI_MAP (gee_abstract_multi_map_get_type ())
120 #define GEE_ABSTRACT_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_MULTI_MAP, GeeAbstractMultiMap))
121 #define GEE_ABSTRACT_MULTI_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_MULTI_MAP, GeeAbstractMultiMapClass))
122 #define GEE_IS_ABSTRACT_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_MULTI_MAP))
123 #define GEE_IS_ABSTRACT_MULTI_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_MULTI_MAP))
124 #define GEE_ABSTRACT_MULTI_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_MULTI_MAP, GeeAbstractMultiMapClass))
125
126 typedef struct _GeeAbstractMultiMap GeeAbstractMultiMap;
127 typedef struct _GeeAbstractMultiMapClass GeeAbstractMultiMapClass;
128 typedef struct _GeeAbstractMultiMapPrivate GeeAbstractMultiMapPrivate;
129 typedef gboolean (*GeeEqualDataFunc) (gconstpointer a, gconstpointer b, gpointer user_data);
130
131 #define GEE_TYPE_MAP (gee_map_get_type ())
132 #define GEE_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_MAP, GeeMap))
133 #define GEE_IS_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_MAP))
134 #define GEE_MAP_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_MAP, GeeMapIface))
135
136 typedef struct _GeeMap GeeMap;
137 typedef struct _GeeMapIface GeeMapIface;
138
139 #define GEE_MAP_TYPE_ENTRY (gee_map_entry_get_type ())
140 #define GEE_MAP_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_MAP_TYPE_ENTRY, GeeMapEntry))
141 #define GEE_MAP_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_MAP_TYPE_ENTRY, GeeMapEntryClass))
142 #define GEE_MAP_IS_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_MAP_TYPE_ENTRY))
143 #define GEE_MAP_IS_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_MAP_TYPE_ENTRY))
144 #define GEE_MAP_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_MAP_TYPE_ENTRY, GeeMapEntryClass))
145
146 typedef struct _GeeMapEntry GeeMapEntry;
147 typedef struct _GeeMapEntryClass GeeMapEntryClass;
148
149 #define GEE_TYPE_TREE_MULTI_MAP (gee_tree_multi_map_get_type ())
150 #define GEE_TREE_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_TREE_MULTI_MAP, GeeTreeMultiMap))
151 #define GEE_TREE_MULTI_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_TREE_MULTI_MAP, GeeTreeMultiMapClass))
152 #define GEE_IS_TREE_MULTI_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_TREE_MULTI_MAP))
153 #define GEE_IS_TREE_MULTI_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_TREE_MULTI_MAP))
154 #define GEE_TREE_MULTI_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_TREE_MULTI_MAP, GeeTreeMultiMapClass))
155
156 typedef struct _GeeTreeMultiMap GeeTreeMultiMap;
157 typedef struct _GeeTreeMultiMapClass GeeTreeMultiMapClass;
158 typedef struct _GeeTreeMultiMapPrivate GeeTreeMultiMapPrivate;
159
160 #define GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE (gee_functions_compare_data_func_closure_get_type ())
161 #define GEE_FUNCTIONS_COMPARE_DATA_FUNC_CLOSURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE, GeeFunctionsCompareDataFuncClosure))
162 #define GEE_FUNCTIONS_COMPARE_DATA_FUNC_CLOSURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE, GeeFunctionsCompareDataFuncClosureClass))
163 #define GEE_FUNCTIONS_IS_COMPARE_DATA_FUNC_CLOSURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE))
164 #define GEE_FUNCTIONS_IS_COMPARE_DATA_FUNC_CLOSURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE))
165 #define GEE_FUNCTIONS_COMPARE_DATA_FUNC_CLOSURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_FUNCTIONS_TYPE_COMPARE_DATA_FUNC_CLOSURE, GeeFunctionsCompareDataFuncClosureClass))
166
167 typedef struct _GeeFunctionsCompareDataFuncClosure GeeFunctionsCompareDataFuncClosure;
168 typedef struct _GeeFunctionsCompareDataFuncClosureClass GeeFunctionsCompareDataFuncClosureClass;
169 enum {
170 GEE_TREE_MULTI_MAP_0_PROPERTY,
171 GEE_TREE_MULTI_MAP_K_TYPE,
172 GEE_TREE_MULTI_MAP_K_DUP_FUNC,
173 GEE_TREE_MULTI_MAP_K_DESTROY_FUNC,
174 GEE_TREE_MULTI_MAP_V_TYPE,
175 GEE_TREE_MULTI_MAP_V_DUP_FUNC,
176 GEE_TREE_MULTI_MAP_V_DESTROY_FUNC,
177 GEE_TREE_MULTI_MAP_NUM_PROPERTIES
178 };
179 static GParamSpec* gee_tree_multi_map_properties[GEE_TREE_MULTI_MAP_NUM_PROPERTIES];
180 #define _gee_functions_compare_data_func_closure_unref0(var) ((var == NULL) ? NULL : (var = (gee_functions_compare_data_func_closure_unref (var), NULL)))
181
182 #define GEE_TYPE_ABSTRACT_MAP (gee_abstract_map_get_type ())
183 #define GEE_ABSTRACT_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap))
184 #define GEE_ABSTRACT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_MAP, GeeAbstractMapClass))
185 #define GEE_IS_ABSTRACT_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_MAP))
186 #define GEE_IS_ABSTRACT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_MAP))
187 #define GEE_ABSTRACT_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_MAP, GeeAbstractMapClass))
188
189 typedef struct _GeeAbstractMap GeeAbstractMap;
190 typedef struct _GeeAbstractMapClass GeeAbstractMapClass;
191
192 #define GEE_TYPE_ABSTRACT_SORTED_MAP (gee_abstract_sorted_map_get_type ())
193 #define GEE_ABSTRACT_SORTED_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_SORTED_MAP, GeeAbstractSortedMap))
194 #define GEE_ABSTRACT_SORTED_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_SORTED_MAP, GeeAbstractSortedMapClass))
195 #define GEE_IS_ABSTRACT_SORTED_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_SORTED_MAP))
196 #define GEE_IS_ABSTRACT_SORTED_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_SORTED_MAP))
197 #define GEE_ABSTRACT_SORTED_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_SORTED_MAP, GeeAbstractSortedMapClass))
198
199 typedef struct _GeeAbstractSortedMap GeeAbstractSortedMap;
200 typedef struct _GeeAbstractSortedMapClass GeeAbstractSortedMapClass;
201
202 #define GEE_TYPE_ABSTRACT_BIDIR_SORTED_MAP (gee_abstract_bidir_sorted_map_get_type ())
203 #define GEE_ABSTRACT_BIDIR_SORTED_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_BIDIR_SORTED_MAP, GeeAbstractBidirSortedMap))
204 #define GEE_ABSTRACT_BIDIR_SORTED_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_BIDIR_SORTED_MAP, GeeAbstractBidirSortedMapClass))
205 #define GEE_IS_ABSTRACT_BIDIR_SORTED_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_BIDIR_SORTED_MAP))
206 #define GEE_IS_ABSTRACT_BIDIR_SORTED_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_BIDIR_SORTED_MAP))
207 #define GEE_ABSTRACT_BIDIR_SORTED_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_BIDIR_SORTED_MAP, GeeAbstractBidirSortedMapClass))
208
209 typedef struct _GeeAbstractBidirSortedMap GeeAbstractBidirSortedMap;
210 typedef struct _GeeAbstractBidirSortedMapClass GeeAbstractBidirSortedMapClass;
211
212 #define GEE_TYPE_TREE_MAP (gee_tree_map_get_type ())
213 #define GEE_TREE_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_TREE_MAP, GeeTreeMap))
214 #define GEE_TREE_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_TREE_MAP, GeeTreeMapClass))
215 #define GEE_IS_TREE_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_TREE_MAP))
216 #define GEE_IS_TREE_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_TREE_MAP))
217 #define GEE_TREE_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_TREE_MAP, GeeTreeMapClass))
218
219 typedef struct _GeeTreeMap GeeTreeMap;
220 typedef struct _GeeTreeMapClass GeeTreeMapClass;
221 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
222
223 #define GEE_TYPE_ABSTRACT_COLLECTION (gee_abstract_collection_get_type ())
224 #define GEE_ABSTRACT_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection))
225 #define GEE_ABSTRACT_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollectionClass))
226 #define GEE_IS_ABSTRACT_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_COLLECTION))
227 #define GEE_IS_ABSTRACT_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_COLLECTION))
228 #define GEE_ABSTRACT_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollectionClass))
229
230 typedef struct _GeeAbstractCollection GeeAbstractCollection;
231 typedef struct _GeeAbstractCollectionClass GeeAbstractCollectionClass;
232
233 #define GEE_TYPE_ABSTRACT_SET (gee_abstract_set_get_type ())
234 #define GEE_ABSTRACT_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_SET, GeeAbstractSet))
235 #define GEE_ABSTRACT_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_SET, GeeAbstractSetClass))
236 #define GEE_IS_ABSTRACT_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_SET))
237 #define GEE_IS_ABSTRACT_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_SET))
238 #define GEE_ABSTRACT_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_SET, GeeAbstractSetClass))
239
240 typedef struct _GeeAbstractSet GeeAbstractSet;
241 typedef struct _GeeAbstractSetClass GeeAbstractSetClass;
242
243 #define GEE_TYPE_ABSTRACT_SORTED_SET (gee_abstract_sorted_set_get_type ())
244 #define GEE_ABSTRACT_SORTED_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_SORTED_SET, GeeAbstractSortedSet))
245 #define GEE_ABSTRACT_SORTED_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_SORTED_SET, GeeAbstractSortedSetClass))
246 #define GEE_IS_ABSTRACT_SORTED_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_SORTED_SET))
247 #define GEE_IS_ABSTRACT_SORTED_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_SORTED_SET))
248 #define GEE_ABSTRACT_SORTED_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_SORTED_SET, GeeAbstractSortedSetClass))
249
250 typedef struct _GeeAbstractSortedSet GeeAbstractSortedSet;
251 typedef struct _GeeAbstractSortedSetClass GeeAbstractSortedSetClass;
252
253 #define GEE_TYPE_ABSTRACT_BIDIR_SORTED_SET (gee_abstract_bidir_sorted_set_get_type ())
254 #define GEE_ABSTRACT_BIDIR_SORTED_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_BIDIR_SORTED_SET, GeeAbstractBidirSortedSet))
255 #define GEE_ABSTRACT_BIDIR_SORTED_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_BIDIR_SORTED_SET, GeeAbstractBidirSortedSetClass))
256 #define GEE_IS_ABSTRACT_BIDIR_SORTED_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_BIDIR_SORTED_SET))
257 #define GEE_IS_ABSTRACT_BIDIR_SORTED_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_BIDIR_SORTED_SET))
258 #define GEE_ABSTRACT_BIDIR_SORTED_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_BIDIR_SORTED_SET, GeeAbstractBidirSortedSetClass))
259
260 typedef struct _GeeAbstractBidirSortedSet GeeAbstractBidirSortedSet;
261 typedef struct _GeeAbstractBidirSortedSetClass GeeAbstractBidirSortedSetClass;
262
263 #define GEE_TYPE_TREE_SET (gee_tree_set_get_type ())
264 #define GEE_TREE_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_TREE_SET, GeeTreeSet))
265 #define GEE_TREE_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_TREE_SET, GeeTreeSetClass))
266 #define GEE_IS_TREE_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_TREE_SET))
267 #define GEE_IS_TREE_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_TREE_SET))
268 #define GEE_TREE_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_TREE_SET, GeeTreeSetClass))
269
270 typedef struct _GeeTreeSet GeeTreeSet;
271 typedef struct _GeeTreeSetClass GeeTreeSetClass;
272
273 #define GEE_TYPE_ABSTRACT_MULTI_SET (gee_abstract_multi_set_get_type ())
274 #define GEE_ABSTRACT_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSet))
275 #define GEE_ABSTRACT_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSetClass))
276 #define GEE_IS_ABSTRACT_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ABSTRACT_MULTI_SET))
277 #define GEE_IS_ABSTRACT_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_ABSTRACT_MULTI_SET))
278 #define GEE_ABSTRACT_MULTI_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_ABSTRACT_MULTI_SET, GeeAbstractMultiSetClass))
279
280 typedef struct _GeeAbstractMultiSet GeeAbstractMultiSet;
281 typedef struct _GeeAbstractMultiSetClass GeeAbstractMultiSetClass;
282
283 #define GEE_TYPE_TREE_MULTI_SET (gee_tree_multi_set_get_type ())
284 #define GEE_TREE_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_TREE_MULTI_SET, GeeTreeMultiSet))
285 #define GEE_TREE_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_TREE_MULTI_SET, GeeTreeMultiSetClass))
286 #define GEE_IS_TREE_MULTI_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_TREE_MULTI_SET))
287 #define GEE_IS_TREE_MULTI_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_TREE_MULTI_SET))
288 #define GEE_TREE_MULTI_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_TREE_MULTI_SET, GeeTreeMultiSetClass))
289
290 typedef struct _GeeTreeMultiSet GeeTreeMultiSet;
291 typedef struct _GeeTreeMultiSetClass GeeTreeMultiSetClass;
292 typedef struct _GeeFunctionsCompareDataFuncClosurePrivate GeeFunctionsCompareDataFuncClosurePrivate;
293
294 struct _GeeIteratorIface {
295 GTypeInterface parent_iface;
296 gboolean (*next) (GeeIterator* self);
297 gboolean (*has_next) (GeeIterator* self);
298 gpointer (*get) (GeeIterator* self);
299 void (*remove) (GeeIterator* self);
300 gboolean (*get_valid) (GeeIterator* self);
301 gboolean (*get_read_only) (GeeIterator* self);
302 };
303
304 struct _GeeTraversableIface {
305 GTypeInterface parent_iface;
306 GType (*get_g_type) (GeeTraversable* self);
307 GBoxedCopyFunc (*get_g_dup_func) (GeeTraversable* self);
308 GDestroyNotify (*get_g_destroy_func) (GeeTraversable* self);
309 gboolean (*foreach) (GeeTraversable* self, GeeForallFunc f, gpointer f_target);
310 GeeIterator* (*stream) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeStreamFunc f, gpointer f_target, GDestroyNotify f_target_destroy_notify);
311 gpointer (*fold) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldFunc f, gpointer f_target, gpointer seed);
312 GeeIterator* (*map) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeMapFunc f, gpointer f_target);
313 GeeIterator* (*scan) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldFunc f, gpointer f_target, gpointer seed);
314 GeeIterator* (*filter) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
315 GeeIterator* (*chop) (GeeTraversable* self, gint offset, gint length);
316 GType (*get_element_type) (GeeTraversable* self);
317 GeeIterator* (*flat_map) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFlatMapFunc f, gpointer f_target, GDestroyNotify f_target_destroy_notify);
318 GeeIterator** (*tee) (GeeTraversable* self, guint forks, gint* result_length1);
319 gpointer (*first_match) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
320 gboolean (*any_match) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
321 gboolean (*all_match) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
322 gpointer (*max) (GeeTraversable* self, GCompareDataFunc compare, gpointer compare_target, GDestroyNotify compare_target_destroy_notify);
323 gpointer (*min) (GeeTraversable* self, GCompareDataFunc compare, gpointer compare_target, GDestroyNotify compare_target_destroy_notify);
324 GeeIterator* (*order_by) (GeeTraversable* self, GCompareDataFunc compare, gpointer compare_target, GDestroyNotify compare_target_destroy_notify);
325 };
326
327 struct _GeeIterableIface {
328 GTypeInterface parent_iface;
329 GType (*get_g_type) (GeeIterable* self);
330 GBoxedCopyFunc (*get_g_dup_func) (GeeIterable* self);
331 GDestroyNotify (*get_g_destroy_func) (GeeIterable* self);
332 GeeIterator* (*iterator) (GeeIterable* self);
333 };
334
335 struct _GeeCollectionIface {
336 GTypeInterface parent_iface;
337 GType (*get_g_type) (GeeCollection* self);
338 GBoxedCopyFunc (*get_g_dup_func) (GeeCollection* self);
339 GDestroyNotify (*get_g_destroy_func) (GeeCollection* self);
340 gboolean (*contains) (GeeCollection* self, gconstpointer item);
341 gboolean (*add) (GeeCollection* self, gconstpointer item);
342 gboolean (*remove) (GeeCollection* self, gconstpointer item);
343 void (*clear) (GeeCollection* self);
344 gboolean (*add_all) (GeeCollection* self, GeeCollection* collection);
345 gboolean (*contains_all) (GeeCollection* self, GeeCollection* collection);
346 gboolean (*remove_all) (GeeCollection* self, GeeCollection* collection);
347 gboolean (*retain_all) (GeeCollection* self, GeeCollection* collection);
348 gpointer* (*to_array) (GeeCollection* self, gint* result_length1);
349 gint (*get_size) (GeeCollection* self);
350 gboolean (*get_is_empty) (GeeCollection* self);
351 gboolean (*get_read_only) (GeeCollection* self);
352 GeeCollection* (*get_read_only_view) (GeeCollection* self);
353 gboolean (*add_all_array) (GeeCollection* self, gpointer* array, gint array_length1);
354 gboolean (*contains_all_array) (GeeCollection* self, gpointer* array, gint array_length1);
355 gboolean (*remove_all_array) (GeeCollection* self, gpointer* array, gint array_length1);
356 gboolean (*add_all_iterator) (GeeCollection* self, GeeIterator* iter);
357 gboolean (*contains_all_iterator) (GeeCollection* self, GeeIterator* iter);
358 gboolean (*remove_all_iterator) (GeeCollection* self, GeeIterator* iter);
359 };
360
361 struct _GeeSetIface {
362 GTypeInterface parent_iface;
363 GType (*get_g_type) (GeeSet* self);
364 GBoxedCopyFunc (*get_g_dup_func) (GeeSet* self);
365 GDestroyNotify (*get_g_destroy_func) (GeeSet* self);
366 GeeSet* (*get_read_only_view) (GeeSet* self);
367 };
368
369 struct _GeeMultiSetIface {
370 GTypeInterface parent_iface;
371 GType (*get_g_type) (GeeMultiSet* self);
372 GBoxedCopyFunc (*get_g_dup_func) (GeeMultiSet* self);
373 GDestroyNotify (*get_g_destroy_func) (GeeMultiSet* self);
374 gint (*count) (GeeMultiSet* self, gconstpointer item);
375 GeeMultiSet* (*get_read_only_view) (GeeMultiSet* self);
376 };
377
378 struct _GeeMapIteratorIface {
379 GTypeInterface parent_iface;
380 GType (*get_k_type) (GeeMapIterator* self);
381 GBoxedCopyFunc (*get_k_dup_func) (GeeMapIterator* self);
382 GDestroyNotify (*get_k_destroy_func) (GeeMapIterator* self);
383 GType (*get_v_type) (GeeMapIterator* self);
384 GBoxedCopyFunc (*get_v_dup_func) (GeeMapIterator* self);
385 GDestroyNotify (*get_v_destroy_func) (GeeMapIterator* self);
386 gboolean (*next) (GeeMapIterator* self);
387 gboolean (*has_next) (GeeMapIterator* self);
388 gpointer (*get_key) (GeeMapIterator* self);
389 gpointer (*get_value) (GeeMapIterator* self);
390 void (*set_value) (GeeMapIterator* self, gconstpointer value);
391 void (*unset) (GeeMapIterator* self);
392 gpointer (*fold) (GeeMapIterator* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldMapFunc f, gpointer f_target, gpointer seed);
393 gboolean (*foreach) (GeeMapIterator* self, GeeForallMapFunc f, gpointer f_target);
394 gboolean (*get_valid) (GeeMapIterator* self);
395 gboolean (*get_mutable) (GeeMapIterator* self);
396 gboolean (*get_read_only) (GeeMapIterator* self);
397 };
398
399 struct _GeeMultiMapIface {
400 GTypeInterface parent_iface;
401 GType (*get_k_type) (GeeMultiMap* self);
402 GBoxedCopyFunc (*get_k_dup_func) (GeeMultiMap* self);
403 GDestroyNotify (*get_k_destroy_func) (GeeMultiMap* self);
404 GType (*get_v_type) (GeeMultiMap* self);
405 GBoxedCopyFunc (*get_v_dup_func) (GeeMultiMap* self);
406 GDestroyNotify (*get_v_destroy_func) (GeeMultiMap* self);
407 GeeSet* (*get_keys) (GeeMultiMap* self);
408 GeeMultiSet* (*get_all_keys) (GeeMultiMap* self);
409 GeeCollection* (*get_values) (GeeMultiMap* self);
410 gboolean (*contains) (GeeMultiMap* self, gconstpointer key);
411 GeeCollection* (*get) (GeeMultiMap* self, gconstpointer key);
412 void (*set) (GeeMultiMap* self, gconstpointer key, gconstpointer value);
413 gboolean (*remove) (GeeMultiMap* self, gconstpointer key, gconstpointer value);
414 gboolean (*remove_all) (GeeMultiMap* self, gconstpointer key);
415 void (*clear) (GeeMultiMap* self);
416 GeeMapIterator* (*map_iterator) (GeeMultiMap* self);
417 gint (*get_size) (GeeMultiMap* self);
418 gboolean (*get_read_only) (GeeMultiMap* self);
419 GeeMultiMap* (*get_read_only_view) (GeeMultiMap* self);
420 };
421
422 struct _GeeMapIface {
423 GTypeInterface parent_iface;
424 GType (*get_k_type) (GeeMap* self);
425 GBoxedCopyFunc (*get_k_dup_func) (GeeMap* self);
426 GDestroyNotify (*get_k_destroy_func) (GeeMap* self);
427 GType (*get_v_type) (GeeMap* self);
428 GBoxedCopyFunc (*get_v_dup_func) (GeeMap* self);
429 GDestroyNotify (*get_v_destroy_func) (GeeMap* self);
430 gboolean (*has_key) (GeeMap* self, gconstpointer key);
431 gboolean (*has) (GeeMap* self, gconstpointer key, gconstpointer value);
432 gpointer (*get) (GeeMap* self, gconstpointer key);
433 void (*set) (GeeMap* self, gconstpointer key, gconstpointer value);
434 gboolean (*unset) (GeeMap* self, gconstpointer key, gpointer* value);
435 void (*clear) (GeeMap* self);
436 GeeMapIterator* (*map_iterator) (GeeMap* self);
437 void (*set_all) (GeeMap* self, GeeMap* map);
438 gboolean (*unset_all) (GeeMap* self, GeeMap* map);
439 gboolean (*has_all) (GeeMap* self, GeeMap* map);
440 gint (*get_size) (GeeMap* self);
441 gboolean (*get_is_empty) (GeeMap* self);
442 gboolean (*get_read_only) (GeeMap* self);
443 GeeSet* (*get_keys) (GeeMap* self);
444 GeeCollection* (*get_values) (GeeMap* self);
445 GeeSet* (*get_entries) (GeeMap* self);
446 GeeMap* (*get_read_only_view) (GeeMap* self);
447 };
448
449 struct _GeeAbstractMultiMap {
450 GObject parent_instance;
451 GeeAbstractMultiMapPrivate * priv;
452 GeeMap* _storage_map;
453 };
454
455 struct _GeeAbstractMultiMapClass {
456 GObjectClass parent_class;
457 GeeCollection* (*create_value_storage) (GeeAbstractMultiMap* self);
458 GeeMultiSet* (*create_multi_key_set) (GeeAbstractMultiMap* self);
459 GeeEqualDataFunc (*get_value_equal_func) (GeeAbstractMultiMap* self, gpointer* result_target, GDestroyNotify* result_target_destroy_notify);
460 void (*reserved0) (GeeAbstractMultiMap* self);
461 void (*reserved1) (GeeAbstractMultiMap* self);
462 void (*reserved2) (GeeAbstractMultiMap* self);
463 void (*reserved3) (GeeAbstractMultiMap* self);
464 void (*reserved4) (GeeAbstractMultiMap* self);
465 void (*reserved5) (GeeAbstractMultiMap* self);
466 void (*reserved6) (GeeAbstractMultiMap* self);
467 void (*reserved7) (GeeAbstractMultiMap* self);
468 void (*reserved8) (GeeAbstractMultiMap* self);
469 GeeMultiMap* (*get_read_only_view) (GeeAbstractMultiMap* self);
470 };
471
472 struct _GeeTreeMultiMap {
473 GeeAbstractMultiMap parent_instance;
474 GeeTreeMultiMapPrivate * priv;
475 };
476
477 struct _GeeTreeMultiMapClass {
478 GeeAbstractMultiMapClass parent_class;
479 };
480
481 struct _GeeTreeMultiMapPrivate {
482 GType k_type;
483 GBoxedCopyFunc k_dup_func;
484 GDestroyNotify k_destroy_func;
485 GType v_type;
486 GBoxedCopyFunc v_dup_func;
487 GDestroyNotify v_destroy_func;
488 GeeFunctionsCompareDataFuncClosure* _value_compare_func;
489 };
490
491 struct _GeeFunctionsCompareDataFuncClosure {
492 GTypeInstance parent_instance;
493 volatile int ref_count;
494 GeeFunctionsCompareDataFuncClosurePrivate * priv;
495 GCompareDataFunc func;
496 gpointer func_target;
497 GDestroyNotify func_target_destroy_notify;
498 };
499
500 struct _GeeFunctionsCompareDataFuncClosureClass {
501 GTypeClass parent_class;
502 void (*finalize) (GeeFunctionsCompareDataFuncClosure *self);
503 };
504
505 static gint GeeTreeMultiMap_private_offset;
506 static gpointer gee_tree_multi_map_parent_class = NULL;
507
508 GType gee_traversable_stream_get_type (void) G_GNUC_CONST;
509 gpointer gee_lazy_ref (gpointer instance);
510 void gee_lazy_unref (gpointer instance);
511 GParamSpec* gee_param_spec_lazy (const gchar* name,
512 const gchar* nick,
513 const gchar* blurb,
514 GType object_type,
515 GParamFlags flags);
516 void gee_value_set_lazy (GValue* value,
517 gpointer v_object);
518 void gee_value_take_lazy (GValue* value,
519 gpointer v_object);
520 gpointer gee_value_get_lazy (const GValue* value);
521 GType gee_lazy_get_type (void) G_GNUC_CONST;
522 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeLazy, gee_lazy_unref)
523 GType gee_iterator_get_type (void) G_GNUC_CONST;
524 GType gee_traversable_get_type (void) G_GNUC_CONST;
525 GType gee_iterable_get_type (void) G_GNUC_CONST;
526 GType gee_collection_get_type (void) G_GNUC_CONST;
527 GType gee_set_get_type (void) G_GNUC_CONST;
528 GType gee_multi_set_get_type (void) G_GNUC_CONST;
529 GType gee_map_iterator_get_type (void) G_GNUC_CONST;
530 GType gee_multi_map_get_type (void) G_GNUC_CONST;
531 GType gee_abstract_multi_map_get_type (void) G_GNUC_CONST;
532 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractMultiMap, g_object_unref)
533 GType gee_map_entry_get_type (void) G_GNUC_CONST;
534 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeMapEntry, g_object_unref)
535 GType gee_map_get_type (void) G_GNUC_CONST;
536 GType gee_tree_multi_map_get_type (void) G_GNUC_CONST;
537 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeTreeMultiMap, g_object_unref)
538 G_GNUC_INTERNAL gpointer gee_functions_compare_data_func_closure_ref (gpointer instance);
539 G_GNUC_INTERNAL void gee_functions_compare_data_func_closure_unref (gpointer instance);
540 G_GNUC_INTERNAL GParamSpec* gee_functions_param_spec_compare_data_func_closure (const gchar* name,
541 const gchar* nick,
542 const gchar* blurb,
543 GType object_type,
544 GParamFlags flags);
545 G_GNUC_INTERNAL void gee_functions_value_set_compare_data_func_closure (GValue* value,
546 gpointer v_object) G_GNUC_UNUSED;
547 G_GNUC_INTERNAL void gee_functions_value_take_compare_data_func_closure (GValue* value,
548 gpointer v_object);
549 G_GNUC_INTERNAL gpointer gee_functions_value_get_compare_data_func_closure (const GValue* value) G_GNUC_UNUSED;
550 G_GNUC_INTERNAL GType gee_functions_compare_data_func_closure_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
551 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeFunctionsCompareDataFuncClosure, gee_functions_compare_data_func_closure_unref)
552 GeeTreeMultiMap* gee_tree_multi_map_new (GType k_type,
553 GBoxedCopyFunc k_dup_func,
554 GDestroyNotify k_destroy_func,
555 GType v_type,
556 GBoxedCopyFunc v_dup_func,
557 GDestroyNotify v_destroy_func,
558 GCompareDataFunc key_compare_func,
559 gpointer key_compare_func_target,
560 GDestroyNotify key_compare_func_target_destroy_notify,
561 GCompareDataFunc value_compare_func,
562 gpointer value_compare_func_target,
563 GDestroyNotify value_compare_func_target_destroy_notify);
564 GeeTreeMultiMap* gee_tree_multi_map_construct (GType object_type,
565 GType k_type,
566 GBoxedCopyFunc k_dup_func,
567 GDestroyNotify k_destroy_func,
568 GType v_type,
569 GBoxedCopyFunc v_dup_func,
570 GDestroyNotify v_destroy_func,
571 GCompareDataFunc key_compare_func,
572 gpointer key_compare_func_target,
573 GDestroyNotify key_compare_func_target_destroy_notify,
574 GCompareDataFunc value_compare_func,
575 gpointer value_compare_func_target,
576 GDestroyNotify value_compare_func_target_destroy_notify);
577 GeeEqualDataFunc gee_functions_get_equal_func_for (GType t,
578 gpointer* result_target,
579 GDestroyNotify* result_target_destroy_notify);
580 GeeTreeMap* gee_tree_map_new (GType k_type,
581 GBoxedCopyFunc k_dup_func,
582 GDestroyNotify k_destroy_func,
583 GType v_type,
584 GBoxedCopyFunc v_dup_func,
585 GDestroyNotify v_destroy_func,
586 GCompareDataFunc key_compare_func,
587 gpointer key_compare_func_target,
588 GDestroyNotify key_compare_func_target_destroy_notify,
589 GeeEqualDataFunc value_equal_func,
590 gpointer value_equal_func_target,
591 GDestroyNotify value_equal_func_target_destroy_notify);
592 GeeTreeMap* gee_tree_map_construct (GType object_type,
593 GType k_type,
594 GBoxedCopyFunc k_dup_func,
595 GDestroyNotify k_destroy_func,
596 GType v_type,
597 GBoxedCopyFunc v_dup_func,
598 GDestroyNotify v_destroy_func,
599 GCompareDataFunc key_compare_func,
600 gpointer key_compare_func_target,
601 GDestroyNotify key_compare_func_target_destroy_notify,
602 GeeEqualDataFunc value_equal_func,
603 gpointer value_equal_func_target,
604 GDestroyNotify value_equal_func_target_destroy_notify);
605 GType gee_abstract_map_get_type (void) G_GNUC_CONST;
606 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractMap, g_object_unref)
607 GType gee_abstract_sorted_map_get_type (void) G_GNUC_CONST;
608 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractSortedMap, g_object_unref)
609 GType gee_abstract_bidir_sorted_map_get_type (void) G_GNUC_CONST;
610 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractBidirSortedMap, g_object_unref)
611 GType gee_tree_map_get_type (void) G_GNUC_CONST;
612 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeTreeMap, g_object_unref)
613 GeeAbstractMultiMap* gee_abstract_multi_map_construct (GType object_type,
614 GType k_type,
615 GBoxedCopyFunc k_dup_func,
616 GDestroyNotify k_destroy_func,
617 GType v_type,
618 GBoxedCopyFunc v_dup_func,
619 GDestroyNotify v_destroy_func,
620 GeeMap* storage_map);
621 GCompareDataFunc gee_functions_get_compare_func_for (GType t,
622 gpointer* result_target,
623 GDestroyNotify* result_target_destroy_notify);
624 G_GNUC_INTERNAL GeeFunctionsCompareDataFuncClosure* gee_functions_compare_data_func_closure_new (GType g_type,
625 GBoxedCopyFunc g_dup_func,
626 GDestroyNotify g_destroy_func,
627 GCompareDataFunc func,
628 gpointer func_target,
629 GDestroyNotify func_target_destroy_notify);
630 G_GNUC_INTERNAL GeeFunctionsCompareDataFuncClosure* gee_functions_compare_data_func_closure_construct (GType object_type,
631 GType g_type,
632 GBoxedCopyFunc g_dup_func,
633 GDestroyNotify g_destroy_func,
634 GCompareDataFunc func,
635 gpointer func_target,
636 GDestroyNotify func_target_destroy_notify);
637 static GeeCollection* gee_tree_multi_map_real_create_value_storage (GeeAbstractMultiMap* base);
638 G_GNUC_INTERNAL GeeTreeSet* gee_tree_set_new_with_closures (GType g_type,
639 GBoxedCopyFunc g_dup_func,
640 GDestroyNotify g_destroy_func,
641 GeeFunctionsCompareDataFuncClosure* compare_func);
642 G_GNUC_INTERNAL GeeTreeSet* gee_tree_set_construct_with_closures (GType object_type,
643 GType g_type,
644 GBoxedCopyFunc g_dup_func,
645 GDestroyNotify g_destroy_func,
646 GeeFunctionsCompareDataFuncClosure* compare_func);
647 GType gee_abstract_collection_get_type (void) G_GNUC_CONST;
648 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractCollection, g_object_unref)
649 GType gee_abstract_set_get_type (void) G_GNUC_CONST;
650 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractSet, g_object_unref)
651 GType gee_abstract_sorted_set_get_type (void) G_GNUC_CONST;
652 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractSortedSet, g_object_unref)
653 GType gee_abstract_bidir_sorted_set_get_type (void) G_GNUC_CONST;
654 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractBidirSortedSet, g_object_unref)
655 GType gee_tree_set_get_type (void) G_GNUC_CONST;
656 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeTreeSet, g_object_unref)
657 static GeeMultiSet* gee_tree_multi_map_real_create_multi_key_set (GeeAbstractMultiMap* base);
658 G_GNUC_INTERNAL GeeFunctionsCompareDataFuncClosure* gee_tree_map_get_key_compare_func_closure (GeeTreeMap* self);
659 G_GNUC_INTERNAL GeeTreeMultiSet* gee_tree_multi_set_new_with_closures (GType g_type,
660 GBoxedCopyFunc g_dup_func,
661 GDestroyNotify g_destroy_func,
662 GeeFunctionsCompareDataFuncClosure* compare_func);
663 G_GNUC_INTERNAL GeeTreeMultiSet* gee_tree_multi_set_construct_with_closures (GType object_type,
664 GType g_type,
665 GBoxedCopyFunc g_dup_func,
666 GDestroyNotify g_destroy_func,
667 GeeFunctionsCompareDataFuncClosure* compare_func);
668 GType gee_abstract_multi_set_get_type (void) G_GNUC_CONST;
669 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeAbstractMultiSet, g_object_unref)
670 GType gee_tree_multi_set_get_type (void) G_GNUC_CONST;
671 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeTreeMultiSet, g_object_unref)
672 static GeeEqualDataFunc gee_tree_multi_map_real_get_value_equal_func (GeeAbstractMultiMap* base,
673 gpointer* result_target,
674 GDestroyNotify* result_target_destroy_notify);
675 GCompareDataFunc gee_tree_multi_map_get_key_compare_func (GeeTreeMultiMap* self,
676 gpointer* result_target);
677 GCompareDataFunc gee_tree_map_get_key_compare_func (GeeTreeMap* self,
678 gpointer* result_target);
679 GCompareDataFunc gee_tree_multi_map_get_value_compare_func (GeeTreeMultiMap* self,
680 gpointer* result_target);
681 static void gee_tree_multi_map_set_value_compare_func (GeeTreeMultiMap* self,
682 GCompareDataFunc value,
683 gpointer value_target);
684 static void gee_tree_multi_map_finalize (GObject * obj);
685 static void _vala_gee_tree_multi_map_get_property (GObject * object,
686 guint property_id,
687 GValue * value,
688 GParamSpec * pspec);
689 static void _vala_gee_tree_multi_map_set_property (GObject * object,
690 guint property_id,
691 const GValue * value,
692 GParamSpec * pspec);
693
694 static inline gpointer
gee_tree_multi_map_get_instance_private(GeeTreeMultiMap * self)695 gee_tree_multi_map_get_instance_private (GeeTreeMultiMap* self)
696 {
697 return G_STRUCT_MEMBER_P (self, GeeTreeMultiMap_private_offset);
698 }
699
700 /**
701 * Constructs a new, empty tree multimap.
702 *
703 * If not provided, the functions parameters are requested to the
704 * {@link Functions} function factory methods.
705 *
706 * @param key_compare_func an optional key comparator function
707 * @param value_compare_func an optional value comparator function
708 */
709 GeeTreeMultiMap*
gee_tree_multi_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,GCompareDataFunc key_compare_func,gpointer key_compare_func_target,GDestroyNotify key_compare_func_target_destroy_notify,GCompareDataFunc value_compare_func,gpointer value_compare_func_target,GDestroyNotify value_compare_func_target_destroy_notify)710 gee_tree_multi_map_construct (GType object_type,
711 GType k_type,
712 GBoxedCopyFunc k_dup_func,
713 GDestroyNotify k_destroy_func,
714 GType v_type,
715 GBoxedCopyFunc v_dup_func,
716 GDestroyNotify v_destroy_func,
717 GCompareDataFunc key_compare_func,
718 gpointer key_compare_func_target,
719 GDestroyNotify key_compare_func_target_destroy_notify,
720 GCompareDataFunc value_compare_func,
721 gpointer value_compare_func_target,
722 GDestroyNotify value_compare_func_target_destroy_notify)
723 {
724 GeeTreeMultiMap * self = NULL;
725 GCompareDataFunc _tmp0_;
726 gpointer _tmp0__target;
727 GDestroyNotify _tmp0__target_destroy_notify;
728 void* _tmp1_ = NULL;
729 GDestroyNotify _tmp2_ = NULL;
730 GeeEqualDataFunc _tmp3_;
731 GeeTreeMap* _tmp4_;
732 GeeTreeMap* _tmp5_;
733 GCompareDataFunc _tmp9_;
734 gpointer _tmp9__target;
735 GDestroyNotify _tmp9__target_destroy_notify;
736 GeeFunctionsCompareDataFuncClosure* _tmp10_;
737 _tmp0_ = key_compare_func;
738 _tmp0__target = key_compare_func_target;
739 _tmp0__target_destroy_notify = key_compare_func_target_destroy_notify;
740 key_compare_func = NULL;
741 key_compare_func_target = NULL;
742 key_compare_func_target_destroy_notify = NULL;
743 _tmp3_ = gee_functions_get_equal_func_for (GEE_TYPE_SET, &_tmp1_, &_tmp2_);
744 _tmp4_ = gee_tree_map_new (k_type, (GBoxedCopyFunc) k_dup_func, (GDestroyNotify) k_destroy_func, GEE_TYPE_SET, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp0_, _tmp0__target, _tmp0__target_destroy_notify, _tmp3_, _tmp1_, _tmp2_);
745 _tmp5_ = _tmp4_;
746 self = (GeeTreeMultiMap*) gee_abstract_multi_map_construct (object_type, k_type, (GBoxedCopyFunc) k_dup_func, (GDestroyNotify) k_destroy_func, v_type, (GBoxedCopyFunc) v_dup_func, (GDestroyNotify) v_destroy_func, (GeeMap*) _tmp5_);
747 self->priv->k_type = k_type;
748 self->priv->k_dup_func = k_dup_func;
749 self->priv->k_destroy_func = k_destroy_func;
750 self->priv->v_type = v_type;
751 self->priv->v_dup_func = v_dup_func;
752 self->priv->v_destroy_func = v_destroy_func;
753 _g_object_unref0 (_tmp5_);
754 if (value_compare_func == NULL) {
755 void* _tmp6_ = NULL;
756 GDestroyNotify _tmp7_ = NULL;
757 GCompareDataFunc _tmp8_;
758 _tmp8_ = gee_functions_get_compare_func_for (v_type, &_tmp6_, &_tmp7_);
759 (value_compare_func_target_destroy_notify == NULL) ? NULL : (value_compare_func_target_destroy_notify (value_compare_func_target), NULL);
760 value_compare_func = NULL;
761 value_compare_func_target = NULL;
762 value_compare_func_target_destroy_notify = NULL;
763 value_compare_func = _tmp8_;
764 value_compare_func_target = _tmp6_;
765 value_compare_func_target_destroy_notify = _tmp7_;
766 }
767 _tmp9_ = value_compare_func;
768 _tmp9__target = value_compare_func_target;
769 _tmp9__target_destroy_notify = value_compare_func_target_destroy_notify;
770 value_compare_func = NULL;
771 value_compare_func_target = NULL;
772 value_compare_func_target_destroy_notify = NULL;
773 _tmp10_ = gee_functions_compare_data_func_closure_new (v_type, (GBoxedCopyFunc) v_dup_func, (GDestroyNotify) v_destroy_func, _tmp9_, _tmp9__target, _tmp9__target_destroy_notify);
774 _gee_functions_compare_data_func_closure_unref0 (self->priv->_value_compare_func);
775 self->priv->_value_compare_func = _tmp10_;
776 (key_compare_func_target_destroy_notify == NULL) ? NULL : (key_compare_func_target_destroy_notify (key_compare_func_target), NULL);
777 key_compare_func = NULL;
778 key_compare_func_target = NULL;
779 key_compare_func_target_destroy_notify = NULL;
780 (value_compare_func_target_destroy_notify == NULL) ? NULL : (value_compare_func_target_destroy_notify (value_compare_func_target), NULL);
781 value_compare_func = NULL;
782 value_compare_func_target = NULL;
783 value_compare_func_target_destroy_notify = NULL;
784 return self;
785 }
786
787 GeeTreeMultiMap*
gee_tree_multi_map_new(GType k_type,GBoxedCopyFunc k_dup_func,GDestroyNotify k_destroy_func,GType v_type,GBoxedCopyFunc v_dup_func,GDestroyNotify v_destroy_func,GCompareDataFunc key_compare_func,gpointer key_compare_func_target,GDestroyNotify key_compare_func_target_destroy_notify,GCompareDataFunc value_compare_func,gpointer value_compare_func_target,GDestroyNotify value_compare_func_target_destroy_notify)788 gee_tree_multi_map_new (GType k_type,
789 GBoxedCopyFunc k_dup_func,
790 GDestroyNotify k_destroy_func,
791 GType v_type,
792 GBoxedCopyFunc v_dup_func,
793 GDestroyNotify v_destroy_func,
794 GCompareDataFunc key_compare_func,
795 gpointer key_compare_func_target,
796 GDestroyNotify key_compare_func_target_destroy_notify,
797 GCompareDataFunc value_compare_func,
798 gpointer value_compare_func_target,
799 GDestroyNotify value_compare_func_target_destroy_notify)
800 {
801 return gee_tree_multi_map_construct (GEE_TYPE_TREE_MULTI_MAP, k_type, k_dup_func, k_destroy_func, v_type, v_dup_func, v_destroy_func, key_compare_func, key_compare_func_target, key_compare_func_target_destroy_notify, value_compare_func, value_compare_func_target, value_compare_func_target_destroy_notify);
802 }
803
804 static gpointer
_gee_functions_compare_data_func_closure_ref0(gpointer self)805 _gee_functions_compare_data_func_closure_ref0 (gpointer self)
806 {
807 return self ? gee_functions_compare_data_func_closure_ref (self) : NULL;
808 }
809
810 static GeeCollection*
gee_tree_multi_map_real_create_value_storage(GeeAbstractMultiMap * base)811 gee_tree_multi_map_real_create_value_storage (GeeAbstractMultiMap* base)
812 {
813 GeeTreeMultiMap * self;
814 GeeFunctionsCompareDataFuncClosure* _tmp0_;
815 GeeFunctionsCompareDataFuncClosure* _tmp1_;
816 GeeTreeSet* _tmp2_;
817 GeeCollection* result = NULL;
818 self = (GeeTreeMultiMap*) base;
819 _tmp0_ = self->priv->_value_compare_func;
820 _tmp1_ = _gee_functions_compare_data_func_closure_ref0 (_tmp0_);
821 _tmp2_ = gee_tree_set_new_with_closures (self->priv->v_type, (GBoxedCopyFunc) self->priv->v_dup_func, (GDestroyNotify) self->priv->v_destroy_func, _tmp1_);
822 result = (GeeCollection*) _tmp2_;
823 return result;
824 }
825
826 static GeeMultiSet*
gee_tree_multi_map_real_create_multi_key_set(GeeAbstractMultiMap * base)827 gee_tree_multi_map_real_create_multi_key_set (GeeAbstractMultiMap* base)
828 {
829 GeeTreeMultiMap * self;
830 GeeMap* _tmp0_;
831 GeeFunctionsCompareDataFuncClosure* _tmp1_;
832 GeeTreeMultiSet* _tmp2_;
833 GeeMultiSet* result = NULL;
834 self = (GeeTreeMultiMap*) base;
835 _tmp0_ = ((GeeAbstractMultiMap*) self)->_storage_map;
836 _tmp1_ = gee_tree_map_get_key_compare_func_closure (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_TREE_MAP, GeeTreeMap));
837 _tmp2_ = gee_tree_multi_set_new_with_closures (self->priv->k_type, (GBoxedCopyFunc) self->priv->k_dup_func, (GDestroyNotify) self->priv->k_destroy_func, _tmp1_);
838 result = (GeeMultiSet*) _tmp2_;
839 return result;
840 }
841
842 static GeeEqualDataFunc
gee_tree_multi_map_real_get_value_equal_func(GeeAbstractMultiMap * base,gpointer * result_target,GDestroyNotify * result_target_destroy_notify)843 gee_tree_multi_map_real_get_value_equal_func (GeeAbstractMultiMap* base,
844 gpointer* result_target,
845 GDestroyNotify* result_target_destroy_notify)
846 {
847 GeeTreeMultiMap * self;
848 void* _tmp0_ = NULL;
849 GDestroyNotify _tmp1_ = NULL;
850 GeeEqualDataFunc _tmp2_;
851 GeeEqualDataFunc _tmp3_;
852 gpointer _tmp3__target;
853 GDestroyNotify _tmp3__target_destroy_notify;
854 GeeEqualDataFunc result = NULL;
855 self = (GeeTreeMultiMap*) base;
856 _tmp2_ = gee_functions_get_equal_func_for (self->priv->v_type, &_tmp0_, &_tmp1_);
857 _tmp3_ = _tmp2_;
858 _tmp3__target = _tmp0_;
859 _tmp3__target_destroy_notify = _tmp1_;
860 *result_target = _tmp3__target;
861 *result_target_destroy_notify = _tmp3__target_destroy_notify;
862 result = _tmp3_;
863 return result;
864 }
865
866 GCompareDataFunc
gee_tree_multi_map_get_key_compare_func(GeeTreeMultiMap * self,gpointer * result_target)867 gee_tree_multi_map_get_key_compare_func (GeeTreeMultiMap* self,
868 gpointer* result_target)
869 {
870 GCompareDataFunc result;
871 GeeMap* _tmp0_;
872 GCompareDataFunc _tmp1_ = NULL;
873 gpointer _tmp1__target = NULL;
874 GCompareDataFunc _tmp2_;
875 gpointer _tmp2__target;
876 GCompareDataFunc _tmp3_;
877 gpointer _tmp3__target;
878 g_return_val_if_fail (self != NULL, NULL);
879 _tmp0_ = ((GeeAbstractMultiMap*) self)->_storage_map;
880 _tmp1_ = gee_tree_map_get_key_compare_func (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_TREE_MAP, GeeTreeMap), &_tmp1__target);
881 _tmp2_ = _tmp1_;
882 _tmp2__target = _tmp1__target;
883 _tmp3_ = _tmp2_;
884 _tmp3__target = _tmp2__target;
885 *result_target = _tmp3__target;
886 result = _tmp3_;
887 return result;
888 }
889
890 GCompareDataFunc
gee_tree_multi_map_get_value_compare_func(GeeTreeMultiMap * self,gpointer * result_target)891 gee_tree_multi_map_get_value_compare_func (GeeTreeMultiMap* self,
892 gpointer* result_target)
893 {
894 GCompareDataFunc result;
895 GeeFunctionsCompareDataFuncClosure* _tmp0_;
896 GCompareDataFunc _tmp1_;
897 gpointer _tmp1__target;
898 GCompareDataFunc _tmp2_;
899 gpointer _tmp2__target;
900 g_return_val_if_fail (self != NULL, NULL);
901 _tmp0_ = self->priv->_value_compare_func;
902 _tmp1_ = _tmp0_->func;
903 _tmp1__target = _tmp0_->func_target;
904 _tmp2_ = _tmp1_;
905 _tmp2__target = _tmp1__target;
906 *result_target = _tmp2__target;
907 result = _tmp2_;
908 return result;
909 }
910
911 static void
gee_tree_multi_map_set_value_compare_func(GeeTreeMultiMap * self,GCompareDataFunc value,gpointer value_target)912 gee_tree_multi_map_set_value_compare_func (GeeTreeMultiMap* self,
913 GCompareDataFunc value,
914 gpointer value_target)
915 {
916 g_return_if_fail (self != NULL);
917 }
918
919 static void
gee_tree_multi_map_class_init(GeeTreeMultiMapClass * klass,gpointer klass_data)920 gee_tree_multi_map_class_init (GeeTreeMultiMapClass * klass,
921 gpointer klass_data)
922 {
923 gee_tree_multi_map_parent_class = g_type_class_peek_parent (klass);
924 g_type_class_adjust_private_offset (klass, &GeeTreeMultiMap_private_offset);
925 ((GeeAbstractMultiMapClass *) klass)->create_value_storage = (GeeCollection* (*) (GeeAbstractMultiMap*)) gee_tree_multi_map_real_create_value_storage;
926 ((GeeAbstractMultiMapClass *) klass)->create_multi_key_set = (GeeMultiSet* (*) (GeeAbstractMultiMap*)) gee_tree_multi_map_real_create_multi_key_set;
927 ((GeeAbstractMultiMapClass *) klass)->get_value_equal_func = (GeeEqualDataFunc (*) (GeeAbstractMultiMap*, gpointer*, GDestroyNotify*)) gee_tree_multi_map_real_get_value_equal_func;
928 G_OBJECT_CLASS (klass)->get_property = _vala_gee_tree_multi_map_get_property;
929 G_OBJECT_CLASS (klass)->set_property = _vala_gee_tree_multi_map_set_property;
930 G_OBJECT_CLASS (klass)->finalize = gee_tree_multi_map_finalize;
931 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_TREE_MULTI_MAP_K_TYPE, g_param_spec_gtype ("k-type", "type", "type", G_TYPE_NONE, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
932 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_TREE_MULTI_MAP_K_DUP_FUNC, g_param_spec_pointer ("k-dup-func", "dup func", "dup func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
933 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_TREE_MULTI_MAP_K_DESTROY_FUNC, g_param_spec_pointer ("k-destroy-func", "destroy func", "destroy func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
934 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_TREE_MULTI_MAP_V_TYPE, g_param_spec_gtype ("v-type", "type", "type", G_TYPE_NONE, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
935 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_TREE_MULTI_MAP_V_DUP_FUNC, g_param_spec_pointer ("v-dup-func", "dup func", "dup func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
936 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_TREE_MULTI_MAP_V_DESTROY_FUNC, g_param_spec_pointer ("v-destroy-func", "destroy func", "destroy func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
937 }
938
939 static void
gee_tree_multi_map_instance_init(GeeTreeMultiMap * self,gpointer klass)940 gee_tree_multi_map_instance_init (GeeTreeMultiMap * self,
941 gpointer klass)
942 {
943 self->priv = gee_tree_multi_map_get_instance_private (self);
944 }
945
946 static void
gee_tree_multi_map_finalize(GObject * obj)947 gee_tree_multi_map_finalize (GObject * obj)
948 {
949 GeeTreeMultiMap * self;
950 self = G_TYPE_CHECK_INSTANCE_CAST (obj, GEE_TYPE_TREE_MULTI_MAP, GeeTreeMultiMap);
951 _gee_functions_compare_data_func_closure_unref0 (self->priv->_value_compare_func);
952 G_OBJECT_CLASS (gee_tree_multi_map_parent_class)->finalize (obj);
953 }
954
955 /**
956 * Left-leaning red-black tree implementation of the {@link MultiMap}
957 * interface.
958 */
959 GType
gee_tree_multi_map_get_type(void)960 gee_tree_multi_map_get_type (void)
961 {
962 static volatile gsize gee_tree_multi_map_type_id__volatile = 0;
963 if (g_once_init_enter (&gee_tree_multi_map_type_id__volatile)) {
964 static const GTypeInfo g_define_type_info = { sizeof (GeeTreeMultiMapClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_tree_multi_map_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeTreeMultiMap), 0, (GInstanceInitFunc) gee_tree_multi_map_instance_init, NULL };
965 GType gee_tree_multi_map_type_id;
966 gee_tree_multi_map_type_id = g_type_register_static (GEE_TYPE_ABSTRACT_MULTI_MAP, "GeeTreeMultiMap", &g_define_type_info, 0);
967 GeeTreeMultiMap_private_offset = g_type_add_instance_private (gee_tree_multi_map_type_id, sizeof (GeeTreeMultiMapPrivate));
968 g_once_init_leave (&gee_tree_multi_map_type_id__volatile, gee_tree_multi_map_type_id);
969 }
970 return gee_tree_multi_map_type_id__volatile;
971 }
972
973 static void
_vala_gee_tree_multi_map_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)974 _vala_gee_tree_multi_map_get_property (GObject * object,
975 guint property_id,
976 GValue * value,
977 GParamSpec * pspec)
978 {
979 GeeTreeMultiMap * self;
980 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_TREE_MULTI_MAP, GeeTreeMultiMap);
981 switch (property_id) {
982 case GEE_TREE_MULTI_MAP_K_TYPE:
983 g_value_set_gtype (value, self->priv->k_type);
984 break;
985 case GEE_TREE_MULTI_MAP_K_DUP_FUNC:
986 g_value_set_pointer (value, self->priv->k_dup_func);
987 break;
988 case GEE_TREE_MULTI_MAP_K_DESTROY_FUNC:
989 g_value_set_pointer (value, self->priv->k_destroy_func);
990 break;
991 case GEE_TREE_MULTI_MAP_V_TYPE:
992 g_value_set_gtype (value, self->priv->v_type);
993 break;
994 case GEE_TREE_MULTI_MAP_V_DUP_FUNC:
995 g_value_set_pointer (value, self->priv->v_dup_func);
996 break;
997 case GEE_TREE_MULTI_MAP_V_DESTROY_FUNC:
998 g_value_set_pointer (value, self->priv->v_destroy_func);
999 break;
1000 default:
1001 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
1002 break;
1003 }
1004 }
1005
1006 static void
_vala_gee_tree_multi_map_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)1007 _vala_gee_tree_multi_map_set_property (GObject * object,
1008 guint property_id,
1009 const GValue * value,
1010 GParamSpec * pspec)
1011 {
1012 GeeTreeMultiMap * self;
1013 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_TREE_MULTI_MAP, GeeTreeMultiMap);
1014 switch (property_id) {
1015 case GEE_TREE_MULTI_MAP_K_TYPE:
1016 self->priv->k_type = g_value_get_gtype (value);
1017 break;
1018 case GEE_TREE_MULTI_MAP_K_DUP_FUNC:
1019 self->priv->k_dup_func = g_value_get_pointer (value);
1020 break;
1021 case GEE_TREE_MULTI_MAP_K_DESTROY_FUNC:
1022 self->priv->k_destroy_func = g_value_get_pointer (value);
1023 break;
1024 case GEE_TREE_MULTI_MAP_V_TYPE:
1025 self->priv->v_type = g_value_get_gtype (value);
1026 break;
1027 case GEE_TREE_MULTI_MAP_V_DUP_FUNC:
1028 self->priv->v_dup_func = g_value_get_pointer (value);
1029 break;
1030 case GEE_TREE_MULTI_MAP_V_DESTROY_FUNC:
1031 self->priv->v_destroy_func = g_value_get_pointer (value);
1032 break;
1033 default:
1034 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
1035 break;
1036 }
1037 }
1038
1039