1 /* readonlylist.c generated by valac 0.18.0, the Vala compiler
2 * generated from readonlylist.vala, do not modify */
6 * Copyright (C) 2007-2008 Jürg Billeter
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.
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.
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
23 * Jürg Billeter <j@bitron.ch>
27 #include <glib-object.h>
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))
35 typedef struct _GeeIterable GeeIterable;
36 typedef struct _GeeIterableIface GeeIterableIface;
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))
43 typedef struct _GeeIterator GeeIterator;
44 typedef struct _GeeIteratorIface GeeIteratorIface;
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))
51 typedef struct _GeeCollection GeeCollection;
52 typedef struct _GeeCollectionIface GeeCollectionIface;
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))
61 typedef struct _GeeReadOnlyCollection GeeReadOnlyCollection;
62 typedef struct _GeeReadOnlyCollectionClass GeeReadOnlyCollectionClass;
63 typedef struct _GeeReadOnlyCollectionPrivate GeeReadOnlyCollectionPrivate;
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))
70 typedef struct _GeeList GeeList;
71 typedef struct _GeeListIface GeeListIface;
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))
78 typedef struct _GeeBidirIterator GeeBidirIterator;
79 typedef struct _GeeBidirIteratorIface GeeBidirIteratorIface;
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))
86 typedef struct _GeeListIterator GeeListIterator;
87 typedef struct _GeeListIteratorIface GeeListIteratorIface;
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))
96 typedef struct _GeeReadOnlyList GeeReadOnlyList;
97 typedef struct _GeeReadOnlyListClass GeeReadOnlyListClass;
98 typedef struct _GeeReadOnlyListPrivate GeeReadOnlyListPrivate;
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))
107 typedef struct _GeeReadOnlyCollectionIterator GeeReadOnlyCollectionIterator;
108 typedef struct _GeeReadOnlyCollectionIteratorClass GeeReadOnlyCollectionIteratorClass;
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))
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;
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);
132 struct _GeeIterableIface {
133 GTypeInterface parent_iface;
134 GeeIterator* (*iterator) (GeeIterable* self);
135 GType (*get_element_type) (GeeIterable* self);
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);
154 struct _GeeReadOnlyCollection {
155 GObject parent_instance;
156 GeeReadOnlyCollectionPrivate * priv;
157 GeeCollection* _collection;
160 struct _GeeReadOnlyCollectionClass {
161 GObjectClass parent_class;
162 GeeCollection* (*get_read_only_view) (GeeReadOnlyCollection* self);
165 struct _GeeBidirIteratorIface {
166 GTypeInterface parent_iface;
167 gboolean (*previous) (GeeBidirIterator* self);
168 gboolean (*has_previous) (GeeBidirIterator* self);
169 gboolean (*last) (GeeBidirIterator* self);
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);
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);
196 struct _GeeReadOnlyList {
197 GeeReadOnlyCollection parent_instance;
198 GeeReadOnlyListPrivate * priv;
201 struct _GeeReadOnlyListClass {
202 GeeReadOnlyCollectionClass parent_class;
203 GeeList* (*get_read_only_view) (GeeReadOnlyList* self);
206 struct _GeeReadOnlyListPrivate {
208 GBoxedCopyFunc g_dup_func;
209 GDestroyNotify g_destroy_func;
212 struct _GeeReadOnlyCollectionIterator {
213 GObject parent_instance;
214 GeeReadOnlyCollectionIteratorPrivate * priv;
218 struct _GeeReadOnlyCollectionIteratorClass {
219 GObjectClass parent_class;
222 struct _GeeReadOnlyListIterator {
223 GeeReadOnlyCollectionIterator parent_instance;
224 GeeReadOnlyListIteratorPrivate * priv;
227 struct _GeeReadOnlyListIteratorClass {
228 GeeReadOnlyCollectionIteratorClass parent_class;
231 struct _GeeReadOnlyListIteratorPrivate {
233 GBoxedCopyFunc g_dup_func;
234 GDestroyNotify g_destroy_func;
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;
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))
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
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))
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
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);
312 * Constructs a read-only list that mirrors the content of the specified
315 * @param list the list to decorate.
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;
320 g_return_val_if_fail (list != NULL, NULL);
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;
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);
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));
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_);
361 static gint gee_read_only_list_real_index_of (GeeList* base, gconstpointer item) {
362 GeeReadOnlyList * self;
364 GeeCollection* _tmp0_;
365 gconstpointer _tmp1_;
367 self = (GeeReadOnlyList*) base;
368 _tmp0_ = ((GeeReadOnlyCollection*) self)->_collection;
370 _tmp2_ = gee_list_index_of (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_LIST, GeeList), _tmp1_);
377 * Unimplemented method (read only list).
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 ();
387 * Unimplemented method (read only list).
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 ();
401 static gpointer gee_read_only_list_real_get (GeeList* base, gint index) {
402 GeeReadOnlyList * self;
403 gpointer result = NULL;
404 GeeCollection* _tmp0_;
406 gpointer _tmp2_ = NULL;
407 self = (GeeReadOnlyList*) base;
408 _tmp0_ = ((GeeReadOnlyCollection*) self)->_collection;
410 _tmp2_ = gee_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_LIST, GeeList), _tmp1_);
417 * Unimplemented method (read only list).
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 ();
427 * Unimplemented method (read only list).
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 ();
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));
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));
471 * Unimplemented method (read only list).
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 ();
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 ();
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);
497 static gpointer _g_object_ref0 (gpointer self) {
498 return self ? g_object_ref (self) : NULL;
502 static GeeList* gee_read_only_list_real_get_read_only_view (GeeReadOnlyList* base) {
504 GeeReadOnlyList* self;
507 _tmp0_ = _g_object_ref0 ((GeeList*) self);
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);
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;
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);
531 static gboolean gee_read_only_list_iterator_real_previous (GeeBidirIterator* base) {
532 GeeReadOnlyListIterator * self;
533 gboolean result = FALSE;
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));
544 static gboolean gee_read_only_list_iterator_real_has_previous (GeeBidirIterator* base) {
545 GeeReadOnlyListIterator * self;
546 gboolean result = FALSE;
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));
557 static gboolean gee_read_only_list_iterator_real_last (GeeBidirIterator* base) {
558 GeeReadOnlyListIterator * self;
559 gboolean result = FALSE;
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));
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 ();
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 ();
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 ();
591 static gint gee_read_only_list_iterator_real_index (GeeListIterator* base) {
592 GeeReadOnlyListIterator * self;
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));
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));
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;
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;
632 static void gee_read_only_list_iterator_instance_init (GeeReadOnlyListIterator * self) {
633 self->priv = GEE_READ_ONLY_LIST_ITERATOR_GET_PRIVATE (self);
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);
649 return gee_read_only_list_iterator_type_id__volatile;
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) {
658 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, 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);
671 case GEE_READ_ONLY_LIST_ITERATOR_G_DUP_FUNC:
672 self->priv->g_dup_func = g_value_get_pointer (value);
674 case GEE_READ_ONLY_LIST_ITERATOR_G_DESTROY_FUNC:
675 self->priv->g_destroy_func = g_value_get_pointer (value);
678 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
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));
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));
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;
717 static void gee_read_only_list_instance_init (GeeReadOnlyList * self) {
718 self->priv = GEE_READ_ONLY_LIST_GET_PRIVATE (self);
723 * Read-only view for {@link List} collections.
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
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);
741 return gee_read_only_list_type_id__volatile;
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));
753 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, 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);
766 case GEE_READ_ONLY_LIST_G_DUP_FUNC:
767 self->priv->g_dup_func = g_value_get_pointer (value);
769 case GEE_READ_ONLY_LIST_G_DESTROY_FUNC:
770 self->priv->g_destroy_func = g_value_get_pointer (value);
773 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);