1 /* readonlylist.c generated by valac 0.19.0.4-d6d4, the Vala compiler
2  * generated from readonlylist.vala, do not modify */
3 
4 /* readonlylist.vala
5  *
6  * Copyright (C) 2007-2008  Jürg Billeter
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  * 	Jürg Billeter <j@bitron.ch>
24  */
25 
26 #include <glib.h>
27 #include <glib-object.h>
28 
29 
30 #define GEE_TYPE_ITERABLE (gee_iterable_get_type ())
31 #define GEE_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERABLE, GeeIterable))
32 #define GEE_IS_ITERABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERABLE))
33 #define GEE_ITERABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERABLE, GeeIterableIface))
34 
35 typedef struct _GeeIterable GeeIterable;
36 typedef struct _GeeIterableIface GeeIterableIface;
37 
38 #define GEE_TYPE_ITERATOR (gee_iterator_get_type ())
39 #define GEE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_ITERATOR, GeeIterator))
40 #define GEE_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_ITERATOR))
41 #define GEE_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_ITERATOR, GeeIteratorIface))
42 
43 typedef struct _GeeIterator GeeIterator;
44 typedef struct _GeeIteratorIface GeeIteratorIface;
45 
46 #define GEE_TYPE_COLLECTION (gee_collection_get_type ())
47 #define GEE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_COLLECTION, GeeCollection))
48 #define GEE_IS_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_COLLECTION))
49 #define GEE_COLLECTION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_COLLECTION, GeeCollectionIface))
50 
51 typedef struct _GeeCollection GeeCollection;
52 typedef struct _GeeCollectionIface GeeCollectionIface;
53 
54 #define GEE_TYPE_READ_ONLY_COLLECTION (gee_read_only_collection_get_type ())
55 #define GEE_READ_ONLY_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_READ_ONLY_COLLECTION, GeeReadOnlyCollection))
56 #define GEE_READ_ONLY_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_READ_ONLY_COLLECTION, GeeReadOnlyCollectionClass))
57 #define GEE_IS_READ_ONLY_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_READ_ONLY_COLLECTION))
58 #define GEE_IS_READ_ONLY_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_READ_ONLY_COLLECTION))
59 #define GEE_READ_ONLY_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_READ_ONLY_COLLECTION, GeeReadOnlyCollectionClass))
60 
61 typedef struct _GeeReadOnlyCollection GeeReadOnlyCollection;
62 typedef struct _GeeReadOnlyCollectionClass GeeReadOnlyCollectionClass;
63 typedef struct _GeeReadOnlyCollectionPrivate GeeReadOnlyCollectionPrivate;
64 
65 #define GEE_TYPE_LIST (gee_list_get_type ())
66 #define GEE_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_LIST, GeeList))
67 #define GEE_IS_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_LIST))
68 #define GEE_LIST_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_LIST, GeeListIface))
69 
70 typedef struct _GeeList GeeList;
71 typedef struct _GeeListIface GeeListIface;
72 
73 #define GEE_TYPE_BIDIR_ITERATOR (gee_bidir_iterator_get_type ())
74 #define GEE_BIDIR_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_BIDIR_ITERATOR, GeeBidirIterator))
75 #define GEE_IS_BIDIR_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_BIDIR_ITERATOR))
76 #define GEE_BIDIR_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_BIDIR_ITERATOR, GeeBidirIteratorIface))
77 
78 typedef struct _GeeBidirIterator GeeBidirIterator;
79 typedef struct _GeeBidirIteratorIface GeeBidirIteratorIface;
80 
81 #define GEE_TYPE_LIST_ITERATOR (gee_list_iterator_get_type ())
82 #define GEE_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_LIST_ITERATOR, GeeListIterator))
83 #define GEE_IS_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_LIST_ITERATOR))
84 #define GEE_LIST_ITERATOR_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_LIST_ITERATOR, GeeListIteratorIface))
85 
86 typedef struct _GeeListIterator GeeListIterator;
87 typedef struct _GeeListIteratorIface GeeListIteratorIface;
88 
89 #define GEE_TYPE_READ_ONLY_LIST (gee_read_only_list_get_type ())
90 #define GEE_READ_ONLY_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_READ_ONLY_LIST, GeeReadOnlyList))
91 #define GEE_READ_ONLY_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_READ_ONLY_LIST, GeeReadOnlyListClass))
92 #define GEE_IS_READ_ONLY_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_READ_ONLY_LIST))
93 #define GEE_IS_READ_ONLY_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_READ_ONLY_LIST))
94 #define GEE_READ_ONLY_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_READ_ONLY_LIST, GeeReadOnlyListClass))
95 
96 typedef struct _GeeReadOnlyList GeeReadOnlyList;
97 typedef struct _GeeReadOnlyListClass GeeReadOnlyListClass;
98 typedef struct _GeeReadOnlyListPrivate GeeReadOnlyListPrivate;
99 
100 #define GEE_READ_ONLY_COLLECTION_TYPE_ITERATOR (gee_read_only_collection_iterator_get_type ())
101 #define GEE_READ_ONLY_COLLECTION_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_READ_ONLY_COLLECTION_TYPE_ITERATOR, GeeReadOnlyCollectionIterator))
102 #define GEE_READ_ONLY_COLLECTION_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_READ_ONLY_COLLECTION_TYPE_ITERATOR, GeeReadOnlyCollectionIteratorClass))
103 #define GEE_READ_ONLY_COLLECTION_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_READ_ONLY_COLLECTION_TYPE_ITERATOR))
104 #define GEE_READ_ONLY_COLLECTION_IS_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_READ_ONLY_COLLECTION_TYPE_ITERATOR))
105 #define GEE_READ_ONLY_COLLECTION_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_READ_ONLY_COLLECTION_TYPE_ITERATOR, GeeReadOnlyCollectionIteratorClass))
106 
107 typedef struct _GeeReadOnlyCollectionIterator GeeReadOnlyCollectionIterator;
108 typedef struct _GeeReadOnlyCollectionIteratorClass GeeReadOnlyCollectionIteratorClass;
109 
110 #define GEE_READ_ONLY_LIST_TYPE_ITERATOR (gee_read_only_list_iterator_get_type ())
111 #define GEE_READ_ONLY_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_READ_ONLY_LIST_TYPE_ITERATOR, GeeReadOnlyListIterator))
112 #define GEE_READ_ONLY_LIST_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_READ_ONLY_LIST_TYPE_ITERATOR, GeeReadOnlyListIteratorClass))
113 #define GEE_READ_ONLY_LIST_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_READ_ONLY_LIST_TYPE_ITERATOR))
114 #define GEE_READ_ONLY_LIST_IS_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_READ_ONLY_LIST_TYPE_ITERATOR))
115 #define GEE_READ_ONLY_LIST_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_READ_ONLY_LIST_TYPE_ITERATOR, GeeReadOnlyListIteratorClass))
116 
117 typedef struct _GeeReadOnlyListIterator GeeReadOnlyListIterator;
118 typedef struct _GeeReadOnlyListIteratorClass GeeReadOnlyListIteratorClass;
119 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
120 typedef struct _GeeReadOnlyCollectionIteratorPrivate GeeReadOnlyCollectionIteratorPrivate;
121 typedef struct _GeeReadOnlyListIteratorPrivate GeeReadOnlyListIteratorPrivate;
122 
123 struct _GeeIteratorIface {
124 	GTypeInterface parent_iface;
125 	gboolean (*next) (GeeIterator* self);
126 	gboolean (*has_next) (GeeIterator* self);
127 	gboolean (*first) (GeeIterator* self);
128 	gpointer (*get) (GeeIterator* self);
129 	void (*remove) (GeeIterator* self);
130 };
131 
132 struct _GeeIterableIface {
133 	GTypeInterface parent_iface;
134 	GeeIterator* (*iterator) (GeeIterable* self);
135 	GType (*get_element_type) (GeeIterable* self);
136 };
137 
138 struct _GeeCollectionIface {
139 	GTypeInterface parent_iface;
140 	gboolean (*contains) (GeeCollection* self, gconstpointer item);
141 	gboolean (*add) (GeeCollection* self, gconstpointer item);
142 	gboolean (*remove) (GeeCollection* self, gconstpointer item);
143 	void (*clear) (GeeCollection* self);
144 	gboolean (*add_all) (GeeCollection* self, GeeCollection* collection);
145 	gboolean (*contains_all) (GeeCollection* self, GeeCollection* collection);
146 	gboolean (*remove_all) (GeeCollection* self, GeeCollection* collection);
147 	gboolean (*retain_all) (GeeCollection* self, GeeCollection* collection);
148 	gpointer* (*to_array) (GeeCollection* self, int* result_length1);
149 	gint (*get_size) (GeeCollection* self);
150 	gboolean (*get_is_empty) (GeeCollection* self);
151 	GeeCollection* (*get_read_only_view) (GeeCollection* self);
152 };
153 
154 struct _GeeReadOnlyCollection {
155 	GObject parent_instance;
156 	GeeReadOnlyCollectionPrivate * priv;
157 	GeeCollection* _collection;
158 };
159 
160 struct _GeeReadOnlyCollectionClass {
161 	GObjectClass parent_class;
162 	GeeCollection* (*get_read_only_view) (GeeReadOnlyCollection* self);
163 };
164 
165 struct _GeeBidirIteratorIface {
166 	GTypeInterface parent_iface;
167 	gboolean (*previous) (GeeBidirIterator* self);
168 	gboolean (*has_previous) (GeeBidirIterator* self);
169 	gboolean (*last) (GeeBidirIterator* self);
170 };
171 
172 struct _GeeListIteratorIface {
173 	GTypeInterface parent_iface;
174 	void (*set) (GeeListIterator* self, gconstpointer item);
175 	void (*insert) (GeeListIterator* self, gconstpointer item);
176 	void (*add) (GeeListIterator* self, gconstpointer item);
177 	gint (*index) (GeeListIterator* self);
178 };
179 
180 struct _GeeListIface {
181 	GTypeInterface parent_iface;
182 	GeeListIterator* (*list_iterator) (GeeList* self);
183 	gpointer (*get) (GeeList* self, gint index);
184 	void (*set) (GeeList* self, gint index, gconstpointer item);
185 	gint (*index_of) (GeeList* self, gconstpointer item);
186 	void (*insert) (GeeList* self, gint index, gconstpointer item);
187 	gpointer (*remove_at) (GeeList* self, gint index);
188 	GeeList* (*slice) (GeeList* self, gint start, gint stop);
189 	gpointer (*first) (GeeList* self);
190 	gpointer (*last) (GeeList* self);
191 	void (*insert_all) (GeeList* self, gint index, GeeCollection* collection);
192 	void (*sort) (GeeList* self, GCompareFunc compare_func);
193 	GeeList* (*get_read_only_view) (GeeList* self);
194 };
195 
196 struct _GeeReadOnlyList {
197 	GeeReadOnlyCollection parent_instance;
198 	GeeReadOnlyListPrivate * priv;
199 };
200 
201 struct _GeeReadOnlyListClass {
202 	GeeReadOnlyCollectionClass parent_class;
203 	GeeList* (*get_read_only_view) (GeeReadOnlyList* self);
204 };
205 
206 struct _GeeReadOnlyListPrivate {
207 	GType g_type;
208 	GBoxedCopyFunc g_dup_func;
209 	GDestroyNotify g_destroy_func;
210 };
211 
212 struct _GeeReadOnlyCollectionIterator {
213 	GObject parent_instance;
214 	GeeReadOnlyCollectionIteratorPrivate * priv;
215 	GeeIterator* _iter;
216 };
217 
218 struct _GeeReadOnlyCollectionIteratorClass {
219 	GObjectClass parent_class;
220 };
221 
222 struct _GeeReadOnlyListIterator {
223 	GeeReadOnlyCollectionIterator parent_instance;
224 	GeeReadOnlyListIteratorPrivate * priv;
225 };
226 
227 struct _GeeReadOnlyListIteratorClass {
228 	GeeReadOnlyCollectionIteratorClass parent_class;
229 };
230 
231 struct _GeeReadOnlyListIteratorPrivate {
232 	GType g_type;
233 	GBoxedCopyFunc g_dup_func;
234 	GDestroyNotify g_destroy_func;
235 };
236 
237 
238 static gpointer gee_read_only_list_parent_class = NULL;
239 static gpointer gee_read_only_list_iterator_parent_class = NULL;
240 static GeeBidirIteratorIface* gee_read_only_list_iterator_gee_bidir_iterator_parent_iface = NULL;
241 static GeeListIteratorIface* gee_read_only_list_iterator_gee_list_iterator_parent_iface = NULL;
242 static GeeListIface* gee_read_only_list_gee_list_parent_iface = NULL;
243 
244 GType gee_iterator_get_type (void) G_GNUC_CONST;
245 GType gee_iterable_get_type (void) G_GNUC_CONST;
246 GType gee_collection_get_type (void) G_GNUC_CONST;
247 GType gee_read_only_collection_get_type (void) G_GNUC_CONST;
248 GType gee_bidir_iterator_get_type (void) G_GNUC_CONST;
249 GType gee_list_iterator_get_type (void) G_GNUC_CONST;
250 GType gee_list_get_type (void) G_GNUC_CONST;
251 GType gee_read_only_list_get_type (void) G_GNUC_CONST;
252 #define GEE_READ_ONLY_LIST_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_TYPE_READ_ONLY_LIST, GeeReadOnlyListPrivate))
253 enum  {
254 	GEE_READ_ONLY_LIST_DUMMY_PROPERTY,
255 	GEE_READ_ONLY_LIST_G_TYPE,
256 	GEE_READ_ONLY_LIST_G_DUP_FUNC,
257 	GEE_READ_ONLY_LIST_G_DESTROY_FUNC,
258 	GEE_READ_ONLY_LIST_READ_ONLY_VIEW
259 };
260 GeeReadOnlyList* gee_read_only_list_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeList* list);
261 GeeReadOnlyList* gee_read_only_list_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeList* list);
262 GeeReadOnlyCollection* gee_read_only_collection_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeCollection* collection);
263 GeeReadOnlyCollection* gee_read_only_collection_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeCollection* collection);
264 static GeeListIterator* gee_read_only_list_real_list_iterator (GeeList* base);
265 GeeListIterator* gee_list_list_iterator (GeeList* self);
266 static GeeReadOnlyListIterator* gee_read_only_list_iterator_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeListIterator* iterator);
267 static GeeReadOnlyListIterator* gee_read_only_list_iterator_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeListIterator* iterator);
268 GType gee_read_only_collection_iterator_get_type (void) G_GNUC_CONST;
269 static GType gee_read_only_list_iterator_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
270 static gint gee_read_only_list_real_index_of (GeeList* base, gconstpointer item);
271 gint gee_list_index_of (GeeList* self, gconstpointer item);
272 static void gee_read_only_list_real_insert (GeeList* base, gint index, gconstpointer item);
273 static gpointer gee_read_only_list_real_remove_at (GeeList* base, gint index);
274 static gpointer gee_read_only_list_real_get (GeeList* base, gint index);
275 gpointer gee_list_get (GeeList* self, gint index);
276 static void gee_read_only_list_real_set (GeeList* base, gint index, gconstpointer o);
277 static GeeList* gee_read_only_list_real_slice (GeeList* base, gint start, gint stop);
278 static gpointer gee_read_only_list_real_first (GeeList* base);
279 gpointer gee_list_first (GeeList* self);
280 static gpointer gee_read_only_list_real_last (GeeList* base);
281 gpointer gee_list_last (GeeList* self);
282 static void gee_read_only_list_real_insert_all (GeeList* base, gint index, GeeCollection* collection);
283 static void gee_read_only_list_real_sort (GeeList* base, GCompareFunc compare);
284 GeeList* gee_read_only_list_get_read_only_view (GeeReadOnlyList* self);
285 #define GEE_READ_ONLY_LIST_ITERATOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEE_READ_ONLY_LIST_TYPE_ITERATOR, GeeReadOnlyListIteratorPrivate))
286 enum  {
287 	GEE_READ_ONLY_LIST_ITERATOR_DUMMY_PROPERTY,
288 	GEE_READ_ONLY_LIST_ITERATOR_G_TYPE,
289 	GEE_READ_ONLY_LIST_ITERATOR_G_DUP_FUNC,
290 	GEE_READ_ONLY_LIST_ITERATOR_G_DESTROY_FUNC
291 };
292 GeeReadOnlyCollectionIterator* gee_read_only_collection_iterator_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeIterator* iterator);
293 GeeReadOnlyCollectionIterator* gee_read_only_collection_iterator_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeIterator* iterator);
294 static gboolean gee_read_only_list_iterator_real_previous (GeeBidirIterator* base);
295 gboolean gee_bidir_iterator_previous (GeeBidirIterator* self);
296 static gboolean gee_read_only_list_iterator_real_has_previous (GeeBidirIterator* base);
297 gboolean gee_bidir_iterator_has_previous (GeeBidirIterator* self);
298 static gboolean gee_read_only_list_iterator_real_last (GeeBidirIterator* base);
299 gboolean gee_bidir_iterator_last (GeeBidirIterator* self);
300 static void gee_read_only_list_iterator_real_set (GeeListIterator* base, gconstpointer item);
301 static void gee_read_only_list_iterator_real_insert (GeeListIterator* base, gconstpointer item);
302 static void gee_read_only_list_iterator_real_add (GeeListIterator* base, gconstpointer item);
303 static gint gee_read_only_list_iterator_real_index (GeeListIterator* base);
304 gint gee_list_iterator_index (GeeListIterator* self);
305 static void _vala_gee_read_only_list_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
306 static void _vala_gee_read_only_list_iterator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
307 static void _vala_gee_read_only_list_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
308 static void _vala_gee_read_only_list_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
309 
310 
311 /**
312  * Constructs a read-only list that mirrors the content of the specified
313  * list.
314  *
315  * @param list the list to decorate.
316  */
gee_read_only_list_construct(GType object_type,GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeList * list)317 GeeReadOnlyList* gee_read_only_list_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeList* list) {
318 	GeeReadOnlyList * self = NULL;
319 	GeeList* _tmp0_;
320 	g_return_val_if_fail (list != NULL, NULL);
321 	_tmp0_ = list;
322 	self = (GeeReadOnlyList*) gee_read_only_collection_construct (object_type, g_type, (GBoxedCopyFunc) g_dup_func, g_destroy_func, (GeeCollection*) _tmp0_);
323 	self->priv->g_type = g_type;
324 	self->priv->g_dup_func = g_dup_func;
325 	self->priv->g_destroy_func = g_destroy_func;
326 	return self;
327 }
328 
329 
gee_read_only_list_new(GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeList * list)330 GeeReadOnlyList* gee_read_only_list_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeList* list) {
331 	return gee_read_only_list_construct (GEE_TYPE_READ_ONLY_LIST, g_type, g_dup_func, g_destroy_func, list);
332 }
333 
334 
335 /**
336  * {@inheritDoc}
337  */
gee_read_only_list_real_list_iterator(GeeList * base)338 static GeeListIterator* gee_read_only_list_real_list_iterator (GeeList* base) {
339 	GeeReadOnlyList * self;
340 	GeeListIterator* result = NULL;
341 	GeeCollection* _tmp0_;
342 	GeeListIterator* _tmp1_ = NULL;
343 	GeeListIterator* _tmp2_;
344 	GeeReadOnlyListIterator* _tmp3_;
345 	GeeListIterator* _tmp4_;
346 	self = (GeeReadOnlyList*) base;
347 	_tmp0_ = ((GeeReadOnlyCollection*) self)->_collection;
348 	_tmp1_ = gee_list_list_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_LIST, GeeList));
349 	_tmp2_ = _tmp1_;
350 	_tmp3_ = gee_read_only_list_iterator_new (self->priv->g_type, (GBoxedCopyFunc) self->priv->g_dup_func, self->priv->g_destroy_func, _tmp2_);
351 	_tmp4_ = (GeeListIterator*) _tmp3_;
352 	_g_object_unref0 (_tmp2_);
353 	result = _tmp4_;
354 	return result;
355 }
356 
357 
358 /**
359  * {@inheritDoc}
360  */
gee_read_only_list_real_index_of(GeeList * base,gconstpointer item)361 static gint gee_read_only_list_real_index_of (GeeList* base, gconstpointer item) {
362 	GeeReadOnlyList * self;
363 	gint result = 0;
364 	GeeCollection* _tmp0_;
365 	gconstpointer _tmp1_;
366 	gint _tmp2_ = 0;
367 	self = (GeeReadOnlyList*) base;
368 	_tmp0_ = ((GeeReadOnlyCollection*) self)->_collection;
369 	_tmp1_ = item;
370 	_tmp2_ = gee_list_index_of (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_LIST, GeeList), _tmp1_);
371 	result = _tmp2_;
372 	return result;
373 }
374 
375 
376 /**
377  * Unimplemented method (read only list).
378  */
gee_read_only_list_real_insert(GeeList * base,gint index,gconstpointer item)379 static void gee_read_only_list_real_insert (GeeList* base, gint index, gconstpointer item) {
380 	GeeReadOnlyList * self;
381 	self = (GeeReadOnlyList*) base;
382 	g_assert_not_reached ();
383 }
384 
385 
386 /**
387  * Unimplemented method (read only list).
388  */
gee_read_only_list_real_remove_at(GeeList * base,gint index)389 static gpointer gee_read_only_list_real_remove_at (GeeList* base, gint index) {
390 	GeeReadOnlyList * self;
391 	gpointer result = NULL;
392 	self = (GeeReadOnlyList*) base;
393 	g_assert_not_reached ();
394 	return result;
395 }
396 
397 
398 /**
399  * {@inheritDoc}
400  */
gee_read_only_list_real_get(GeeList * base,gint index)401 static gpointer gee_read_only_list_real_get (GeeList* base, gint index) {
402 	GeeReadOnlyList * self;
403 	gpointer result = NULL;
404 	GeeCollection* _tmp0_;
405 	gint _tmp1_;
406 	gpointer _tmp2_ = NULL;
407 	self = (GeeReadOnlyList*) base;
408 	_tmp0_ = ((GeeReadOnlyCollection*) self)->_collection;
409 	_tmp1_ = index;
410 	_tmp2_ = gee_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_LIST, GeeList), _tmp1_);
411 	result = _tmp2_;
412 	return result;
413 }
414 
415 
416 /**
417  * Unimplemented method (read only list).
418  */
gee_read_only_list_real_set(GeeList * base,gint index,gconstpointer o)419 static void gee_read_only_list_real_set (GeeList* base, gint index, gconstpointer o) {
420 	GeeReadOnlyList * self;
421 	self = (GeeReadOnlyList*) base;
422 	g_assert_not_reached ();
423 }
424 
425 
426 /**
427  * Unimplemented method (read only list).
428  */
gee_read_only_list_real_slice(GeeList * base,gint start,gint stop)429 static GeeList* gee_read_only_list_real_slice (GeeList* base, gint start, gint stop) {
430 	GeeReadOnlyList * self;
431 	GeeList* result = NULL;
432 	self = (GeeReadOnlyList*) base;
433 	g_assert_not_reached ();
434 	return result;
435 }
436 
437 
438 /**
439  * {@inheritDoc}
440  */
gee_read_only_list_real_first(GeeList * base)441 static gpointer gee_read_only_list_real_first (GeeList* base) {
442 	GeeReadOnlyList * self;
443 	gpointer result = NULL;
444 	GeeCollection* _tmp0_;
445 	gpointer _tmp1_ = NULL;
446 	self = (GeeReadOnlyList*) base;
447 	_tmp0_ = ((GeeReadOnlyCollection*) self)->_collection;
448 	_tmp1_ = gee_list_first (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_LIST, GeeList));
449 	result = _tmp1_;
450 	return result;
451 }
452 
453 
454 /**
455  * {@inheritDoc}
456  */
gee_read_only_list_real_last(GeeList * base)457 static gpointer gee_read_only_list_real_last (GeeList* base) {
458 	GeeReadOnlyList * self;
459 	gpointer result = NULL;
460 	GeeCollection* _tmp0_;
461 	gpointer _tmp1_ = NULL;
462 	self = (GeeReadOnlyList*) base;
463 	_tmp0_ = ((GeeReadOnlyCollection*) self)->_collection;
464 	_tmp1_ = gee_list_last (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_LIST, GeeList));
465 	result = _tmp1_;
466 	return result;
467 }
468 
469 
470 /**
471  * Unimplemented method (read only list).
472  */
gee_read_only_list_real_insert_all(GeeList * base,gint index,GeeCollection * collection)473 static void gee_read_only_list_real_insert_all (GeeList* base, gint index, GeeCollection* collection) {
474 	GeeReadOnlyList * self;
475 	self = (GeeReadOnlyList*) base;
476 	g_return_if_fail (collection != NULL);
477 	g_assert_not_reached ();
478 }
479 
480 
481 /**
482  * {@inheritDoc}
483  */
gee_read_only_list_real_sort(GeeList * base,GCompareFunc compare)484 static void gee_read_only_list_real_sort (GeeList* base, GCompareFunc compare) {
485 	GeeReadOnlyList * self;
486 	self = (GeeReadOnlyList*) base;
487 	g_assert_not_reached ();
488 }
489 
490 
gee_read_only_list_get_read_only_view(GeeReadOnlyList * self)491 GeeList* gee_read_only_list_get_read_only_view (GeeReadOnlyList* self) {
492 	g_return_val_if_fail (self != NULL, NULL);
493 	return GEE_READ_ONLY_LIST_GET_CLASS (self)->get_read_only_view (self);
494 }
495 
496 
_g_object_ref0(gpointer self)497 static gpointer _g_object_ref0 (gpointer self) {
498 	return self ? g_object_ref (self) : NULL;
499 }
500 
501 
gee_read_only_list_real_get_read_only_view(GeeReadOnlyList * base)502 static GeeList* gee_read_only_list_real_get_read_only_view (GeeReadOnlyList* base) {
503 	GeeList* result;
504 	GeeReadOnlyList* self;
505 	GeeList* _tmp0_;
506 	self = base;
507 	_tmp0_ = _g_object_ref0 ((GeeList*) self);
508 	result = _tmp0_;
509 	return result;
510 }
511 
512 
gee_read_only_list_iterator_construct(GType object_type,GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeListIterator * iterator)513 static GeeReadOnlyListIterator* gee_read_only_list_iterator_construct (GType object_type, GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeListIterator* iterator) {
514 	GeeReadOnlyListIterator * self = NULL;
515 	GeeListIterator* _tmp0_;
516 	g_return_val_if_fail (iterator != NULL, NULL);
517 	_tmp0_ = iterator;
518 	self = (GeeReadOnlyListIterator*) gee_read_only_collection_iterator_construct (object_type, g_type, (GBoxedCopyFunc) g_dup_func, g_destroy_func, (GeeIterator*) _tmp0_);
519 	self->priv->g_type = g_type;
520 	self->priv->g_dup_func = g_dup_func;
521 	self->priv->g_destroy_func = g_destroy_func;
522 	return self;
523 }
524 
525 
gee_read_only_list_iterator_new(GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeListIterator * iterator)526 static GeeReadOnlyListIterator* gee_read_only_list_iterator_new (GType g_type, GBoxedCopyFunc g_dup_func, GDestroyNotify g_destroy_func, GeeListIterator* iterator) {
527 	return gee_read_only_list_iterator_construct (GEE_READ_ONLY_LIST_TYPE_ITERATOR, g_type, g_dup_func, g_destroy_func, iterator);
528 }
529 
530 
gee_read_only_list_iterator_real_previous(GeeBidirIterator * base)531 static gboolean gee_read_only_list_iterator_real_previous (GeeBidirIterator* base) {
532 	GeeReadOnlyListIterator * self;
533 	gboolean result = FALSE;
534 	GeeIterator* _tmp0_;
535 	gboolean _tmp1_ = FALSE;
536 	self = (GeeReadOnlyListIterator*) base;
537 	_tmp0_ = ((GeeReadOnlyCollectionIterator*) self)->_iter;
538 	_tmp1_ = gee_bidir_iterator_previous ((GeeBidirIterator*) G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_LIST_ITERATOR, GeeListIterator));
539 	result = _tmp1_;
540 	return result;
541 }
542 
543 
gee_read_only_list_iterator_real_has_previous(GeeBidirIterator * base)544 static gboolean gee_read_only_list_iterator_real_has_previous (GeeBidirIterator* base) {
545 	GeeReadOnlyListIterator * self;
546 	gboolean result = FALSE;
547 	GeeIterator* _tmp0_;
548 	gboolean _tmp1_ = FALSE;
549 	self = (GeeReadOnlyListIterator*) base;
550 	_tmp0_ = ((GeeReadOnlyCollectionIterator*) self)->_iter;
551 	_tmp1_ = gee_bidir_iterator_has_previous ((GeeBidirIterator*) G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_LIST_ITERATOR, GeeListIterator));
552 	result = _tmp1_;
553 	return result;
554 }
555 
556 
gee_read_only_list_iterator_real_last(GeeBidirIterator * base)557 static gboolean gee_read_only_list_iterator_real_last (GeeBidirIterator* base) {
558 	GeeReadOnlyListIterator * self;
559 	gboolean result = FALSE;
560 	GeeIterator* _tmp0_;
561 	gboolean _tmp1_ = FALSE;
562 	self = (GeeReadOnlyListIterator*) base;
563 	_tmp0_ = ((GeeReadOnlyCollectionIterator*) self)->_iter;
564 	_tmp1_ = gee_bidir_iterator_last ((GeeBidirIterator*) G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_LIST_ITERATOR, GeeListIterator));
565 	result = _tmp1_;
566 	return result;
567 }
568 
569 
gee_read_only_list_iterator_real_set(GeeListIterator * base,gconstpointer item)570 static void gee_read_only_list_iterator_real_set (GeeListIterator* base, gconstpointer item) {
571 	GeeReadOnlyListIterator * self;
572 	self = (GeeReadOnlyListIterator*) base;
573 	g_assert_not_reached ();
574 }
575 
576 
gee_read_only_list_iterator_real_insert(GeeListIterator * base,gconstpointer item)577 static void gee_read_only_list_iterator_real_insert (GeeListIterator* base, gconstpointer item) {
578 	GeeReadOnlyListIterator * self;
579 	self = (GeeReadOnlyListIterator*) base;
580 	g_assert_not_reached ();
581 }
582 
583 
gee_read_only_list_iterator_real_add(GeeListIterator * base,gconstpointer item)584 static void gee_read_only_list_iterator_real_add (GeeListIterator* base, gconstpointer item) {
585 	GeeReadOnlyListIterator * self;
586 	self = (GeeReadOnlyListIterator*) base;
587 	g_assert_not_reached ();
588 }
589 
590 
gee_read_only_list_iterator_real_index(GeeListIterator * base)591 static gint gee_read_only_list_iterator_real_index (GeeListIterator* base) {
592 	GeeReadOnlyListIterator * self;
593 	gint result = 0;
594 	GeeIterator* _tmp0_;
595 	gint _tmp1_ = 0;
596 	self = (GeeReadOnlyListIterator*) base;
597 	_tmp0_ = ((GeeReadOnlyCollectionIterator*) self)->_iter;
598 	_tmp1_ = gee_list_iterator_index (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_LIST_ITERATOR, GeeListIterator));
599 	result = _tmp1_;
600 	return result;
601 }
602 
603 
gee_read_only_list_iterator_class_init(GeeReadOnlyListIteratorClass * klass)604 static void gee_read_only_list_iterator_class_init (GeeReadOnlyListIteratorClass * klass) {
605 	gee_read_only_list_iterator_parent_class = g_type_class_peek_parent (klass);
606 	g_type_class_add_private (klass, sizeof (GeeReadOnlyListIteratorPrivate));
607 	G_OBJECT_CLASS (klass)->get_property = _vala_gee_read_only_list_iterator_get_property;
608 	G_OBJECT_CLASS (klass)->set_property = _vala_gee_read_only_list_iterator_set_property;
609 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_LIST_ITERATOR_G_TYPE, g_param_spec_gtype ("g-type", "type", "type", G_TYPE_NONE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
610 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_LIST_ITERATOR_G_DUP_FUNC, g_param_spec_pointer ("g-dup-func", "dup func", "dup func", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
611 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_LIST_ITERATOR_G_DESTROY_FUNC, g_param_spec_pointer ("g-destroy-func", "destroy func", "destroy func", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
612 }
613 
614 
gee_read_only_list_iterator_gee_bidir_iterator_interface_init(GeeBidirIteratorIface * iface)615 static void gee_read_only_list_iterator_gee_bidir_iterator_interface_init (GeeBidirIteratorIface * iface) {
616 	gee_read_only_list_iterator_gee_bidir_iterator_parent_iface = g_type_interface_peek_parent (iface);
617 	iface->previous = (gboolean (*)(GeeBidirIterator*)) gee_read_only_list_iterator_real_previous;
618 	iface->has_previous = (gboolean (*)(GeeBidirIterator*)) gee_read_only_list_iterator_real_has_previous;
619 	iface->last = (gboolean (*)(GeeBidirIterator*)) gee_read_only_list_iterator_real_last;
620 }
621 
622 
gee_read_only_list_iterator_gee_list_iterator_interface_init(GeeListIteratorIface * iface)623 static void gee_read_only_list_iterator_gee_list_iterator_interface_init (GeeListIteratorIface * iface) {
624 	gee_read_only_list_iterator_gee_list_iterator_parent_iface = g_type_interface_peek_parent (iface);
625 	iface->set = (void (*)(GeeListIterator*, gconstpointer)) gee_read_only_list_iterator_real_set;
626 	iface->insert = (void (*)(GeeListIterator*, gconstpointer)) gee_read_only_list_iterator_real_insert;
627 	iface->add = (void (*)(GeeListIterator*, gconstpointer)) gee_read_only_list_iterator_real_add;
628 	iface->index = (gint (*)(GeeListIterator*)) gee_read_only_list_iterator_real_index;
629 }
630 
631 
gee_read_only_list_iterator_instance_init(GeeReadOnlyListIterator * self)632 static void gee_read_only_list_iterator_instance_init (GeeReadOnlyListIterator * self) {
633 	self->priv = GEE_READ_ONLY_LIST_ITERATOR_GET_PRIVATE (self);
634 }
635 
636 
gee_read_only_list_iterator_get_type(void)637 static GType gee_read_only_list_iterator_get_type (void) {
638 	static volatile gsize gee_read_only_list_iterator_type_id__volatile = 0;
639 	if (g_once_init_enter (&gee_read_only_list_iterator_type_id__volatile)) {
640 		static const GTypeInfo g_define_type_info = { sizeof (GeeReadOnlyListIteratorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_read_only_list_iterator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeReadOnlyListIterator), 0, (GInstanceInitFunc) gee_read_only_list_iterator_instance_init, NULL };
641 		static const GInterfaceInfo gee_bidir_iterator_info = { (GInterfaceInitFunc) gee_read_only_list_iterator_gee_bidir_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
642 		static const GInterfaceInfo gee_list_iterator_info = { (GInterfaceInitFunc) gee_read_only_list_iterator_gee_list_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
643 		GType gee_read_only_list_iterator_type_id;
644 		gee_read_only_list_iterator_type_id = g_type_register_static (GEE_READ_ONLY_COLLECTION_TYPE_ITERATOR, "GeeReadOnlyListIterator", &g_define_type_info, 0);
645 		g_type_add_interface_static (gee_read_only_list_iterator_type_id, GEE_TYPE_BIDIR_ITERATOR, &gee_bidir_iterator_info);
646 		g_type_add_interface_static (gee_read_only_list_iterator_type_id, GEE_TYPE_LIST_ITERATOR, &gee_list_iterator_info);
647 		g_once_init_leave (&gee_read_only_list_iterator_type_id__volatile, gee_read_only_list_iterator_type_id);
648 	}
649 	return gee_read_only_list_iterator_type_id__volatile;
650 }
651 
652 
_vala_gee_read_only_list_iterator_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)653 static void _vala_gee_read_only_list_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
654 	GeeReadOnlyListIterator * self;
655 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_READ_ONLY_LIST_TYPE_ITERATOR, GeeReadOnlyListIterator);
656 	switch (property_id) {
657 		default:
658 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
659 		break;
660 	}
661 }
662 
663 
_vala_gee_read_only_list_iterator_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)664 static void _vala_gee_read_only_list_iterator_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
665 	GeeReadOnlyListIterator * self;
666 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_READ_ONLY_LIST_TYPE_ITERATOR, GeeReadOnlyListIterator);
667 	switch (property_id) {
668 		case GEE_READ_ONLY_LIST_ITERATOR_G_TYPE:
669 		self->priv->g_type = g_value_get_gtype (value);
670 		break;
671 		case GEE_READ_ONLY_LIST_ITERATOR_G_DUP_FUNC:
672 		self->priv->g_dup_func = g_value_get_pointer (value);
673 		break;
674 		case GEE_READ_ONLY_LIST_ITERATOR_G_DESTROY_FUNC:
675 		self->priv->g_destroy_func = g_value_get_pointer (value);
676 		break;
677 		default:
678 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
679 		break;
680 	}
681 }
682 
683 
gee_read_only_list_class_init(GeeReadOnlyListClass * klass)684 static void gee_read_only_list_class_init (GeeReadOnlyListClass * klass) {
685 	gee_read_only_list_parent_class = g_type_class_peek_parent (klass);
686 	g_type_class_add_private (klass, sizeof (GeeReadOnlyListPrivate));
687 	GEE_READ_ONLY_LIST_CLASS (klass)->get_read_only_view = gee_read_only_list_real_get_read_only_view;
688 	G_OBJECT_CLASS (klass)->get_property = _vala_gee_read_only_list_get_property;
689 	G_OBJECT_CLASS (klass)->set_property = _vala_gee_read_only_list_set_property;
690 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_LIST_G_TYPE, g_param_spec_gtype ("g-type", "type", "type", G_TYPE_NONE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
691 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_LIST_G_DUP_FUNC, g_param_spec_pointer ("g-dup-func", "dup func", "dup func", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
692 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_LIST_G_DESTROY_FUNC, g_param_spec_pointer ("g-destroy-func", "destroy func", "destroy func", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
693 	/**
694 	 * {@inheritDoc}
695 	 */
696 	g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_LIST_READ_ONLY_VIEW, g_param_spec_object ("read-only-view", "read-only-view", "read-only-view", GEE_TYPE_LIST, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
697 }
698 
699 
gee_read_only_list_gee_list_interface_init(GeeListIface * iface)700 static void gee_read_only_list_gee_list_interface_init (GeeListIface * iface) {
701 	gee_read_only_list_gee_list_parent_iface = g_type_interface_peek_parent (iface);
702 	iface->list_iterator = (GeeListIterator* (*)(GeeList*)) gee_read_only_list_real_list_iterator;
703 	iface->index_of = (gint (*)(GeeList*, gconstpointer)) gee_read_only_list_real_index_of;
704 	iface->insert = (void (*)(GeeList*, gint, gconstpointer)) gee_read_only_list_real_insert;
705 	iface->remove_at = (gpointer (*)(GeeList*, gint)) gee_read_only_list_real_remove_at;
706 	iface->get = (gpointer (*)(GeeList*, gint)) gee_read_only_list_real_get;
707 	iface->set = (void (*)(GeeList*, gint, gconstpointer)) gee_read_only_list_real_set;
708 	iface->slice = (GeeList* (*)(GeeList*, gint, gint)) gee_read_only_list_real_slice;
709 	iface->first = (gpointer (*)(GeeList*)) gee_read_only_list_real_first;
710 	iface->last = (gpointer (*)(GeeList*)) gee_read_only_list_real_last;
711 	iface->insert_all = (void (*)(GeeList*, gint, GeeCollection*)) gee_read_only_list_real_insert_all;
712 	iface->sort = (void (*)(GeeList*, GCompareFunc)) gee_read_only_list_real_sort;
713 	iface->get_read_only_view = (GeeList* (*) (GeeList *)) gee_read_only_list_get_read_only_view;
714 }
715 
716 
gee_read_only_list_instance_init(GeeReadOnlyList * self)717 static void gee_read_only_list_instance_init (GeeReadOnlyList * self) {
718 	self->priv = GEE_READ_ONLY_LIST_GET_PRIVATE (self);
719 }
720 
721 
722 /**
723  * Read-only view for {@link List} collections.
724  *
725  * This class decorates any class which implements the {@link List}
726  * interface by making it read only. Any method which normally modify data will
727  * throw an error.
728  *
729  * @see List
730  */
gee_read_only_list_get_type(void)731 GType gee_read_only_list_get_type (void) {
732 	static volatile gsize gee_read_only_list_type_id__volatile = 0;
733 	if (g_once_init_enter (&gee_read_only_list_type_id__volatile)) {
734 		static const GTypeInfo g_define_type_info = { sizeof (GeeReadOnlyListClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_read_only_list_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeReadOnlyList), 0, (GInstanceInitFunc) gee_read_only_list_instance_init, NULL };
735 		static const GInterfaceInfo gee_list_info = { (GInterfaceInitFunc) gee_read_only_list_gee_list_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
736 		GType gee_read_only_list_type_id;
737 		gee_read_only_list_type_id = g_type_register_static (GEE_TYPE_READ_ONLY_COLLECTION, "GeeReadOnlyList", &g_define_type_info, 0);
738 		g_type_add_interface_static (gee_read_only_list_type_id, GEE_TYPE_LIST, &gee_list_info);
739 		g_once_init_leave (&gee_read_only_list_type_id__volatile, gee_read_only_list_type_id);
740 	}
741 	return gee_read_only_list_type_id__volatile;
742 }
743 
744 
_vala_gee_read_only_list_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)745 static void _vala_gee_read_only_list_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
746 	GeeReadOnlyList * self;
747 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_READ_ONLY_LIST, GeeReadOnlyList);
748 	switch (property_id) {
749 		case GEE_READ_ONLY_LIST_READ_ONLY_VIEW:
750 		g_value_take_object (value, gee_read_only_list_get_read_only_view (self));
751 		break;
752 		default:
753 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
754 		break;
755 	}
756 }
757 
758 
_vala_gee_read_only_list_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)759 static void _vala_gee_read_only_list_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
760 	GeeReadOnlyList * self;
761 	self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_READ_ONLY_LIST, GeeReadOnlyList);
762 	switch (property_id) {
763 		case GEE_READ_ONLY_LIST_G_TYPE:
764 		self->priv->g_type = g_value_get_gtype (value);
765 		break;
766 		case GEE_READ_ONLY_LIST_G_DUP_FUNC:
767 		self->priv->g_dup_func = g_value_get_pointer (value);
768 		break;
769 		case GEE_READ_ONLY_LIST_G_DESTROY_FUNC:
770 		self->priv->g_destroy_func = g_value_get_pointer (value);
771 		break;
772 		default:
773 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
774 		break;
775 	}
776 }
777 
778 
779 
780