Initial commit
[fillmore] / src / marina / marina / ClassFactory.c
1 /* ClassFactory.c generated by valac, the Vala compiler
2  * generated from ClassFactory.vala, do not modify */
3
4 /* Copyright 2009-2010 Yorba Foundation
5  *
6  * This software is licensed under the GNU Lesser General Public License
7  * (version 2.1 or later).  See the COPYING file in this distribution. 
8  */
9
10 #include <glib.h>
11 #include <glib-object.h>
12 #include <gtk/gtk.h>
13 #include <float.h>
14 #include <math.h>
15 #include <gobject/gvaluecollector.h>
16
17
18 #define TYPE_TRACK_VIEW (track_view_get_type ())
19 #define TRACK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_VIEW, TrackView))
20 #define IS_TRACK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_VIEW))
21 #define TRACK_VIEW_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_TRACK_VIEW, TrackViewIface))
22
23 typedef struct _TrackView TrackView;
24 typedef struct _TrackViewIface TrackViewIface;
25
26 #define TYPE_CLIP_VIEW (clip_view_get_type ())
27 #define CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLIP_VIEW, ClipView))
28 #define CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLIP_VIEW, ClipViewClass))
29 #define IS_CLIP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLIP_VIEW))
30 #define IS_CLIP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLIP_VIEW))
31 #define CLIP_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLIP_VIEW, ClipViewClass))
32
33 typedef struct _ClipView ClipView;
34 typedef struct _ClipViewClass ClipViewClass;
35
36 #define MODEL_TYPE_TRACK (model_track_get_type ())
37 #define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack))
38 #define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass))
39 #define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK))
40 #define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK))
41 #define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass))
42
43 typedef struct _ModelTrack ModelTrack;
44 typedef struct _ModelTrackClass ModelTrackClass;
45
46 #define TYPE_CLASS_FACTORY (class_factory_get_type ())
47 #define CLASS_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CLASS_FACTORY, ClassFactory))
48 #define CLASS_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CLASS_FACTORY, ClassFactoryClass))
49 #define IS_CLASS_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CLASS_FACTORY))
50 #define IS_CLASS_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CLASS_FACTORY))
51 #define CLASS_FACTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CLASS_FACTORY, ClassFactoryClass))
52
53 typedef struct _ClassFactory ClassFactory;
54 typedef struct _ClassFactoryClass ClassFactoryClass;
55 typedef struct _ClassFactoryPrivate ClassFactoryPrivate;
56
57 #define TYPE_TIME_LINE (time_line_get_type ())
58 #define TIME_LINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TIME_LINE, TimeLine))
59 #define TIME_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TIME_LINE, TimeLineClass))
60 #define IS_TIME_LINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TIME_LINE))
61 #define IS_TIME_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TIME_LINE))
62 #define TIME_LINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TIME_LINE, TimeLineClass))
63
64 typedef struct _TimeLine TimeLine;
65 typedef struct _TimeLineClass TimeLineClass;
66
67 #define TYPE_TRANSPORT_DELEGATE (transport_delegate_get_type ())
68 #define TRANSPORT_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRANSPORT_DELEGATE, TransportDelegate))
69 #define IS_TRANSPORT_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRANSPORT_DELEGATE))
70 #define TRANSPORT_DELEGATE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_TRANSPORT_DELEGATE, TransportDelegateIface))
71
72 typedef struct _TransportDelegate TransportDelegate;
73 typedef struct _TransportDelegateIface TransportDelegateIface;
74
75 #define TYPE_TRACK_VIEW_CONCRETE (track_view_concrete_get_type ())
76 #define TRACK_VIEW_CONCRETE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK_VIEW_CONCRETE, TrackViewConcrete))
77 #define TRACK_VIEW_CONCRETE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRACK_VIEW_CONCRETE, TrackViewConcreteClass))
78 #define IS_TRACK_VIEW_CONCRETE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRACK_VIEW_CONCRETE))
79 #define IS_TRACK_VIEW_CONCRETE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRACK_VIEW_CONCRETE))
80 #define TRACK_VIEW_CONCRETE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRACK_VIEW_CONCRETE, TrackViewConcreteClass))
81
82 typedef struct _TrackViewConcrete TrackViewConcrete;
83 typedef struct _TrackViewConcreteClass TrackViewConcreteClass;
84 #define _class_factory_unref0(var) ((var == NULL) ? NULL : (var = (class_factory_unref (var), NULL)))
85 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
86 typedef struct _ParamSpecClassFactory ParamSpecClassFactory;
87
88 struct _TrackViewIface {
89         GTypeInterface parent_iface;
90         void (*move_to_top) (TrackView* self, ClipView* clip_view);
91         void (*resize) (TrackView* self);
92         ModelTrack* (*get_track) (TrackView* self);
93         gint (*get_track_height) (TrackView* self);
94         GtkWidget* (*find_child) (TrackView* self, double x, double y);
95         void (*select_all) (TrackView* self);
96 };
97
98 struct _ClassFactory {
99         GTypeInstance parent_instance;
100         volatile int ref_count;
101         ClassFactoryPrivate * priv;
102 };
103
104 struct _ClassFactoryClass {
105         GTypeClass parent_class;
106         void (*finalize) (ClassFactory *self);
107         TrackView* (*get_track_view) (ClassFactory* self, ModelTrack* track, TimeLine* timeline);
108 };
109
110 struct _TransportDelegateIface {
111         GTypeInterface parent_iface;
112         gboolean (*is_playing) (TransportDelegate* self);
113         gboolean (*is_recording) (TransportDelegate* self);
114         gboolean (*is_stopped) (TransportDelegate* self);
115 };
116
117 struct _ParamSpecClassFactory {
118         GParamSpec parent_instance;
119 };
120
121
122 static ClassFactory* class_factory_class_factory;
123 static ClassFactory* class_factory_class_factory = NULL;
124 static TransportDelegate* class_factory_transport_delegate;
125 static TransportDelegate* class_factory_transport_delegate = NULL;
126 static gpointer class_factory_parent_class = NULL;
127
128 GType clip_view_get_type (void);
129 GType model_track_get_type (void);
130 GType track_view_get_type (void);
131 void track_view_move_to_top (TrackView* self, ClipView* clip_view);
132 void track_view_resize (TrackView* self);
133 ModelTrack* track_view_get_track (TrackView* self);
134 gint track_view_get_track_height (TrackView* self);
135 GtkWidget* track_view_find_child (TrackView* self, double x, double y);
136 void track_view_select_all (TrackView* self);
137 gpointer class_factory_ref (gpointer instance);
138 void class_factory_unref (gpointer instance);
139 GParamSpec* param_spec_class_factory (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
140 void value_set_class_factory (GValue* value, gpointer v_object);
141 void value_take_class_factory (GValue* value, gpointer v_object);
142 gpointer value_get_class_factory (const GValue* value);
143 GType class_factory_get_type (void);
144 GType time_line_get_type (void);
145 enum  {
146         CLASS_FACTORY_DUMMY_PROPERTY
147 };
148 GType transport_delegate_get_type (void);
149 ClassFactory* class_factory_get_class_factory (void);
150 TrackViewConcrete* track_view_concrete_new (TransportDelegate* transport_delegate, ModelTrack* track, TimeLine* timeline);
151 TrackViewConcrete* track_view_concrete_construct (GType object_type, TransportDelegate* transport_delegate, ModelTrack* track, TimeLine* timeline);
152 GType track_view_concrete_get_type (void);
153 TrackView* class_factory_get_track_view (ClassFactory* self, ModelTrack* track, TimeLine* timeline);
154 static TrackView* class_factory_real_get_track_view (ClassFactory* self, ModelTrack* track, TimeLine* timeline);
155 void class_factory_set_class_factory (ClassFactory* class_factory);
156 void class_factory_set_transport_delegate (TransportDelegate* transport_delegate);
157 ClassFactory* class_factory_new (void);
158 ClassFactory* class_factory_construct (GType object_type);
159 static void class_factory_finalize (ClassFactory* obj);
160
161
162
163 #line 9 "ClassFactory.vala"
164 void track_view_move_to_top (TrackView* self, ClipView* clip_view) {
165 #line 9 "ClassFactory.vala"
166         TRACK_VIEW_GET_INTERFACE (self)->move_to_top (self, clip_view);
167 #line 168 "ClassFactory.c"
168 }
169
170
171 #line 10 "ClassFactory.vala"
172 void track_view_resize (TrackView* self) {
173 #line 10 "ClassFactory.vala"
174         TRACK_VIEW_GET_INTERFACE (self)->resize (self);
175 #line 176 "ClassFactory.c"
176 }
177
178
179 #line 11 "ClassFactory.vala"
180 ModelTrack* track_view_get_track (TrackView* self) {
181 #line 11 "ClassFactory.vala"
182         return TRACK_VIEW_GET_INTERFACE (self)->get_track (self);
183 #line 184 "ClassFactory.c"
184 }
185
186
187 #line 12 "ClassFactory.vala"
188 gint track_view_get_track_height (TrackView* self) {
189 #line 12 "ClassFactory.vala"
190         return TRACK_VIEW_GET_INTERFACE (self)->get_track_height (self);
191 #line 192 "ClassFactory.c"
192 }
193
194
195 #line 13 "ClassFactory.vala"
196 GtkWidget* track_view_find_child (TrackView* self, double x, double y) {
197 #line 13 "ClassFactory.vala"
198         return TRACK_VIEW_GET_INTERFACE (self)->find_child (self, x, y);
199 #line 200 "ClassFactory.c"
200 }
201
202
203 #line 14 "ClassFactory.vala"
204 void track_view_select_all (TrackView* self) {
205 #line 14 "ClassFactory.vala"
206         TRACK_VIEW_GET_INTERFACE (self)->select_all (self);
207 #line 208 "ClassFactory.c"
208 }
209
210
211 static void track_view_base_init (TrackViewIface * iface) {
212         static gboolean initialized = FALSE;
213         if (!initialized) {
214                 initialized = TRUE;
215                 g_signal_new ("clip_view_added", TYPE_TRACK_VIEW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, TYPE_CLIP_VIEW);
216         }
217 }
218
219
220 GType track_view_get_type (void) {
221         static volatile gsize track_view_type_id__volatile = 0;
222         if (g_once_init_enter (&track_view_type_id__volatile)) {
223                 static const GTypeInfo g_define_type_info = { sizeof (TrackViewIface), (GBaseInitFunc) track_view_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
224                 GType track_view_type_id;
225                 track_view_type_id = g_type_register_static (G_TYPE_INTERFACE, "TrackView", &g_define_type_info, 0);
226                 g_type_interface_add_prerequisite (track_view_type_id, GTK_TYPE_WIDGET);
227                 g_once_init_leave (&track_view_type_id__volatile, track_view_type_id);
228         }
229         return track_view_type_id__volatile;
230 }
231
232
233 static gpointer _class_factory_ref0 (gpointer self) {
234         return self ? class_factory_ref (self) : NULL;
235 }
236
237
238 #line 21 "ClassFactory.vala"
239 ClassFactory* class_factory_get_class_factory (void) {
240 #line 241 "ClassFactory.c"
241         ClassFactory* result = NULL;
242         result = _class_factory_ref0 (class_factory_class_factory);
243 #line 22 "ClassFactory.vala"
244         return result;
245 #line 246 "ClassFactory.c"
246 }
247
248
249 #line 25 "ClassFactory.vala"
250 static TrackView* class_factory_real_get_track_view (ClassFactory* self, ModelTrack* track, TimeLine* timeline) {
251 #line 252 "ClassFactory.c"
252         TrackView* result = NULL;
253 #line 25 "ClassFactory.vala"
254         g_return_val_if_fail (IS_CLASS_FACTORY (self), NULL);
255 #line 25 "ClassFactory.vala"
256         g_return_val_if_fail (MODEL_IS_TRACK (track), NULL);
257 #line 25 "ClassFactory.vala"
258         g_return_val_if_fail (IS_TIME_LINE (timeline), NULL);
259 #line 26 "ClassFactory.vala"
260         g_assert (class_factory_transport_delegate != NULL);
261 #line 262 "ClassFactory.c"
262         result = TRACK_VIEW (g_object_ref_sink (track_view_concrete_new (class_factory_transport_delegate, track, timeline)));
263 #line 27 "ClassFactory.vala"
264         return result;
265 #line 266 "ClassFactory.c"
266 }
267
268
269 #line 25 "ClassFactory.vala"
270 TrackView* class_factory_get_track_view (ClassFactory* self, ModelTrack* track, TimeLine* timeline) {
271 #line 25 "ClassFactory.vala"
272         return CLASS_FACTORY_GET_CLASS (self)->get_track_view (self, track, timeline);
273 #line 274 "ClassFactory.c"
274 }
275
276
277 #line 30 "ClassFactory.vala"
278 void class_factory_set_class_factory (ClassFactory* class_factory) {
279 #line 280 "ClassFactory.c"
280         ClassFactory* _tmp0_;
281 #line 30 "ClassFactory.vala"
282         g_return_if_fail (IS_CLASS_FACTORY (class_factory));
283 #line 31 "ClassFactory.vala"
284         class_factory_class_factory = (_tmp0_ = _class_factory_ref0 (class_factory), _class_factory_unref0 (class_factory_class_factory), _tmp0_);
285 #line 286 "ClassFactory.c"
286 }
287
288
289 static gpointer _g_object_ref0 (gpointer self) {
290         return self ? g_object_ref (self) : NULL;
291 }
292
293
294 #line 34 "ClassFactory.vala"
295 void class_factory_set_transport_delegate (TransportDelegate* transport_delegate) {
296 #line 297 "ClassFactory.c"
297         TransportDelegate* _tmp0_;
298 #line 34 "ClassFactory.vala"
299         g_return_if_fail (IS_TRANSPORT_DELEGATE (transport_delegate));
300 #line 35 "ClassFactory.vala"
301         class_factory_transport_delegate = (_tmp0_ = _g_object_ref0 (transport_delegate), _g_object_unref0 (class_factory_transport_delegate), _tmp0_);
302 #line 303 "ClassFactory.c"
303 }
304
305
306 #line 17 "ClassFactory.vala"
307 ClassFactory* class_factory_construct (GType object_type) {
308 #line 309 "ClassFactory.c"
309         ClassFactory* self;
310         self = (ClassFactory*) g_type_create_instance (object_type);
311         return self;
312 }
313
314
315 #line 17 "ClassFactory.vala"
316 ClassFactory* class_factory_new (void) {
317 #line 17 "ClassFactory.vala"
318         return class_factory_construct (TYPE_CLASS_FACTORY);
319 #line 320 "ClassFactory.c"
320 }
321
322
323 static void value_class_factory_init (GValue* value) {
324         value->data[0].v_pointer = NULL;
325 }
326
327
328 static void value_class_factory_free_value (GValue* value) {
329         if (value->data[0].v_pointer) {
330                 class_factory_unref (value->data[0].v_pointer);
331         }
332 }
333
334
335 static void value_class_factory_copy_value (const GValue* src_value, GValue* dest_value) {
336         if (src_value->data[0].v_pointer) {
337                 dest_value->data[0].v_pointer = class_factory_ref (src_value->data[0].v_pointer);
338         } else {
339                 dest_value->data[0].v_pointer = NULL;
340         }
341 }
342
343
344 static gpointer value_class_factory_peek_pointer (const GValue* value) {
345         return value->data[0].v_pointer;
346 }
347
348
349 static gchar* value_class_factory_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
350         if (collect_values[0].v_pointer) {
351                 ClassFactory* object;
352                 object = collect_values[0].v_pointer;
353                 if (object->parent_instance.g_class == NULL) {
354                         return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
355                 } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
356                         return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
357                 }
358                 value->data[0].v_pointer = class_factory_ref (object);
359         } else {
360                 value->data[0].v_pointer = NULL;
361         }
362         return NULL;
363 }
364
365
366 static gchar* value_class_factory_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
367         ClassFactory** object_p;
368         object_p = collect_values[0].v_pointer;
369         if (!object_p) {
370                 return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
371         }
372         if (!value->data[0].v_pointer) {
373                 *object_p = NULL;
374         } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) {
375                 *object_p = value->data[0].v_pointer;
376         } else {
377                 *object_p = class_factory_ref (value->data[0].v_pointer);
378         }
379         return NULL;
380 }
381
382
383 GParamSpec* param_spec_class_factory (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
384         ParamSpecClassFactory* spec;
385         g_return_val_if_fail (g_type_is_a (object_type, TYPE_CLASS_FACTORY), NULL);
386         spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
387         G_PARAM_SPEC (spec)->value_type = object_type;
388         return G_PARAM_SPEC (spec);
389 }
390
391
392 gpointer value_get_class_factory (const GValue* value) {
393         g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_CLASS_FACTORY), NULL);
394         return value->data[0].v_pointer;
395 }
396
397
398 void value_set_class_factory (GValue* value, gpointer v_object) {
399         ClassFactory* old;
400         g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_CLASS_FACTORY));
401         old = value->data[0].v_pointer;
402         if (v_object) {
403                 g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_CLASS_FACTORY));
404                 g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
405                 value->data[0].v_pointer = v_object;
406                 class_factory_ref (value->data[0].v_pointer);
407         } else {
408                 value->data[0].v_pointer = NULL;
409         }
410         if (old) {
411                 class_factory_unref (old);
412         }
413 }
414
415
416 void value_take_class_factory (GValue* value, gpointer v_object) {
417         ClassFactory* old;
418         g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_CLASS_FACTORY));
419         old = value->data[0].v_pointer;
420         if (v_object) {
421                 g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_CLASS_FACTORY));
422                 g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
423                 value->data[0].v_pointer = v_object;
424         } else {
425                 value->data[0].v_pointer = NULL;
426         }
427         if (old) {
428                 class_factory_unref (old);
429         }
430 }
431
432
433 static void class_factory_class_init (ClassFactoryClass * klass) {
434         class_factory_parent_class = g_type_class_peek_parent (klass);
435         CLASS_FACTORY_CLASS (klass)->finalize = class_factory_finalize;
436         CLASS_FACTORY_CLASS (klass)->get_track_view = class_factory_real_get_track_view;
437 }
438
439
440 static void class_factory_instance_init (ClassFactory * self) {
441         self->ref_count = 1;
442 }
443
444
445 static void class_factory_finalize (ClassFactory* obj) {
446         ClassFactory * self;
447         self = CLASS_FACTORY (obj);
448 }
449
450
451 GType class_factory_get_type (void) {
452         static volatile gsize class_factory_type_id__volatile = 0;
453         if (g_once_init_enter (&class_factory_type_id__volatile)) {
454                 static const GTypeValueTable g_define_type_value_table = { value_class_factory_init, value_class_factory_free_value, value_class_factory_copy_value, value_class_factory_peek_pointer, "p", value_class_factory_collect_value, "p", value_class_factory_lcopy_value };
455                 static const GTypeInfo g_define_type_info = { sizeof (ClassFactoryClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) class_factory_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ClassFactory), 0, (GInstanceInitFunc) class_factory_instance_init, &g_define_type_value_table };
456                 static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
457                 GType class_factory_type_id;
458                 class_factory_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ClassFactory", &g_define_type_info, &g_define_type_fundamental_info, 0);
459                 g_once_init_leave (&class_factory_type_id__volatile, class_factory_type_id);
460         }
461         return class_factory_type_id__volatile;
462 }
463
464
465 gpointer class_factory_ref (gpointer instance) {
466         ClassFactory* self;
467         self = instance;
468         g_atomic_int_inc (&self->ref_count);
469         return instance;
470 }
471
472
473 void class_factory_unref (gpointer instance) {
474         ClassFactory* self;
475         self = instance;
476         if (g_atomic_int_dec_and_test (&self->ref_count)) {
477                 CLASS_FACTORY_GET_CLASS (self)->finalize (self);
478                 g_type_free_instance ((GTypeInstance *) self);
479         }
480 }
481
482
483
484