1 /* readonlyset.c generated by valac 0.46.6, the Vala compiler
2 * generated from readonlyset.vala, do not modify */
3
4 /* readonlyset.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-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_SET (gee_set_get_type ())
97 #define GEE_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_SET, GeeSet))
98 #define GEE_IS_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_SET))
99 #define GEE_SET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GEE_TYPE_SET, GeeSetIface))
100
101 typedef struct _GeeSet GeeSet;
102 typedef struct _GeeSetIface GeeSetIface;
103
104 #define GEE_TYPE_READ_ONLY_SET (gee_read_only_set_get_type ())
105 #define GEE_READ_ONLY_SET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEE_TYPE_READ_ONLY_SET, GeeReadOnlySet))
106 #define GEE_READ_ONLY_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEE_TYPE_READ_ONLY_SET, GeeReadOnlySetClass))
107 #define GEE_IS_READ_ONLY_SET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEE_TYPE_READ_ONLY_SET))
108 #define GEE_IS_READ_ONLY_SET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEE_TYPE_READ_ONLY_SET))
109 #define GEE_READ_ONLY_SET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GEE_TYPE_READ_ONLY_SET, GeeReadOnlySetClass))
110
111 typedef struct _GeeReadOnlySet GeeReadOnlySet;
112 typedef struct _GeeReadOnlySetClass GeeReadOnlySetClass;
113 typedef struct _GeeReadOnlySetPrivate GeeReadOnlySetPrivate;
114 enum {
115 GEE_READ_ONLY_SET_0_PROPERTY,
116 GEE_READ_ONLY_SET_G_TYPE,
117 GEE_READ_ONLY_SET_G_DUP_FUNC,
118 GEE_READ_ONLY_SET_G_DESTROY_FUNC,
119 GEE_READ_ONLY_SET_READ_ONLY_VIEW_PROPERTY,
120 GEE_READ_ONLY_SET_NUM_PROPERTIES
121 };
122 static GParamSpec* gee_read_only_set_properties[GEE_READ_ONLY_SET_NUM_PROPERTIES];
123
124 struct _GeeIteratorIface {
125 GTypeInterface parent_iface;
126 gboolean (*next) (GeeIterator* self);
127 gboolean (*has_next) (GeeIterator* self);
128 gpointer (*get) (GeeIterator* self);
129 void (*remove) (GeeIterator* self);
130 gboolean (*get_valid) (GeeIterator* self);
131 gboolean (*get_read_only) (GeeIterator* self);
132 };
133
134 struct _GeeTraversableIface {
135 GTypeInterface parent_iface;
136 GType (*get_g_type) (GeeTraversable* self);
137 GBoxedCopyFunc (*get_g_dup_func) (GeeTraversable* self);
138 GDestroyNotify (*get_g_destroy_func) (GeeTraversable* self);
139 gboolean (*foreach) (GeeTraversable* self, GeeForallFunc f, gpointer f_target);
140 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);
141 gpointer (*fold) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldFunc f, gpointer f_target, gpointer seed);
142 GeeIterator* (*map) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeMapFunc f, gpointer f_target);
143 GeeIterator* (*scan) (GeeTraversable* self, GType a_type, GBoxedCopyFunc a_dup_func, GDestroyNotify a_destroy_func, GeeFoldFunc f, gpointer f_target, gpointer seed);
144 GeeIterator* (*filter) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
145 GeeIterator* (*chop) (GeeTraversable* self, gint offset, gint length);
146 GType (*get_element_type) (GeeTraversable* self);
147 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);
148 GeeIterator** (*tee) (GeeTraversable* self, guint forks, gint* result_length1);
149 gpointer (*first_match) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
150 gboolean (*any_match) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
151 gboolean (*all_match) (GeeTraversable* self, GeePredicate pred, gpointer pred_target, GDestroyNotify pred_target_destroy_notify);
152 gpointer (*max) (GeeTraversable* self, GCompareDataFunc compare, gpointer compare_target, GDestroyNotify compare_target_destroy_notify);
153 gpointer (*min) (GeeTraversable* self, GCompareDataFunc compare, gpointer compare_target, GDestroyNotify compare_target_destroy_notify);
154 GeeIterator* (*order_by) (GeeTraversable* self, GCompareDataFunc compare, gpointer compare_target, GDestroyNotify compare_target_destroy_notify);
155 };
156
157 struct _GeeIterableIface {
158 GTypeInterface parent_iface;
159 GType (*get_g_type) (GeeIterable* self);
160 GBoxedCopyFunc (*get_g_dup_func) (GeeIterable* self);
161 GDestroyNotify (*get_g_destroy_func) (GeeIterable* self);
162 GeeIterator* (*iterator) (GeeIterable* self);
163 };
164
165 struct _GeeCollectionIface {
166 GTypeInterface parent_iface;
167 GType (*get_g_type) (GeeCollection* self);
168 GBoxedCopyFunc (*get_g_dup_func) (GeeCollection* self);
169 GDestroyNotify (*get_g_destroy_func) (GeeCollection* self);
170 gboolean (*contains) (GeeCollection* self, gconstpointer item);
171 gboolean (*add) (GeeCollection* self, gconstpointer item);
172 gboolean (*remove) (GeeCollection* self, gconstpointer item);
173 void (*clear) (GeeCollection* self);
174 gboolean (*add_all) (GeeCollection* self, GeeCollection* collection);
175 gboolean (*contains_all) (GeeCollection* self, GeeCollection* collection);
176 gboolean (*remove_all) (GeeCollection* self, GeeCollection* collection);
177 gboolean (*retain_all) (GeeCollection* self, GeeCollection* collection);
178 gpointer* (*to_array) (GeeCollection* self, gint* result_length1);
179 gint (*get_size) (GeeCollection* self);
180 gboolean (*get_is_empty) (GeeCollection* self);
181 gboolean (*get_read_only) (GeeCollection* self);
182 GeeCollection* (*get_read_only_view) (GeeCollection* self);
183 gboolean (*add_all_array) (GeeCollection* self, gpointer* array, gint array_length1);
184 gboolean (*contains_all_array) (GeeCollection* self, gpointer* array, gint array_length1);
185 gboolean (*remove_all_array) (GeeCollection* self, gpointer* array, gint array_length1);
186 gboolean (*add_all_iterator) (GeeCollection* self, GeeIterator* iter);
187 gboolean (*contains_all_iterator) (GeeCollection* self, GeeIterator* iter);
188 gboolean (*remove_all_iterator) (GeeCollection* self, GeeIterator* iter);
189 };
190
191 struct _GeeReadOnlyCollection {
192 GObject parent_instance;
193 GeeReadOnlyCollectionPrivate * priv;
194 GeeCollection* _collection;
195 };
196
197 struct _GeeReadOnlyCollectionClass {
198 GObjectClass parent_class;
199 GeeCollection* (*get_read_only_view) (GeeReadOnlyCollection* self);
200 };
201
202 struct _GeeSetIface {
203 GTypeInterface parent_iface;
204 GType (*get_g_type) (GeeSet* self);
205 GBoxedCopyFunc (*get_g_dup_func) (GeeSet* self);
206 GDestroyNotify (*get_g_destroy_func) (GeeSet* self);
207 GeeSet* (*get_read_only_view) (GeeSet* self);
208 };
209
210 struct _GeeReadOnlySet {
211 GeeReadOnlyCollection parent_instance;
212 GeeReadOnlySetPrivate * priv;
213 };
214
215 struct _GeeReadOnlySetClass {
216 GeeReadOnlyCollectionClass parent_class;
217 GeeSet* (*get_read_only_view) (GeeReadOnlySet* self);
218 };
219
220 struct _GeeReadOnlySetPrivate {
221 GType g_type;
222 GBoxedCopyFunc g_dup_func;
223 GDestroyNotify g_destroy_func;
224 };
225
226 static gint GeeReadOnlySet_private_offset;
227 static gpointer gee_read_only_set_parent_class = NULL;
228 static GeeSetIface * gee_read_only_set_gee_set_parent_iface = NULL;
229
230 GType gee_traversable_stream_get_type (void) G_GNUC_CONST;
231 gpointer gee_lazy_ref (gpointer instance);
232 void gee_lazy_unref (gpointer instance);
233 GParamSpec* gee_param_spec_lazy (const gchar* name,
234 const gchar* nick,
235 const gchar* blurb,
236 GType object_type,
237 GParamFlags flags);
238 void gee_value_set_lazy (GValue* value,
239 gpointer v_object);
240 void gee_value_take_lazy (GValue* value,
241 gpointer v_object);
242 gpointer gee_value_get_lazy (const GValue* value);
243 GType gee_lazy_get_type (void) G_GNUC_CONST;
244 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeLazy, gee_lazy_unref)
245 GType gee_iterator_get_type (void) G_GNUC_CONST;
246 GType gee_traversable_get_type (void) G_GNUC_CONST;
247 GType gee_iterable_get_type (void) G_GNUC_CONST;
248 GType gee_collection_get_type (void) G_GNUC_CONST;
249 G_GNUC_INTERNAL GType gee_read_only_collection_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
250 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeReadOnlyCollection, g_object_unref)
251 GType gee_set_get_type (void) G_GNUC_CONST;
252 G_GNUC_INTERNAL GType gee_read_only_set_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
253 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GeeReadOnlySet, g_object_unref)
254 G_GNUC_INTERNAL GeeReadOnlySet* gee_read_only_set_new (GType g_type,
255 GBoxedCopyFunc g_dup_func,
256 GDestroyNotify g_destroy_func,
257 GeeSet* set);
258 G_GNUC_INTERNAL GeeReadOnlySet* gee_read_only_set_construct (GType object_type,
259 GType g_type,
260 GBoxedCopyFunc g_dup_func,
261 GDestroyNotify g_destroy_func,
262 GeeSet* set);
263 G_GNUC_INTERNAL GeeReadOnlyCollection* gee_read_only_collection_new (GType g_type,
264 GBoxedCopyFunc g_dup_func,
265 GDestroyNotify g_destroy_func,
266 GeeCollection* collection);
267 G_GNUC_INTERNAL GeeReadOnlyCollection* gee_read_only_collection_construct (GType object_type,
268 GType g_type,
269 GBoxedCopyFunc g_dup_func,
270 GDestroyNotify g_destroy_func,
271 GeeCollection* collection);
272 G_GNUC_INTERNAL GeeSet* gee_read_only_set_get_read_only_view (GeeReadOnlySet* self);
273 static void _vala_gee_read_only_set_get_property (GObject * object,
274 guint property_id,
275 GValue * value,
276 GParamSpec * pspec);
277 static void _vala_gee_read_only_set_set_property (GObject * object,
278 guint property_id,
279 const GValue * value,
280 GParamSpec * pspec);
281
282 static inline gpointer
gee_read_only_set_get_instance_private(GeeReadOnlySet * self)283 gee_read_only_set_get_instance_private (GeeReadOnlySet* self)
284 {
285 return G_STRUCT_MEMBER_P (self, GeeReadOnlySet_private_offset);
286 }
287
288 /**
289 * Constructs a read-only set that mirrors the content of the specified set.
290 *
291 * @param set the set to decorate.
292 */
293 G_GNUC_INTERNAL GeeReadOnlySet*
gee_read_only_set_construct(GType object_type,GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeSet * set)294 gee_read_only_set_construct (GType object_type,
295 GType g_type,
296 GBoxedCopyFunc g_dup_func,
297 GDestroyNotify g_destroy_func,
298 GeeSet* set)
299 {
300 GeeReadOnlySet * self = NULL;
301 g_return_val_if_fail (set != NULL, NULL);
302 self = (GeeReadOnlySet*) gee_read_only_collection_construct (object_type, g_type, (GBoxedCopyFunc) g_dup_func, (GDestroyNotify) g_destroy_func, (GeeCollection*) set);
303 self->priv->g_type = g_type;
304 self->priv->g_dup_func = g_dup_func;
305 self->priv->g_destroy_func = g_destroy_func;
306 return self;
307 }
308
309 G_GNUC_INTERNAL GeeReadOnlySet*
gee_read_only_set_new(GType g_type,GBoxedCopyFunc g_dup_func,GDestroyNotify g_destroy_func,GeeSet * set)310 gee_read_only_set_new (GType g_type,
311 GBoxedCopyFunc g_dup_func,
312 GDestroyNotify g_destroy_func,
313 GeeSet* set)
314 {
315 return gee_read_only_set_construct (GEE_TYPE_READ_ONLY_SET, g_type, g_dup_func, g_destroy_func, set);
316 }
317
318 G_GNUC_INTERNAL GeeSet*
gee_read_only_set_get_read_only_view(GeeReadOnlySet * self)319 gee_read_only_set_get_read_only_view (GeeReadOnlySet* self)
320 {
321 g_return_val_if_fail (self != NULL, NULL);
322 return GEE_READ_ONLY_SET_GET_CLASS (self)->get_read_only_view (self);
323 }
324
325 static gpointer
_g_object_ref0(gpointer self)326 _g_object_ref0 (gpointer self)
327 {
328 return self ? g_object_ref (self) : NULL;
329 }
330
331 static GeeSet*
gee_read_only_set_real_get_read_only_view(GeeReadOnlySet * base)332 gee_read_only_set_real_get_read_only_view (GeeReadOnlySet* base)
333 {
334 GeeSet* result;
335 GeeReadOnlySet* self;
336 GeeSet* _tmp0_;
337 self = base;
338 _tmp0_ = _g_object_ref0 ((GeeSet*) self);
339 result = _tmp0_;
340 return result;
341 }
342
343 static void
gee_read_only_set_class_init(GeeReadOnlySetClass * klass,gpointer klass_data)344 gee_read_only_set_class_init (GeeReadOnlySetClass * klass,
345 gpointer klass_data)
346 {
347 gee_read_only_set_parent_class = g_type_class_peek_parent (klass);
348 g_type_class_adjust_private_offset (klass, &GeeReadOnlySet_private_offset);
349 GEE_READ_ONLY_SET_CLASS (klass)->get_read_only_view = gee_read_only_set_real_get_read_only_view;
350 G_OBJECT_CLASS (klass)->get_property = _vala_gee_read_only_set_get_property;
351 G_OBJECT_CLASS (klass)->set_property = _vala_gee_read_only_set_set_property;
352 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_SET_G_TYPE, g_param_spec_gtype ("g-type", "type", "type", G_TYPE_NONE, G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
353 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_SET_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));
354 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_SET_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));
355 g_object_class_install_property (G_OBJECT_CLASS (klass), GEE_READ_ONLY_SET_READ_ONLY_VIEW_PROPERTY, gee_read_only_set_properties[GEE_READ_ONLY_SET_READ_ONLY_VIEW_PROPERTY] = g_param_spec_object ("read-only-view", "read-only-view", "read-only-view", GEE_TYPE_SET, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
356 }
357
358 static GType
gee_read_only_set_gee_set_get_g_type(GeeReadOnlySet * self)359 gee_read_only_set_gee_set_get_g_type (GeeReadOnlySet* self)
360 {
361 return self->priv->g_type;
362 }
363
364 static GBoxedCopyFunc
gee_read_only_set_gee_set_get_g_dup_func(GeeReadOnlySet * self)365 gee_read_only_set_gee_set_get_g_dup_func (GeeReadOnlySet* self)
366 {
367 return self->priv->g_dup_func;
368 }
369
370 static GDestroyNotify
gee_read_only_set_gee_set_get_g_destroy_func(GeeReadOnlySet * self)371 gee_read_only_set_gee_set_get_g_destroy_func (GeeReadOnlySet* self)
372 {
373 return self->priv->g_destroy_func;
374 }
375
376 static void
gee_read_only_set_gee_set_interface_init(GeeSetIface * iface,gpointer iface_data)377 gee_read_only_set_gee_set_interface_init (GeeSetIface * iface,
378 gpointer iface_data)
379 {
380 gee_read_only_set_gee_set_parent_iface = g_type_interface_peek_parent (iface);
381 iface->get_g_type = (GType (*) (GeeSet *)) gee_read_only_set_gee_set_get_g_type;
382 iface->get_g_dup_func = (GBoxedCopyFunc (*) (GeeSet *)) gee_read_only_set_gee_set_get_g_dup_func;
383 iface->get_g_destroy_func = (GDestroyNotify (*) (GeeSet *)) gee_read_only_set_gee_set_get_g_destroy_func;
384 iface->get_read_only_view = (GeeSet* (*) (GeeSet *)) gee_read_only_set_get_read_only_view;
385 }
386
387 static void
gee_read_only_set_instance_init(GeeReadOnlySet * self,gpointer klass)388 gee_read_only_set_instance_init (GeeReadOnlySet * self,
389 gpointer klass)
390 {
391 self->priv = gee_read_only_set_get_instance_private (self);
392 }
393
394 /**
395 * Read-only view for {@link Set} collections.
396 *
397 * This class decorates any class which implements the {@link Set} interface
398 * by making it read only. Any method which normally modify data will throw an
399 * error.
400 *
401 * @see Set
402 */
403 G_GNUC_INTERNAL GType
gee_read_only_set_get_type(void)404 gee_read_only_set_get_type (void)
405 {
406 static volatile gsize gee_read_only_set_type_id__volatile = 0;
407 if (g_once_init_enter (&gee_read_only_set_type_id__volatile)) {
408 static const GTypeInfo g_define_type_info = { sizeof (GeeReadOnlySetClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gee_read_only_set_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GeeReadOnlySet), 0, (GInstanceInitFunc) gee_read_only_set_instance_init, NULL };
409 static const GInterfaceInfo gee_set_info = { (GInterfaceInitFunc) gee_read_only_set_gee_set_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
410 GType gee_read_only_set_type_id;
411 gee_read_only_set_type_id = g_type_register_static (GEE_TYPE_READ_ONLY_COLLECTION, "GeeReadOnlySet", &g_define_type_info, 0);
412 g_type_add_interface_static (gee_read_only_set_type_id, GEE_TYPE_SET, &gee_set_info);
413 GeeReadOnlySet_private_offset = g_type_add_instance_private (gee_read_only_set_type_id, sizeof (GeeReadOnlySetPrivate));
414 g_once_init_leave (&gee_read_only_set_type_id__volatile, gee_read_only_set_type_id);
415 }
416 return gee_read_only_set_type_id__volatile;
417 }
418
419 static void
_vala_gee_read_only_set_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)420 _vala_gee_read_only_set_get_property (GObject * object,
421 guint property_id,
422 GValue * value,
423 GParamSpec * pspec)
424 {
425 GeeReadOnlySet * self;
426 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_READ_ONLY_SET, GeeReadOnlySet);
427 switch (property_id) {
428 case GEE_READ_ONLY_SET_READ_ONLY_VIEW_PROPERTY:
429 g_value_take_object (value, gee_read_only_set_get_read_only_view (self));
430 break;
431 case GEE_READ_ONLY_SET_G_TYPE:
432 g_value_set_gtype (value, self->priv->g_type);
433 break;
434 case GEE_READ_ONLY_SET_G_DUP_FUNC:
435 g_value_set_pointer (value, self->priv->g_dup_func);
436 break;
437 case GEE_READ_ONLY_SET_G_DESTROY_FUNC:
438 g_value_set_pointer (value, self->priv->g_destroy_func);
439 break;
440 default:
441 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
442 break;
443 }
444 }
445
446 static void
_vala_gee_read_only_set_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)447 _vala_gee_read_only_set_set_property (GObject * object,
448 guint property_id,
449 const GValue * value,
450 GParamSpec * pspec)
451 {
452 GeeReadOnlySet * self;
453 self = G_TYPE_CHECK_INSTANCE_CAST (object, GEE_TYPE_READ_ONLY_SET, GeeReadOnlySet);
454 switch (property_id) {
455 case GEE_READ_ONLY_SET_G_TYPE:
456 self->priv->g_type = g_value_get_gtype (value);
457 break;
458 case GEE_READ_ONLY_SET_G_DUP_FUNC:
459 self->priv->g_dup_func = g_value_get_pointer (value);
460 break;
461 case GEE_READ_ONLY_SET_G_DESTROY_FUNC:
462 self->priv->g_destroy_func = g_value_get_pointer (value);
463 break;
464 default:
465 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
466 break;
467 }
468 }
469
470