1 /* readonlybidirlist.c generated by valac 0.46.6, the Vala compiler
2  * generated from readonlybidirlist.vala, do not modify */
3 
4 /* readonlybidirlist.vala
5  *
6  * Copyright (C) 2011  Maciej Piechotka
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  * 	Maciej Piechotka <uzytkownik2@gmail.com>
24  */
25 
26 #include <glib-object.h>
27 #include <glib.h>
28 
29 #define GEE_TYPE_TRAVERSABLE (gee_traversable_get_type ())
30 #define GEE_TRAVERSABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_TRAVERSABLE, GeeTraversable))
31 #define GEE_IS_TRAVERSABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_TRAVERSABLE))
32 #define GEE_TRAVERSABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_TRAVERSABLE, GeeTraversableIface))
33 
34 typedef struct _GeeTraversable GeeTraversable;
35 typedef struct _GeeTraversableIface GeeTraversableIface;
36 typedef gboolean (*GeeForallFunc) (gpointer g, gpointer user_data);
37 typedef enum  {
38 	GEE_TRAVERSABLE_STREAM_YIELD,
39 	GEE_TRAVERSABLE_STREAM_CONTINUE,
40 	GEE_TRAVERSABLE_STREAM_END,
41 	GEE_TRAVERSABLE_STREAM_WAIT
42 } GeeTraversableStream;
43 
44 #define GEE_TRAVERSABLE_TYPE_STREAM (gee_traversable_stream_get_type ())
45 
46 #define GEE_TYPE_LAZY (gee_lazy_get_type ())
47 #define GEE_LAZY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_LAZY, GeeLazy))
48 #define GEE_LAZY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_LAZY, GeeLazyClass))
49 #define GEE_IS_LAZY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_LAZY))
50 #define GEE_IS_LAZY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_LAZY))
51 #define GEE_LAZY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_LAZY, GeeLazyClass))
52 
53 typedef struct _GeeLazy GeeLazy;
54 typedef struct _GeeLazyClass GeeLazyClass;
55 typedef GeeTraversableStream (*GeeStreamFunc) (GeeTraversableStream state, GeeLazy* g, GeeLazy* * lazy, gpointer user_data);
56 
57 #define GEE_TYPE_ITERATOR (gee_iterator_get_type ())
58 #define GEE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERATOR, GeeIterator))
59 #define GEE_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERATOR))
60 #define GEE_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERATOR, GeeIteratorIface))
61 
62 typedef struct _GeeIterator GeeIterator;
63 typedef struct _GeeIteratorIface GeeIteratorIface;
64 typedef gpointer (*GeeFoldFunc) (gpointer g, gpointer a, gpointer user_data);
65 typedef gpointer (*GeeMapFunc) (gpointer g, gpointer user_data);
66 typedef gboolean (*GeePredicate) (gconstpointer g, gpointer user_data);
67 typedef GeeIterator* (*GeeFlatMapFunc) (gpointer g, gpointer user_data);
68 
69 #define GEE_TYPE_ITERABLE (gee_iterable_get_type ())
70 #define GEE_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERABLE, GeeIterable))
71 #define GEE_IS_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERABLE))
72 #define GEE_ITERABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERABLE, GeeIterableIface))
73 
74 typedef struct _GeeIterable GeeIterable;
75 typedef struct _GeeIterableIface GeeIterableIface;
76 
77 #define GEE_TYPE_COLLECTION (gee_collection_get_type ())
78 #define GEE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_COLLECTION, GeeCollection))
79 #define GEE_IS_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_COLLECTION))
80 #define GEE_COLLECTION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_COLLECTION, GeeCollectionIface))
81 
82 typedef struct _GeeCollection GeeCollection;
83 typedef struct _GeeCollectionIface GeeCollectionIface;
84 
85 #define GEE_TYPE_READ_ONLY_COLLECTION (gee_read_only_collection_get_type ())
86 #define GEE_READ_ONLY_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_READ_ONLY_COLLECTION, GeeReadOnlyCollection))
87 #define GEE_READ_ONLY_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_READ_ONLY_COLLECTION, GeeReadOnlyCollectionClass))
88 #define GEE_IS_READ_ONLY_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_READ_ONLY_COLLECTION))
89 #define GEE_IS_READ_ONLY_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_READ_ONLY_COLLECTION))
90 #define GEE_READ_ONLY_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_READ_ONLY_COLLECTION, GeeReadOnlyCollectionClass))
91 
92 typedef struct _GeeReadOnlyCollection GeeReadOnlyCollection;
93 typedef struct _GeeReadOnlyCollectionClass GeeReadOnlyCollectionClass;
94 typedef struct _GeeReadOnlyCollectionPrivate GeeReadOnlyCollectionPrivate;
95 
96 #define GEE_TYPE_LIST (gee_list_get_type ())
97 #define GEE_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_LIST, GeeList))
98 #define GEE_IS_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_LIST))
99 #define GEE_LIST_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_LIST, GeeListIface))
100 
101 typedef struct _GeeList GeeList;
102 typedef struct _GeeListIface GeeListIface;
103 
104 #define GEE_TYPE_LIST_ITERATOR (gee_list_iterator_get_type ())
105 #define GEE_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_LIST_ITERATOR, GeeListIterator))
106 #define GEE_IS_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_LIST_ITERATOR))
107 #define GEE_LIST_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_LIST_ITERATOR, GeeListIteratorIface))
108 
109 typedef struct _GeeListIterator GeeListIterator;
110 typedef struct _GeeListIteratorIface GeeListIteratorIface;
111 
112 #define GEE_TYPE_READ_ONLY_LIST (gee_read_only_list_get_type ())
113 #define GEE_READ_ONLY_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_READ_ONLY_LIST, GeeReadOnlyList))
114 #define GEE_READ_ONLY_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_READ_ONLY_LIST, GeeReadOnlyListClass))
115 #define GEE_IS_READ_ONLY_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_READ_ONLY_LIST))
116 #define GEE_IS_READ_ONLY_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_READ_ONLY_LIST))
117 #define GEE_READ_ONLY_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_READ_ONLY_LIST, GeeReadOnlyListClass))
118 
119 typedef struct _GeeReadOnlyList GeeReadOnlyList;
120 typedef struct _GeeReadOnlyListClass GeeReadOnlyListClass;
121 typedef struct _GeeReadOnlyListPrivate GeeReadOnlyListPrivate;
122 
123 #define GEE_TYPE_BIDIR_LIST (gee_bidir_list_get_type ())
124 #define GEE_BIDIR_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_BIDIR_LIST, GeeBidirList))
125 #define GEE_IS_BIDIR_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_BIDIR_LIST))
126 #define GEE_BIDIR_LIST_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_BIDIR_LIST, GeeBidirListIface))
127 
128 typedef struct _GeeBidirList GeeBidirList;
129 typedef struct _GeeBidirListIface GeeBidirListIface;
130 
131 #define GEE_TYPE_BIDIR_LIST_ITERATOR (gee_bidir_list_iterator_get_type ())
132 #define GEE_BIDIR_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_BIDIR_LIST_ITERATOR, GeeBidirListIterator))
133 #define GEE_IS_BIDIR_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_BIDIR_LIST_ITERATOR))
134 #define GEE_BIDIR_LIST_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_BIDIR_LIST_ITERATOR, GeeBidirListIteratorIface))
135 
136 typedef struct _GeeBidirListIterator GeeBidirListIterator;
137 typedef struct _GeeBidirListIteratorIface GeeBidirListIteratorIface;
138 
139 #define GEE_TYPE_BIDIR_ITERATOR (gee_bidir_iterator_get_type ())
140 #define GEE_BIDIR_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_BIDIR_ITERATOR, GeeBidirIterator))
141 #define GEE_IS_BIDIR_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_BIDIR_ITERATOR))
142 #define GEE_BIDIR_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_BIDIR_ITERATOR, GeeBidirIteratorIface))
143 
144 typedef struct _GeeBidirIterator GeeBidirIterator;
145 typedef struct _GeeBidirIteratorIface GeeBidirIteratorIface;
146 
147 #define GEE_TYPE_READ_ONLY_BIDIR_LIST (gee_read_only_bidir_list_get_type ())
148 #define GEE_READ_ONLY_BIDIR_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_READ_ONLY_BIDIR_LIST, GeeReadOnlyBidirList))
149 #define GEE_READ_ONLY_BIDIR_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_READ_ONLY_BIDIR_LIST, GeeReadOnlyBidirListClass))
150 #define GEE_IS_READ_ONLY_BIDIR_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_READ_ONLY_BIDIR_LIST))
151 #define GEE_IS_READ_ONLY_BIDIR_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_READ_ONLY_BIDIR_LIST))
152 #define GEE_READ_ONLY_BIDIR_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_READ_ONLY_BIDIR_LIST, GeeReadOnlyBidirListClass))
153 
154 typedef struct _GeeReadOnlyBidirList GeeReadOnlyBidirList;
155 typedef struct _GeeReadOnlyBidirListClass GeeReadOnlyBidirListClass;
156 typedef struct _GeeReadOnlyBidirListPrivate GeeReadOnlyBidirListPrivate;
157 enum  {
158 	GEE_READ_ONLY_BIDIR_LIST_0_PROPERTY,
159 	GEE_READ_ONLY_BIDIR_LIST_G_TYPE,
160 	GEE_READ_ONLY_BIDIR_LIST_G_DUP_FUNC,
161 	GEE_READ_ONLY_BIDIR_LIST_G_DESTROY_FUNC,
162 	GEE_READ_ONLY_BIDIR_LIST_READ_ONLY_VIEW_PROPERTY,
163 	GEE_READ_ONLY_BIDIR_LIST_NUM_PROPERTIES
164 };
165 static GParamSpec* gee_read_only_bidir_list_properties[GEE_READ_ONLY_BIDIR_LIST_NUM_PROPERTIES];
166 
167 #define GEE_READ_ONLY_COLLECTION_TYPE_ITERATOR (gee_read_only_collection_iterator_get_type ())
168 #define GEE_READ_ONLY_COLLECTION_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_READ_ONLY_COLLECTION_TYPE_ITERATOR, GeeReadOnlyCollectionIterator))
169 #define GEE_READ_ONLY_COLLECTION_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_READ_ONLY_COLLECTION_TYPE_ITERATOR, GeeReadOnlyCollectionIteratorClass))
170 #define GEE_READ_ONLY_COLLECTION_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_READ_ONLY_COLLECTION_TYPE_ITERATOR))
171 #define GEE_READ_ONLY_COLLECTION_IS_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_READ_ONLY_COLLECTION_TYPE_ITERATOR))
172 #define GEE_READ_ONLY_COLLECTION_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_READ_ONLY_COLLECTION_TYPE_ITERATOR, GeeReadOnlyCollectionIteratorClass))
173 
174 typedef struct _GeeReadOnlyCollectionIterator GeeReadOnlyCollectionIterator;
175 typedef struct _GeeReadOnlyCollectionIteratorClass GeeReadOnlyCollectionIteratorClass;
176 
177 #define GEE_READ_ONLY_LIST_TYPE_ITERATOR (gee_read_only_list_iterator_get_type ())
178 #define GEE_READ_ONLY_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_READ_ONLY_LIST_TYPE_ITERATOR, GeeReadOnlyListIterator))
179 #define GEE_READ_ONLY_LIST_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_READ_ONLY_LIST_TYPE_ITERATOR, GeeReadOnlyListIteratorClass))
180 #define GEE_READ_ONLY_LIST_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_READ_ONLY_LIST_TYPE_ITERATOR))
181 #define GEE_READ_ONLY_LIST_IS_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_READ_ONLY_LIST_TYPE_ITERATOR))
182 #define GEE_READ_ONLY_LIST_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_READ_ONLY_LIST_TYPE_ITERATOR, GeeReadOnlyListIteratorClass))
183 
184 typedef struct _GeeReadOnlyListIterator GeeReadOnlyListIterator;
185 typedef struct _GeeReadOnlyListIteratorClass GeeReadOnlyListIteratorClass;
186 
187 #define GEE_READ_ONLY_BIDIR_LIST_TYPE_ITERATOR (gee_read_only_bidir_list_iterator_get_type ())
188 #define GEE_READ_ONLY_BIDIR_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_READ_ONLY_BIDIR_LIST_TYPE_ITERATOR, GeeReadOnlyBidirListIterator))
189 #define GEE_READ_ONLY_BIDIR_LIST_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_READ_ONLY_BIDIR_LIST_TYPE_ITERATOR, GeeReadOnlyBidirListIteratorClass))
190 #define GEE_READ_ONLY_BIDIR_LIST_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_READ_ONLY_BIDIR_LIST_TYPE_ITERATOR))
191 #define GEE_READ_ONLY_BIDIR_LIST_IS_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_READ_ONLY_BIDIR_LIST_TYPE_ITERATOR))
192 #define GEE_READ_ONLY_BIDIR_LIST_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_READ_ONLY_BIDIR_LIST_TYPE_ITERATOR, GeeReadOnlyBidirListIteratorClass))
193 
194 typedef struct _GeeReadOnlyBidirListIterator GeeReadOnlyBidirListIterator;
195 typedef struct _GeeReadOnlyBidirListIteratorClass GeeReadOnlyBidirListIteratorClass;
196 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
197 typedef struct _GeeReadOnlyCollectionIteratorPrivate GeeReadOnlyCollectionIteratorPrivate;
198 typedef struct _GeeReadOnlyListIteratorPrivate GeeReadOnlyListIteratorPrivate;
199 typedef struct _GeeReadOnlyBidirListIteratorPrivate GeeReadOnlyBidirListIteratorPrivate;
200 enum  {
201 	GEE_READ_ONLY_BIDIR_LIST_ITERATOR_0_PROPERTY,
202 	GEE_READ_ONLY_BIDIR_LIST_ITERATOR_G_TYPE,
203 	GEE_READ_ONLY_BIDIR_LIST_ITERATOR_G_DUP_FUNC,
204 	GEE_READ_ONLY_BIDIR_LIST_ITERATOR_G_DESTROY_FUNC,
205 	GEE_READ_ONLY_BIDIR_LIST_ITERATOR_NUM_PROPERTIES
206 };
207 static GParamSpec* gee_read_only_bidir_list_iterator_properties[GEE_READ_ONLY_BIDIR_LIST_ITERATOR_NUM_PROPERTIES];
208 
209 struct _GeeIteratorIface {
210 	GTypeInterface parent_iface;
211 	gboolean (*next) (GeeIterator* self);
212 	gboolean (*has_next) (GeeIterator* self);
213 	gpointer (*get) (GeeIterator* self);
214 	void (*remove) (GeeIterator* self);
215 	gboolean (*get_valid) (GeeIterator* self);
216 	gboolean (*get_read_only) (GeeIterator* self);
217 };
218 
219 struct _GeeTraversableIface {
220 	GTypeInterface parent_iface;
221 	GType (*get_g_type) (GeeTraversable* self);
222 	GBoxedCopyFunc (*get_g_dup_func) (GeeTraversable* self);
223 	GDestroyNotify (*get_g_destroy_func) (GeeTraversable* self);
224 	gboolean (*foreach) (GeeTraversable* self, GeeForallFunc f, gpointer f_target);
225 	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);
226 	gpointer (*fold) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldFunc f, gpointer f_target, gpointer seed);
227 	GeeIterator* (*map) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeMapFunc f, gpointer f_target);
228 	GeeIterator* (*scan) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldFunc f, gpointer f_target, gpointer seed);
229 	GeeIterator* (*filter) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
230 	GeeIterator* (*chop) (GeeTraversable* self, gint offset, gint length);
231 	GType (*get_element_type) (GeeTraversable* self);
232 	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);
233 	GeeIterator** (*tee) (GeeTraversable* self, guint forks, gint* result_length1);
234 	gpointer (*first_match) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
235 	gboolean (*any_match) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
236 	gboolean (*all_match) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
237 	gpointer (*max) (GeeTraversable* self, GCompareDataFunc compare, gpointer compare_target, GDestroyNotify compare_target_destroy_notify);
238 	gpointer (*min) (GeeTraversable* self, GCompareDataFunc compare, gpointer compare_target, GDestroyNotify compare_target_destroy_notify);
239 	GeeIterator* (*order_by) (GeeTraversable* self, GCompareDataFunc compare, gpointer compare_target, GDestroyNotify compare_target_destroy_notify);
240 };
241 
242 struct _GeeIterableIface {
243 	GTypeInterface parent_iface;
244 	GType (*get_g_type) (GeeIterable* self);
245 	GBoxedCopyFunc (*get_g_dup_func) (GeeIterable* self);
246 	GDestroyNotify (*get_g_destroy_func) (GeeIterable* self);
247 	GeeIterator* (*iterator) (GeeIterable* self);
248 };
249 
250 struct _GeeCollectionIface {
251 	GTypeInterface parent_iface;
252 	GType (*get_g_type) (GeeCollection* self);
253 	GBoxedCopyFunc (*get_g_dup_func) (GeeCollection* self);
254 	GDestroyNotify (*get_g_destroy_func) (GeeCollection* self);
255 	gboolean (*contains) (GeeCollection* self, gconstpointer item);
256 	gboolean (*add) (GeeCollection* self, gconstpointer item);
257 	gboolean (*remove) (GeeCollection* self, gconstpointer item);
258 	void (*clear) (GeeCollection* self);
259 	gboolean (*add_all) (GeeCollection* self, GeeCollection* collection);
260 	gboolean (*contains_all) (GeeCollection* self, GeeCollection* collection);
261 	gboolean (*remove_all) (GeeCollection* self, GeeCollection* collection);
262 	gboolean (*retain_all) (GeeCollection* self, GeeCollection* collection);
263 	gpointer* (*to_array) (GeeCollection* self, gint* result_length1);
264 	gint (*get_size) (GeeCollection* self);
265 	gboolean (*get_is_empty) (GeeCollection* self);
266 	gboolean (*get_read_only) (GeeCollection* self);
267 	GeeCollection* (*get_read_only_view) (GeeCollection* self);
268 	gboolean (*add_all_array) (GeeCollection* self, gpointer* array, gint array_length1);
269 	gboolean (*contains_all_array) (GeeCollection* self, gpointer* array, gint array_length1);
270 	gboolean (*remove_all_array) (GeeCollection* self, gpointer* array, gint array_length1);
271 	gboolean (*add_all_iterator) (GeeCollection* self, GeeIterator* iter);
272 	gboolean (*contains_all_iterator) (GeeCollection* self, GeeIterator* iter);
273 	gboolean (*remove_all_iterator) (GeeCollection* self, GeeIterator* iter);
274 };
275 
276 struct _GeeReadOnlyCollection {
277 	GObject parent_instance;
278 	GeeReadOnlyCollectionPrivate * priv;
279 	GeeCollection* _collection;
280 };
281 
282 struct _GeeReadOnlyCollectionClass {
283 	GObjectClass parent_class;
284 	GeeCollection* (*get_read_only_view) (GeeReadOnlyCollection* self);
285 };
286 
287 struct _GeeListIteratorIface {
288 	GTypeInterface parent_iface;
289 	void (*set) (GeeListIterator* self, gconstpointer item);
290 	void (*add) (GeeListIterator* self, gconstpointer item);
291 	gint (*index) (GeeListIterator* self);
292 };
293 
294 struct _GeeListIface {
295 	GTypeInterface parent_iface;
296 	GType (*get_g_type) (GeeList* self);
297 	GBoxedCopyFunc (*get_g_dup_func) (GeeList* self);
298 	GDestroyNotify (*get_g_destroy_func) (GeeList* self);
299 	GeeListIterator* (*list_iterator) (GeeList* self);
300 	gpointer (*get) (GeeList* self, gint index);
301 	void (*set) (GeeList* self, gint index, gconstpointer item);
302 	gint (*index_of) (GeeList* self, gconstpointer item);
303 	void (*insert) (GeeList* self, gint index, gconstpointer item);
304 	gpointer (*remove_at) (GeeList* self, gint index);
305 	GeeList* (*slice) (GeeList* self, gint start, gint stop);
306 	gpointer (*first) (GeeList* self);
307 	gpointer (*last) (GeeList* self);
308 	void (*insert_all) (GeeList* self, gint index, GeeCollection* collection);
309 	void (*sort) (GeeList* self, GCompareDataFunc compare_func, gpointer compare_func_target, GDestroyNotify compare_func_target_destroy_notify);
310 	GeeList* (*get_read_only_view) (GeeList* self);
311 };
312 
313 struct _GeeReadOnlyList {
314 	GeeReadOnlyCollection parent_instance;
315 	GeeReadOnlyListPrivate * priv;
316 };
317 
318 struct _GeeReadOnlyListClass {
319 	GeeReadOnlyCollectionClass parent_class;
320 	GeeList* (*get_read_only_view) (GeeReadOnlyList* self);
321 };
322 
323 struct _GeeBidirIteratorIface {
324 	GTypeInterface parent_iface;
325 	GType (*get_g_type) (GeeBidirIterator* self);
326 	GBoxedCopyFunc (*get_g_dup_func) (GeeBidirIterator* self);
327 	GDestroyNotify (*get_g_destroy_func) (GeeBidirIterator* self);
328 	gboolean (*previous) (GeeBidirIterator* self);
329 	gboolean (*has_previous) (GeeBidirIterator* self);
330 	gboolean (*first) (GeeBidirIterator* self);
331 	gboolean (*last) (GeeBidirIterator* self);
332 };
333 
334 struct _GeeBidirListIteratorIface {
335 	GTypeInterface parent_iface;
336 	GType (*get_g_type) (GeeBidirListIterator* self);
337 	GBoxedCopyFunc (*get_g_dup_func) (GeeBidirListIterator* self);
338 	GDestroyNotify (*get_g_destroy_func) (GeeBidirListIterator* self);
339 	void (*insert) (GeeBidirListIterator* self, gconstpointer item);
340 };
341 
342 struct _GeeBidirListIface {
343 	GTypeInterface parent_iface;
344 	GType (*get_g_type) (GeeBidirList* self);
345 	GBoxedCopyFunc (*get_g_dup_func) (GeeBidirList* self);
346 	GDestroyNotify (*get_g_destroy_func) (GeeBidirList* self);
347 	GeeBidirListIterator* (*bidir_list_iterator) (GeeBidirList* self);
348 	GeeBidirList* (*get_read_only_view) (GeeBidirList* self);
349 };
350 
351 struct _GeeReadOnlyBidirList {
352 	GeeReadOnlyList parent_instance;
353 	GeeReadOnlyBidirListPrivate * priv;
354 };
355 
356 struct _GeeReadOnlyBidirListClass {
357 	GeeReadOnlyListClass parent_class;
358 	GeeBidirList* (*get_read_only_view) (GeeReadOnlyBidirList* self);
359 };
360 
361 struct _GeeReadOnlyBidirListPrivate {
362 	GType g_type;
363 	GBoxedCopyFunc g_dup_func;
364 	GDestroyNotify g_destroy_func;
365 };
366 
367 struct _GeeReadOnlyCollectionIterator {
368 	GObject parent_instance;
369 	GeeReadOnlyCollectionIteratorPrivate * priv;
370 	GeeIterator* _iter;
371 };
372 
373 struct _GeeReadOnlyCollectionIteratorClass {
374 	GObjectClass parent_class;
375 };
376 
377 struct _GeeReadOnlyListIterator {
378 	GeeReadOnlyCollectionIterator parent_instance;
379 	GeeReadOnlyListIteratorPrivate * priv;
380 };
381 
382 struct _GeeReadOnlyListIteratorClass {
383 	GeeReadOnlyCollectionIteratorClass parent_class;
384 };
385 
386 struct _GeeReadOnlyBidirListIterator {
387 	GeeReadOnlyListIterator parent_instance;
388 	GeeReadOnlyBidirListIteratorPrivate * priv;
389 };
390 
391 struct _GeeReadOnlyBidirListIteratorClass {
392 	GeeReadOnlyListIteratorClass parent_class;
393 };
394 
395 struct _GeeReadOnlyBidirListIteratorPrivate {
396 	GType g_type;
397 	GBoxedCopyFunc g_dup_func;
398 	GDestroyNotify g_destroy_func;
399 };
400 
401 static gint GeeReadOnlyBidirList_private_offset;
402 static gpointer gee_read_only_bidir_list_parent_class = NULL;
403 static gint GeeReadOnlyBidirListIterator_private_offset;
404 static gpointer gee_read_only_bidir_list_iterator_parent_class = NULL;
405 static GeeBidirIteratorIface * gee_read_only_bidir_list_iterator_gee_bidir_iterator_parent_iface = NULL;
406 static GeeBidirListIteratorIface * gee_read_only_bidir_list_iterator_gee_bidir_list_iterator_parent_iface = NULL;
407 static GeeBidirListIface * gee_read_only_bidir_list_gee_bidir_list_parent_iface = NULL;
408 
409 GType gee_traversable_stream_get_type (void) G_GNUC_CONST;
410 gpointer gee_lazy_ref (gpointer instance);
411 void gee_lazy_unref (gpointer instance);
412 GParamSpec* gee_param_spec_lazy (const gchar* name,
413                                  const gchar* nick,
414                                  const gchar* blurb,
415                                  GType object_type,
416                                  GParamFlags flags);
417 void gee_value_set_lazy (GValue* value,
418                          gpointer v_object);
419 void gee_value_take_lazy (GValue* value,
420                           gpointer v_object);
421 gpointer gee_value_get_lazy (const GValue* value);
422 GType gee_lazy_get_type (void) G_GNUC_CONST;
423 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeLazy, gee_lazy_unref)
424 GType gee_iterator_get_type (void) G_GNUC_CONST;
425 GType gee_traversable_get_type (void) G_GNUC_CONST;
426 GType gee_iterable_get_type (void) G_GNUC_CONST;
427 GType gee_collection_get_type (void) G_GNUC_CONST;
428 G_GNUC_INTERNAL GType gee_read_only_collection_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
429 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeReadOnlyCollection, g_object_unref)
430 GType gee_list_iterator_get_type (void) G_GNUC_CONST;
431 GType gee_list_get_type (void) G_GNUC_CONST;
432 G_GNUC_INTERNAL GType gee_read_only_list_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
433 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeReadOnlyList, g_object_unref)
434 GType gee_bidir_iterator_get_type (void) G_GNUC_CONST;
435 GType gee_bidir_list_iterator_get_type (void) G_GNUC_CONST;
436 GType gee_bidir_list_get_type (void) G_GNUC_CONST;
437 G_GNUC_INTERNAL GType gee_read_only_bidir_list_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
438 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeReadOnlyBidirList, g_object_unref)
439 G_GNUC_INTERNAL GeeReadOnlyBidirList* gee_read_only_bidir_list_new (GType g_type,
440                                                     GBoxedCopyFunc g_dup_func,
441                                                     GDestroyNotify g_destroy_func,
442                                                     GeeBidirList* list);
443 G_GNUC_INTERNAL GeeReadOnlyBidirList* gee_read_only_bidir_list_construct (GType object_type,
444                                                           GType g_type,
445                                                           GBoxedCopyFunc g_dup_func,
446                                                           GDestroyNotify g_destroy_func,
447                                                           GeeBidirList* list);
448 G_GNUC_INTERNAL GeeReadOnlyList* gee_read_only_list_new (GType g_type,
449                                          GBoxedCopyFunc g_dup_func,
450                                          GDestroyNotify g_destroy_func,
451                                          GeeList* list);
452 G_GNUC_INTERNAL GeeReadOnlyList* gee_read_only_list_construct (GType object_type,
453                                                GType g_type,
454                                                GBoxedCopyFunc g_dup_func,
455                                                GDestroyNotify g_destroy_func,
456                                                GeeList* list);
457 static GeeBidirListIterator* gee_read_only_bidir_list_real_bidir_list_iterator (GeeBidirList* base);
458 GeeBidirListIterator* gee_bidir_list_bidir_list_iterator (GeeBidirList* self);
459 static GeeReadOnlyBidirListIterator* gee_read_only_bidir_list_iterator_new (GType g_type,
460                                                                      GBoxedCopyFunc g_dup_func,
461                                                                      GDestroyNotify g_destroy_func,
462                                                                      GeeListIterator* iterator);
463 static GeeReadOnlyBidirListIterator* gee_read_only_bidir_list_iterator_construct (GType object_type,
464                                                                            GType g_type,
465                                                                            GBoxedCopyFunc g_dup_func,
466                                                                            GDestroyNotify g_destroy_func,
467                                                                            GeeListIterator* iterator);
468 GType gee_read_only_collection_iterator_get_type (void) G_GNUC_CONST;
469 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeReadOnlyCollectionIterator, g_object_unref)
470 GType gee_read_only_list_iterator_get_type (void) G_GNUC_CONST;
471 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeReadOnlyListIterator, g_object_unref)
472 static GType gee_read_only_bidir_list_iterator_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
473 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeReadOnlyBidirListIterator, g_object_unref)
474 G_GNUC_INTERNAL GeeBidirList* gee_read_only_bidir_list_get_read_only_view (GeeReadOnlyBidirList* self);
475 G_GNUC_INTERNAL GeeReadOnlyListIterator* gee_read_only_list_iterator_new (GType g_type,
476                                                           GBoxedCopyFunc g_dup_func,
477                                                           GDestroyNotify g_destroy_func,
478                                                           GeeListIterator* iterator);
479 G_GNUC_INTERNAL GeeReadOnlyListIterator* gee_read_only_list_iterator_construct (GType object_type,
480                                                                 GType g_type,
481                                                                 GBoxedCopyFunc g_dup_func,
482                                                                 GDestroyNotify g_destroy_func,
483                                                                 GeeListIterator* iterator);
484 static gboolean gee_read_only_bidir_list_iterator_real_previous (GeeBidirIterator* base);
485 gboolean gee_bidir_iterator_previous (GeeBidirIterator* self);
486 static gboolean gee_read_only_bidir_list_iterator_real_has_previous (GeeBidirIterator* base);
487 gboolean gee_bidir_iterator_has_previous (GeeBidirIterator* self);
488 static gboolean gee_read_only_bidir_list_iterator_real_first (GeeBidirIterator* base);
489 gboolean gee_bidir_iterator_first (GeeBidirIterator* self);
490 static gboolean gee_read_only_bidir_list_iterator_real_last (GeeBidirIterator* base);
491 gboolean gee_bidir_iterator_last (GeeBidirIterator* self);
492 static void gee_read_only_bidir_list_iterator_real_insert (GeeBidirListIterator* base,
493                                                     gconstpointer item);
494 static void _vala_gee_read_only_bidir_list_iterator_get_property (GObject * object,
495                                                            guint property_id,
496                                                            GValue * value,
497                                                            GParamSpec * pspec);
498 static void _vala_gee_read_only_bidir_list_iterator_set_property (GObject * object,
499                                                            guint property_id,
500                                                            const GValue * value,
501                                                            GParamSpec * pspec);
502 static void _vala_gee_read_only_bidir_list_get_property (GObject * object,
503                                                   guint property_id,
504                                                   GValue * value,
505                                                   GParamSpec * pspec);
506 static void _vala_gee_read_only_bidir_list_set_property (GObject * object,
507                                                   guint property_id,
508                                                   const GValue * value,
509                                                   GParamSpec * pspec);
510 
511 static inline gpointer
gee_read_only_bidir_list_get_instance_private(GeeReadOnlyBidirList * self)512 gee_read_only_bidir_list_get_instance_private (GeeReadOnlyBidirList* self)
513 {
514 	return G_STRUCT_MEMBER_P (self, GeeReadOnlyBidirList_private_offset);
515 }
516 
517 /**
518  * Constructs a read-only list that mirrors the content of the specified
519  * list.
520  *
521  * @param list the list to decorate.
522  */
523 G_GNUC_INTERNAL GeeReadOnlyBidirList*
gee_read_only_bidir_list_construct(GType object_type,GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeBidirList * list)524 gee_read_only_bidir_list_construct (GType object_type,
525                                     GType g_type,
526                                     GBoxedCopyFunc g_dup_func,
527                                     GDestroyNotify g_destroy_func,
528                                     GeeBidirList* list)
529 {
530 	GeeReadOnlyBidirList * self = NULL;
531 	g_return_val_if_fail (list != NULL, NULL);
532 	self = (GeeReadOnlyBidirList*) gee_read_only_list_construct (object_type, g_type, (GBoxedCopyFunc) g_dup_func, (GDestroyNotify) g_destroy_func, (GeeList*) list);
533 	self->priv->g_type = g_type;
534 	self->priv->g_dup_func = g_dup_func;
535 	self->priv->g_destroy_func = g_destroy_func;
536 	return self;
537 }
538 
539 G_GNUC_INTERNAL GeeReadOnlyBidirList*
gee_read_only_bidir_list_new(GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeBidirList * list)540 gee_read_only_bidir_list_new (GType g_type,
541                               GBoxedCopyFunc g_dup_func,
542                               GDestroyNotify g_destroy_func,
543                               GeeBidirList* list)
544 {
545 	return gee_read_only_bidir_list_construct (GEE_TYPE_READ_ONLY_BIDIR_LIST, g_type, g_dup_func, g_destroy_func, list);
546 }
547 
548 /**
549  * {@inheritDoc}
550  */
551 static GeeBidirListIterator*
gee_read_only_bidir_list_real_bidir_list_iterator(GeeBidirList * base)552 gee_read_only_bidir_list_real_bidir_list_iterator (GeeBidirList* base)
553 {
554 	GeeReadOnlyBidirList * self;
555 	GeeCollection* _tmp0_;
556 	GeeBidirListIterator* _tmp1_;
557 	GeeBidirListIterator* _tmp2_;
558 	GeeReadOnlyBidirListIterator* _tmp3_;
559 	GeeBidirListIterator* _tmp4_;
560 	GeeBidirListIterator* result = NULL;
561 	self = (GeeReadOnlyBidirList*) base;
562 	_tmp0_ = ((GeeReadOnlyCollection*) self)->_collection;
563 	_tmp1_ = gee_bidir_list_bidir_list_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_BIDIR_LIST, GeeBidirList));
564 	_tmp2_ = _tmp1_;
565 	_tmp3_ = gee_read_only_bidir_list_iterator_new (self->priv->g_type, (GBoxedCopyFunc) self->priv->g_dup_func, (GDestroyNotify) self->priv->g_destroy_func, (GeeListIterator*) _tmp2_);
566 	_tmp4_ = (GeeBidirListIterator*) _tmp3_;
567 	_g_object_unref0 (_tmp2_);
568 	result = _tmp4_;
569 	return result;
570 }
571 
572 G_GNUC_INTERNAL GeeBidirList*
gee_read_only_bidir_list_get_read_only_view(GeeReadOnlyBidirList * self)573 gee_read_only_bidir_list_get_read_only_view (GeeReadOnlyBidirList* self)
574 {
575 	g_return_val_if_fail (self != NULL, NULL);
576 	return GEE_READ_ONLY_BIDIR_LIST_GET_CLASS (self)->get_read_only_view (self);
577 }
578 
579 static gpointer
_g_object_ref0(gpointer self)580 _g_object_ref0 (gpointer self)
581 {
582 	return self ? g_object_ref (self) : NULL;
583 }
584 
585 static GeeBidirList*
gee_read_only_bidir_list_real_get_read_only_view(GeeReadOnlyBidirList * base)586 gee_read_only_bidir_list_real_get_read_only_view (GeeReadOnlyBidirList* base)
587 {
588 	GeeBidirList* result;
589 	GeeReadOnlyBidirList* self;
590 	GeeBidirList* _tmp0_;
591 	self = base;
592 	_tmp0_ = _g_object_ref0 ((GeeBidirList*) self);
593 	result = _tmp0_;
594 	return result;
595 }
596 
597 static inline gpointer
gee_read_only_bidir_list_iterator_get_instance_private(GeeReadOnlyBidirListIterator * self)598 gee_read_only_bidir_list_iterator_get_instance_private (GeeReadOnlyBidirListIterator* self)
599 {
600 	return G_STRUCT_MEMBER_P (self, GeeReadOnlyBidirListIterator_private_offset);
601 }
602 
603 static GeeReadOnlyBidirListIterator*
gee_read_only_bidir_list_iterator_construct(GType object_type,GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeListIterator * iterator)604 gee_read_only_bidir_list_iterator_construct (GType object_type,
605                                              GType g_type,
606                                              GBoxedCopyFunc g_dup_func,
607                                              GDestroyNotify g_destroy_func,
608                                              GeeListIterator* iterator)
609 {
610 	GeeReadOnlyBidirListIterator * self = NULL;
611 	g_return_val_if_fail (iterator != NULL, NULL);
612 	self = (GeeReadOnlyBidirListIterator*) gee_read_only_list_iterator_construct (object_type, g_type, (GBoxedCopyFunc) g_dup_func, (GDestroyNotify) g_destroy_func, iterator);
613 	self->priv->g_type = g_type;
614 	self->priv->g_dup_func = g_dup_func;
615 	self->priv->g_destroy_func = g_destroy_func;
616 	return self;
617 }
618 
619 static GeeReadOnlyBidirListIterator*
gee_read_only_bidir_list_iterator_new(GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeListIterator * iterator)620 gee_read_only_bidir_list_iterator_new (GType g_type,
621                                        GBoxedCopyFunc g_dup_func,
622                                        GDestroyNotify g_destroy_func,
623                                        GeeListIterator* iterator)
624 {
625 	return gee_read_only_bidir_list_iterator_construct (GEE_READ_ONLY_BIDIR_LIST_TYPE_ITERATOR, g_type, g_dup_func, g_destroy_func, iterator);
626 }
627 
628 static gboolean
gee_read_only_bidir_list_iterator_real_previous(GeeBidirIterator * base)629 gee_read_only_bidir_list_iterator_real_previous (GeeBidirIterator* base)
630 {
631 	GeeReadOnlyBidirListIterator * self;
632 	GeeIterator* _tmp0_;
633 	gboolean result = FALSE;
634 	self = (GeeReadOnlyBidirListIterator*) base;
635 	_tmp0_ = ((GeeReadOnlyCollectionIterator*) self)->_iter;
636 	result = gee_bidir_iterator_previous (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_BIDIR_ITERATOR, GeeBidirIterator));
637 	return result;
638 }
639 
640 static gboolean
gee_read_only_bidir_list_iterator_real_has_previous(GeeBidirIterator * base)641 gee_read_only_bidir_list_iterator_real_has_previous (GeeBidirIterator* base)
642 {
643 	GeeReadOnlyBidirListIterator * self;
644 	GeeIterator* _tmp0_;
645 	gboolean result = FALSE;
646 	self = (GeeReadOnlyBidirListIterator*) base;
647 	_tmp0_ = ((GeeReadOnlyCollectionIterator*) self)->_iter;
648 	result = gee_bidir_iterator_has_previous (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_BIDIR_ITERATOR, GeeBidirIterator));
649 	return result;
650 }
651 
652 static gboolean
gee_read_only_bidir_list_iterator_real_first(GeeBidirIterator * base)653 gee_read_only_bidir_list_iterator_real_first (GeeBidirIterator* base)
654 {
655 	GeeReadOnlyBidirListIterator * self;
656 	GeeIterator* _tmp0_;
657 	gboolean result = FALSE;
658 	self = (GeeReadOnlyBidirListIterator*) base;
659 	_tmp0_ = ((GeeReadOnlyCollectionIterator*) self)->_iter;
660 	result = gee_bidir_iterator_first (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_BIDIR_ITERATOR, GeeBidirIterator));
661 	return result;
662 }
663 
664 static gboolean
gee_read_only_bidir_list_iterator_real_last(GeeBidirIterator * base)665 gee_read_only_bidir_list_iterator_real_last (GeeBidirIterator* base)
666 {
667 	GeeReadOnlyBidirListIterator * self;
668 	GeeIterator* _tmp0_;
669 	gboolean result = FALSE;
670 	self = (GeeReadOnlyBidirListIterator*) base;
671 	_tmp0_ = ((GeeReadOnlyCollectionIterator*) self)->_iter;
672 	result = gee_bidir_iterator_last (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_BIDIR_ITERATOR, GeeBidirIterator));
673 	return result;
674 }
675 
676 static void
gee_read_only_bidir_list_iterator_real_insert(GeeBidirListIterator * base,gconstpointer item)677 gee_read_only_bidir_list_iterator_real_insert (GeeBidirListIterator* base,
678                                                gconstpointer item)
679 {
680 	GeeReadOnlyBidirListIterator * self;
681 	self = (GeeReadOnlyBidirListIterator*) base;
682 	g_assert_not_reached ();
683 }
684 
685 static void
gee_read_only_bidir_list_iterator_class_init(GeeReadOnlyBidirListIteratorClass * klass,gpointer klass_data)686 gee_read_only_bidir_list_iterator_class_init (GeeReadOnlyBidirListIteratorClass * klass,
687                                               gpointer klass_data)
688 {
689 	gee_read_only_bidir_list_iterator_parent_class = g_type_class_peek_parent (klass);
690 	g_type_class_adjust_private_offset (klass, &GeeReadOnlyBidirListIterator_private_offset);
691 	G_OBJECT_CLASS (klass)->get_property = _vala_gee_read_only_bidir_list_iterator_get_property;
692 	G_OBJECT_CLASS (klass)->set_property = _vala_gee_read_only_bidir_list_iterator_set_property;
693 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_BIDIR_LIST_ITERATOR_G_TYPE, g_param_spec_gtype ("g-type", "type", "type", G_TYPE_NONE, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
694 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_BIDIR_LIST_ITERATOR_G_DUP_FUNC, g_param_spec_pointer ("g-dup-func", "dup func", "dup func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
695 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_BIDIR_LIST_ITERATOR_G_DESTROY_FUNC, g_param_spec_pointer ("g-destroy-func", "destroy func", "destroy func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
696 }
697 
698 static GType
gee_read_only_bidir_list_iterator_gee_bidir_iterator_get_g_type(GeeReadOnlyBidirListIterator * self)699 gee_read_only_bidir_list_iterator_gee_bidir_iterator_get_g_type (GeeReadOnlyBidirListIterator* self)
700 {
701 	return self->priv->g_type;
702 }
703 
704 static GBoxedCopyFunc
gee_read_only_bidir_list_iterator_gee_bidir_iterator_get_g_dup_func(GeeReadOnlyBidirListIterator * self)705 gee_read_only_bidir_list_iterator_gee_bidir_iterator_get_g_dup_func (GeeReadOnlyBidirListIterator* self)
706 {
707 	return self->priv->g_dup_func;
708 }
709 
710 static GDestroyNotify
gee_read_only_bidir_list_iterator_gee_bidir_iterator_get_g_destroy_func(GeeReadOnlyBidirListIterator * self)711 gee_read_only_bidir_list_iterator_gee_bidir_iterator_get_g_destroy_func (GeeReadOnlyBidirListIterator* self)
712 {
713 	return self->priv->g_destroy_func;
714 }
715 
716 static void
gee_read_only_bidir_list_iterator_gee_bidir_iterator_interface_init(GeeBidirIteratorIface * iface,gpointer iface_data)717 gee_read_only_bidir_list_iterator_gee_bidir_iterator_interface_init (GeeBidirIteratorIface * iface,
718                                                                      gpointer iface_data)
719 {
720 	gee_read_only_bidir_list_iterator_gee_bidir_iterator_parent_iface = g_type_interface_peek_parent (iface);
721 	iface->previous = (gboolean (*) (GeeBidirIterator*)) gee_read_only_bidir_list_iterator_real_previous;
722 	iface->has_previous = (gboolean (*) (GeeBidirIterator*)) gee_read_only_bidir_list_iterator_real_has_previous;
723 	iface->first = (gboolean (*) (GeeBidirIterator*)) gee_read_only_bidir_list_iterator_real_first;
724 	iface->last = (gboolean (*) (GeeBidirIterator*)) gee_read_only_bidir_list_iterator_real_last;
725 	iface->get_g_type = (GType (*) (GeeBidirIterator *)) gee_read_only_bidir_list_iterator_gee_bidir_iterator_get_g_type;
726 	iface->get_g_dup_func = (GBoxedCopyFunc (*) (GeeBidirIterator *)) gee_read_only_bidir_list_iterator_gee_bidir_iterator_get_g_dup_func;
727 	iface->get_g_destroy_func = (GDestroyNotify (*) (GeeBidirIterator *)) gee_read_only_bidir_list_iterator_gee_bidir_iterator_get_g_destroy_func;
728 }
729 
730 static GType
gee_read_only_bidir_list_iterator_gee_bidir_list_iterator_get_g_type(GeeReadOnlyBidirListIterator * self)731 gee_read_only_bidir_list_iterator_gee_bidir_list_iterator_get_g_type (GeeReadOnlyBidirListIterator* self)
732 {
733 	return self->priv->g_type;
734 }
735 
736 static GBoxedCopyFunc
gee_read_only_bidir_list_iterator_gee_bidir_list_iterator_get_g_dup_func(GeeReadOnlyBidirListIterator * self)737 gee_read_only_bidir_list_iterator_gee_bidir_list_iterator_get_g_dup_func (GeeReadOnlyBidirListIterator* self)
738 {
739 	return self->priv->g_dup_func;
740 }
741 
742 static GDestroyNotify
gee_read_only_bidir_list_iterator_gee_bidir_list_iterator_get_g_destroy_func(GeeReadOnlyBidirListIterator * self)743 gee_read_only_bidir_list_iterator_gee_bidir_list_iterator_get_g_destroy_func (GeeReadOnlyBidirListIterator* self)
744 {
745 	return self->priv->g_destroy_func;
746 }
747 
748 static void
gee_read_only_bidir_list_iterator_gee_bidir_list_iterator_interface_init(GeeBidirListIteratorIface * iface,gpointer iface_data)749 gee_read_only_bidir_list_iterator_gee_bidir_list_iterator_interface_init (GeeBidirListIteratorIface * iface,
750                                                                           gpointer iface_data)
751 {
752 	gee_read_only_bidir_list_iterator_gee_bidir_list_iterator_parent_iface = g_type_interface_peek_parent (iface);
753 	iface->insert = (void (*) (GeeBidirListIterator*, gconstpointer)) gee_read_only_bidir_list_iterator_real_insert;
754 	iface->get_g_type = (GType (*) (GeeBidirListIterator *)) gee_read_only_bidir_list_iterator_gee_bidir_list_iterator_get_g_type;
755 	iface->get_g_dup_func = (GBoxedCopyFunc (*) (GeeBidirListIterator *)) gee_read_only_bidir_list_iterator_gee_bidir_list_iterator_get_g_dup_func;
756 	iface->get_g_destroy_func = (GDestroyNotify (*) (GeeBidirListIterator *)) gee_read_only_bidir_list_iterator_gee_bidir_list_iterator_get_g_destroy_func;
757 }
758 
759 static void
gee_read_only_bidir_list_iterator_instance_init(GeeReadOnlyBidirListIterator * self,gpointer klass)760 gee_read_only_bidir_list_iterator_instance_init (GeeReadOnlyBidirListIterator * self,
761                                                  gpointer klass)
762 {
763 	self->priv = gee_read_only_bidir_list_iterator_get_instance_private (self);
764 }
765 
766 static GType
gee_read_only_bidir_list_iterator_get_type(void)767 gee_read_only_bidir_list_iterator_get_type (void)
768 {
769 	static volatile gsize gee_read_only_bidir_list_iterator_type_id__volatile = 0;
770 	if (g_once_init_enter (&gee_read_only_bidir_list_iterator_type_id__volatile)) {
771 		static const GTypeInfo g_define_type_info = { sizeof (GeeReadOnlyBidirListIteratorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_read_only_bidir_list_iterator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeReadOnlyBidirListIterator), 0, (GInstanceInitFunc) gee_read_only_bidir_list_iterator_instance_init, NULL };
772 		static const GInterfaceInfo gee_bidir_iterator_info = { (GInterfaceInitFunc) gee_read_only_bidir_list_iterator_gee_bidir_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
773 		static const GInterfaceInfo gee_bidir_list_iterator_info = { (GInterfaceInitFunc) gee_read_only_bidir_list_iterator_gee_bidir_list_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
774 		GType gee_read_only_bidir_list_iterator_type_id;
775 		gee_read_only_bidir_list_iterator_type_id = g_type_register_static (GEE_READ_ONLY_LIST_TYPE_ITERATOR, "GeeReadOnlyBidirListIterator", &g_define_type_info, 0);
776 		g_type_add_interface_static (gee_read_only_bidir_list_iterator_type_id, GEE_TYPE_BIDIR_ITERATOR, &gee_bidir_iterator_info);
777 		g_type_add_interface_static (gee_read_only_bidir_list_iterator_type_id, GEE_TYPE_BIDIR_LIST_ITERATOR, &gee_bidir_list_iterator_info);
778 		GeeReadOnlyBidirListIterator_private_offset = g_type_add_instance_private (gee_read_only_bidir_list_iterator_type_id, sizeof (GeeReadOnlyBidirListIteratorPrivate));
779 		g_once_init_leave (&gee_read_only_bidir_list_iterator_type_id__volatile, gee_read_only_bidir_list_iterator_type_id);
780 	}
781 	return gee_read_only_bidir_list_iterator_type_id__volatile;
782 }
783 
784 static void
_vala_gee_read_only_bidir_list_iterator_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)785 _vala_gee_read_only_bidir_list_iterator_get_property (GObject * object,
786                                                       guint property_id,
787                                                       GValue * value,
788                                                       GParamSpec * pspec)
789 {
790 	GeeReadOnlyBidirListIterator * self;
791 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_READ_ONLY_BIDIR_LIST_TYPE_ITERATOR, GeeReadOnlyBidirListIterator);
792 	switch (property_id) {
793 		case GEE_READ_ONLY_BIDIR_LIST_ITERATOR_G_TYPE:
794 		g_value_set_gtype (value, self->priv->g_type);
795 		break;
796 		case GEE_READ_ONLY_BIDIR_LIST_ITERATOR_G_DUP_FUNC:
797 		g_value_set_pointer (value, self->priv->g_dup_func);
798 		break;
799 		case GEE_READ_ONLY_BIDIR_LIST_ITERATOR_G_DESTROY_FUNC:
800 		g_value_set_pointer (value, self->priv->g_destroy_func);
801 		break;
802 		default:
803 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
804 		break;
805 	}
806 }
807 
808 static void
_vala_gee_read_only_bidir_list_iterator_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)809 _vala_gee_read_only_bidir_list_iterator_set_property (GObject * object,
810                                                       guint property_id,
811                                                       const GValue * value,
812                                                       GParamSpec * pspec)
813 {
814 	GeeReadOnlyBidirListIterator * self;
815 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_READ_ONLY_BIDIR_LIST_TYPE_ITERATOR, GeeReadOnlyBidirListIterator);
816 	switch (property_id) {
817 		case GEE_READ_ONLY_BIDIR_LIST_ITERATOR_G_TYPE:
818 		self->priv->g_type = g_value_get_gtype (value);
819 		break;
820 		case GEE_READ_ONLY_BIDIR_LIST_ITERATOR_G_DUP_FUNC:
821 		self->priv->g_dup_func = g_value_get_pointer (value);
822 		break;
823 		case GEE_READ_ONLY_BIDIR_LIST_ITERATOR_G_DESTROY_FUNC:
824 		self->priv->g_destroy_func = g_value_get_pointer (value);
825 		break;
826 		default:
827 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
828 		break;
829 	}
830 }
831 
832 static void
gee_read_only_bidir_list_class_init(GeeReadOnlyBidirListClass * klass,gpointer klass_data)833 gee_read_only_bidir_list_class_init (GeeReadOnlyBidirListClass * klass,
834                                      gpointer klass_data)
835 {
836 	gee_read_only_bidir_list_parent_class = g_type_class_peek_parent (klass);
837 	g_type_class_adjust_private_offset (klass, &GeeReadOnlyBidirList_private_offset);
838 	GEE_READ_ONLY_BIDIR_LIST_CLASS (klass)->get_read_only_view = gee_read_only_bidir_list_real_get_read_only_view;
839 	G_OBJECT_CLASS (klass)->get_property = _vala_gee_read_only_bidir_list_get_property;
840 	G_OBJECT_CLASS (klass)->set_property = _vala_gee_read_only_bidir_list_set_property;
841 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_BIDIR_LIST_G_TYPE, g_param_spec_gtype ("g-type", "type", "type", G_TYPE_NONE, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
842 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_BIDIR_LIST_G_DUP_FUNC, g_param_spec_pointer ("g-dup-func", "dup func", "dup func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
843 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_BIDIR_LIST_G_DESTROY_FUNC, g_param_spec_pointer ("g-destroy-func", "destroy func", "destroy func", G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
844 	/**
845 	 * The read-only view of this list.
846 	 */
847 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_BIDIR_LIST_READ_ONLY_VIEW_PROPERTY, gee_read_only_bidir_list_properties[GEE_READ_ONLY_BIDIR_LIST_READ_ONLY_VIEW_PROPERTY] = g_param_spec_object ("read-only-view", "read-only-view", "read-only-view", GEE_TYPE_BIDIR_LIST, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
848 }
849 
850 static GType
gee_read_only_bidir_list_gee_bidir_list_get_g_type(GeeReadOnlyBidirList * self)851 gee_read_only_bidir_list_gee_bidir_list_get_g_type (GeeReadOnlyBidirList* self)
852 {
853 	return self->priv->g_type;
854 }
855 
856 static GBoxedCopyFunc
gee_read_only_bidir_list_gee_bidir_list_get_g_dup_func(GeeReadOnlyBidirList * self)857 gee_read_only_bidir_list_gee_bidir_list_get_g_dup_func (GeeReadOnlyBidirList* self)
858 {
859 	return self->priv->g_dup_func;
860 }
861 
862 static GDestroyNotify
gee_read_only_bidir_list_gee_bidir_list_get_g_destroy_func(GeeReadOnlyBidirList * self)863 gee_read_only_bidir_list_gee_bidir_list_get_g_destroy_func (GeeReadOnlyBidirList* self)
864 {
865 	return self->priv->g_destroy_func;
866 }
867 
868 static void
gee_read_only_bidir_list_gee_bidir_list_interface_init(GeeBidirListIface * iface,gpointer iface_data)869 gee_read_only_bidir_list_gee_bidir_list_interface_init (GeeBidirListIface * iface,
870                                                         gpointer iface_data)
871 {
872 	gee_read_only_bidir_list_gee_bidir_list_parent_iface = g_type_interface_peek_parent (iface);
873 	iface->bidir_list_iterator = (GeeBidirListIterator* (*) (GeeBidirList*)) gee_read_only_bidir_list_real_bidir_list_iterator;
874 	iface->get_g_type = (GType (*) (GeeBidirList *)) gee_read_only_bidir_list_gee_bidir_list_get_g_type;
875 	iface->get_g_dup_func = (GBoxedCopyFunc (*) (GeeBidirList *)) gee_read_only_bidir_list_gee_bidir_list_get_g_dup_func;
876 	iface->get_g_destroy_func = (GDestroyNotify (*) (GeeBidirList *)) gee_read_only_bidir_list_gee_bidir_list_get_g_destroy_func;
877 	iface->get_read_only_view = (GeeBidirList* (*) (GeeBidirList *)) gee_read_only_bidir_list_get_read_only_view;
878 }
879 
880 static void
gee_read_only_bidir_list_instance_init(GeeReadOnlyBidirList * self,gpointer klass)881 gee_read_only_bidir_list_instance_init (GeeReadOnlyBidirList * self,
882                                         gpointer klass)
883 {
884 	self->priv = gee_read_only_bidir_list_get_instance_private (self);
885 }
886 
887 G_GNUC_INTERNAL GType
gee_read_only_bidir_list_get_type(void)888 gee_read_only_bidir_list_get_type (void)
889 {
890 	static volatile gsize gee_read_only_bidir_list_type_id__volatile = 0;
891 	if (g_once_init_enter (&gee_read_only_bidir_list_type_id__volatile)) {
892 		static const GTypeInfo g_define_type_info = { sizeof (GeeReadOnlyBidirListClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_read_only_bidir_list_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeReadOnlyBidirList), 0, (GInstanceInitFunc) gee_read_only_bidir_list_instance_init, NULL };
893 		static const GInterfaceInfo gee_bidir_list_info = { (GInterfaceInitFunc) gee_read_only_bidir_list_gee_bidir_list_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
894 		GType gee_read_only_bidir_list_type_id;
895 		gee_read_only_bidir_list_type_id = g_type_register_static (GEE_TYPE_READ_ONLY_LIST, "GeeReadOnlyBidirList", &g_define_type_info, 0);
896 		g_type_add_interface_static (gee_read_only_bidir_list_type_id, GEE_TYPE_BIDIR_LIST, &gee_bidir_list_info);
897 		GeeReadOnlyBidirList_private_offset = g_type_add_instance_private (gee_read_only_bidir_list_type_id, sizeof (GeeReadOnlyBidirListPrivate));
898 		g_once_init_leave (&gee_read_only_bidir_list_type_id__volatile, gee_read_only_bidir_list_type_id);
899 	}
900 	return gee_read_only_bidir_list_type_id__volatile;
901 }
902 
903 static void
_vala_gee_read_only_bidir_list_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)904 _vala_gee_read_only_bidir_list_get_property (GObject * object,
905                                              guint property_id,
906                                              GValue * value,
907                                              GParamSpec * pspec)
908 {
909 	GeeReadOnlyBidirList * self;
910 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_READ_ONLY_BIDIR_LIST, GeeReadOnlyBidirList);
911 	switch (property_id) {
912 		case GEE_READ_ONLY_BIDIR_LIST_READ_ONLY_VIEW_PROPERTY:
913 		g_value_take_object (value, gee_read_only_bidir_list_get_read_only_view (self));
914 		break;
915 		case GEE_READ_ONLY_BIDIR_LIST_G_TYPE:
916 		g_value_set_gtype (value, self->priv->g_type);
917 		break;
918 		case GEE_READ_ONLY_BIDIR_LIST_G_DUP_FUNC:
919 		g_value_set_pointer (value, self->priv->g_dup_func);
920 		break;
921 		case GEE_READ_ONLY_BIDIR_LIST_G_DESTROY_FUNC:
922 		g_value_set_pointer (value, self->priv->g_destroy_func);
923 		break;
924 		default:
925 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
926 		break;
927 	}
928 }
929 
930 static void
_vala_gee_read_only_bidir_list_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)931 _vala_gee_read_only_bidir_list_set_property (GObject * object,
932                                              guint property_id,
933                                              const GValue * value,
934                                              GParamSpec * pspec)
935 {
936 	GeeReadOnlyBidirList * self;
937 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_READ_ONLY_BIDIR_LIST, GeeReadOnlyBidirList);
938 	switch (property_id) {
939 		case GEE_READ_ONLY_BIDIR_LIST_G_TYPE:
940 		self->priv->g_type = g_value_get_gtype (value);
941 		break;
942 		case GEE_READ_ONLY_BIDIR_LIST_G_DUP_FUNC:
943 		self->priv->g_dup_func = g_value_get_pointer (value);
944 		break;
945 		case GEE_READ_ONLY_BIDIR_LIST_G_DESTROY_FUNC:
946 		self->priv->g_destroy_func = g_value_get_pointer (value);
947 		break;
948 		default:
949 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
950 		break;
951 	}
952 }
953 
954