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