1 /* AppDirs.c generated by valac, the Vala compiler
2 * generated from AppDirs.vala, do not modify */
4 /* Copyright 2009-2010 Yorba Foundation
6 * This software is licensed under the GNU LGPL (version 2.1 or later).
7 * See the COPYING file in this distribution.
11 #include <glib-object.h>
15 #include <gobject/gvaluecollector.h>
18 #define TYPE_APP_DIRS (app_dirs_get_type ())
19 #define APP_DIRS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_APP_DIRS, AppDirs))
20 #define APP_DIRS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_APP_DIRS, AppDirsClass))
21 #define IS_APP_DIRS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_APP_DIRS))
22 #define IS_APP_DIRS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_APP_DIRS))
23 #define APP_DIRS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_APP_DIRS, AppDirsClass))
25 typedef struct _AppDirs AppDirs;
26 typedef struct _AppDirsClass AppDirsClass;
27 typedef struct _AppDirsPrivate AppDirsPrivate;
28 #define _g_free0(var) (var = (g_free (var), NULL))
29 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
30 typedef struct _ParamSpecAppDirs ParamSpecAppDirs;
33 GTypeInstance parent_instance;
34 volatile int ref_count;
35 AppDirsPrivate * priv;
38 struct _AppDirsClass {
39 GTypeClass parent_class;
40 void (*finalize) (AppDirs *self);
43 struct _ParamSpecAppDirs {
44 GParamSpec parent_instance;
48 static GFile* app_dirs_exec_dir;
49 static GFile* app_dirs_exec_dir = NULL;
50 static char* app_dirs_program_name;
51 static char* app_dirs_program_name = NULL;
52 static gpointer app_dirs_parent_class = NULL;
54 gpointer app_dirs_ref (gpointer instance);
55 void app_dirs_unref (gpointer instance);
56 GParamSpec* param_spec_app_dirs (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
57 void value_set_app_dirs (GValue* value, gpointer v_object);
58 void value_take_app_dirs (GValue* value, gpointer v_object);
59 gpointer value_get_app_dirs (const GValue* value);
60 GType app_dirs_get_type (void);
62 APP_DIRS_DUMMY_PROPERTY
64 void app_dirs_init (const char* arg0, const char* program_name);
65 void app_dirs_terminate (void);
66 GFile* app_dirs_get_exec_dir (void);
67 static GFile* app_dirs_get_install_dir (void);
68 GFile* app_dirs_get_resources_dir (void);
69 AppDirs* app_dirs_new (void);
70 AppDirs* app_dirs_construct (GType object_type);
71 static void app_dirs_finalize (AppDirs* obj);
75 #line 14 "AppDirs.vala"
76 void app_dirs_init (const char* arg0, const char* program_name) {
83 #line 14 "AppDirs.vala"
84 g_return_if_fail (arg0 != NULL);
85 #line 14 "AppDirs.vala"
86 g_return_if_fail (program_name != NULL);
87 #line 15 "AppDirs.vala"
88 exec_file = (_tmp1_ = g_file_new_for_path (_tmp0_ = g_find_program_in_path (arg0)), _g_free0 (_tmp0_), _tmp1_);
89 #line 16 "AppDirs.vala"
90 app_dirs_exec_dir = (_tmp2_ = g_file_get_parent (exec_file), _g_object_unref0 (app_dirs_exec_dir), _tmp2_);
91 #line 17 "AppDirs.vala"
92 app_dirs_program_name = (_tmp3_ = g_strdup (program_name), _g_free0 (app_dirs_program_name), _tmp3_);
94 _g_object_unref0 (exec_file);
98 #line 20 "AppDirs.vala"
99 void app_dirs_terminate (void) {
100 #line 101 "AppDirs.c"
104 static gpointer _g_object_ref0 (gpointer self) {
105 return self ? g_object_ref (self) : NULL;
109 #line 23 "AppDirs.vala"
110 GFile* app_dirs_get_exec_dir (void) {
111 #line 112 "AppDirs.c"
112 GFile* result = NULL;
113 result = _g_object_ref0 (app_dirs_exec_dir);
114 #line 24 "AppDirs.vala"
116 #line 117 "AppDirs.c"
120 #line 27 "AppDirs.vala"
121 GFile* app_dirs_get_resources_dir (void) {
122 #line 123 "AppDirs.c"
123 GFile* result = NULL;
127 #line 28 "AppDirs.vala"
128 exec_dir = app_dirs_get_exec_dir ();
129 #line 29 "AppDirs.vala"
130 install_dir = app_dirs_get_install_dir ();
131 #line 132 "AppDirs.c"
133 #line 31 "AppDirs.vala"
134 if (install_dir != NULL) {
135 #line 136 "AppDirs.c"
138 #line 32 "AppDirs.vala"
139 return_value = (_tmp1_ = g_file_get_child (_tmp0_ = g_file_get_child (install_dir, "share"), app_dirs_program_name), _g_object_unref0 (return_value), _tmp1_);
140 #line 141 "AppDirs.c"
141 _g_object_unref0 (_tmp0_);
144 #line 34 "AppDirs.vala"
145 return_value = (_tmp2_ = _g_object_ref0 (exec_dir), _g_object_unref0 (return_value), _tmp2_);
146 #line 147 "AppDirs.c"
148 result = g_file_get_child (return_value, "resources");
149 _g_object_unref0 (exec_dir);
150 _g_object_unref0 (install_dir);
151 _g_object_unref0 (return_value);
152 #line 36 "AppDirs.vala"
154 #line 155 "AppDirs.c"
158 #line 39 "AppDirs.vala"
159 static GFile* app_dirs_get_install_dir (void) {
160 #line 161 "AppDirs.c"
161 GFile* result = NULL;
164 #line 40 "AppDirs.vala"
165 prefix_dir = g_file_new_for_path (_PREFIX);
166 #line 167 "AppDirs.c"
168 #line 41 "AppDirs.vala"
169 if (g_file_has_prefix (app_dirs_exec_dir, prefix_dir)) {
170 #line 41 "AppDirs.vala"
172 #line 173 "AppDirs.c"
174 #line 41 "AppDirs.vala"
176 #line 177 "AppDirs.c"
178 result = _g_object_ref0 (_tmp0_);
179 _g_object_unref0 (prefix_dir);
180 #line 41 "AppDirs.vala"
182 #line 183 "AppDirs.c"
186 #line 10 "AppDirs.vala"
187 AppDirs* app_dirs_construct (GType object_type) {
188 #line 189 "AppDirs.c"
190 self = (AppDirs*) g_type_create_instance (object_type);
195 #line 10 "AppDirs.vala"
196 AppDirs* app_dirs_new (void) {
197 #line 10 "AppDirs.vala"
198 return app_dirs_construct (TYPE_APP_DIRS);
199 #line 200 "AppDirs.c"
203 static void value_app_dirs_init (GValue* value) {
204 value->data[0].v_pointer = NULL;
208 static void value_app_dirs_free_value (GValue* value) {
209 if (value->data[0].v_pointer) {
210 app_dirs_unref (value->data[0].v_pointer);
215 static void value_app_dirs_copy_value (const GValue* src_value, GValue* dest_value) {
216 if (src_value->data[0].v_pointer) {
217 dest_value->data[0].v_pointer = app_dirs_ref (src_value->data[0].v_pointer);
219 dest_value->data[0].v_pointer = NULL;
224 static gpointer value_app_dirs_peek_pointer (const GValue* value) {
225 return value->data[0].v_pointer;
229 static gchar* value_app_dirs_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
230 if (collect_values[0].v_pointer) {
232 object = collect_values[0].v_pointer;
233 if (object->parent_instance.g_class == NULL) {
234 return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
235 } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
236 return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
238 value->data[0].v_pointer = app_dirs_ref (object);
240 value->data[0].v_pointer = NULL;
246 static gchar* value_app_dirs_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
248 object_p = collect_values[0].v_pointer;
250 return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
252 if (!value->data[0].v_pointer) {
254 } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) {
255 *object_p = value->data[0].v_pointer;
257 *object_p = app_dirs_ref (value->data[0].v_pointer);
263 GParamSpec* param_spec_app_dirs (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
264 ParamSpecAppDirs* spec;
265 g_return_val_if_fail (g_type_is_a (object_type, TYPE_APP_DIRS), NULL);
266 spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
267 G_PARAM_SPEC (spec)->value_type = object_type;
268 return G_PARAM_SPEC (spec);
272 gpointer value_get_app_dirs (const GValue* value) {
273 g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_APP_DIRS), NULL);
274 return value->data[0].v_pointer;
278 void value_set_app_dirs (GValue* value, gpointer v_object) {
280 g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_APP_DIRS));
281 old = value->data[0].v_pointer;
283 g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_APP_DIRS));
284 g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
285 value->data[0].v_pointer = v_object;
286 app_dirs_ref (value->data[0].v_pointer);
288 value->data[0].v_pointer = NULL;
291 app_dirs_unref (old);
296 void value_take_app_dirs (GValue* value, gpointer v_object) {
298 g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_APP_DIRS));
299 old = value->data[0].v_pointer;
301 g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_APP_DIRS));
302 g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
303 value->data[0].v_pointer = v_object;
305 value->data[0].v_pointer = NULL;
308 app_dirs_unref (old);
313 static void app_dirs_class_init (AppDirsClass * klass) {
314 app_dirs_parent_class = g_type_class_peek_parent (klass);
315 APP_DIRS_CLASS (klass)->finalize = app_dirs_finalize;
319 static void app_dirs_instance_init (AppDirs * self) {
324 static void app_dirs_finalize (AppDirs* obj) {
326 self = APP_DIRS (obj);
330 GType app_dirs_get_type (void) {
331 static volatile gsize app_dirs_type_id__volatile = 0;
332 if (g_once_init_enter (&app_dirs_type_id__volatile)) {
333 static const GTypeValueTable g_define_type_value_table = { value_app_dirs_init, value_app_dirs_free_value, value_app_dirs_copy_value, value_app_dirs_peek_pointer, "p", value_app_dirs_collect_value, "p", value_app_dirs_lcopy_value };
334 static const GTypeInfo g_define_type_info = { sizeof (AppDirsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) app_dirs_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (AppDirs), 0, (GInstanceInitFunc) app_dirs_instance_init, &g_define_type_value_table };
335 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) };
336 GType app_dirs_type_id;
337 app_dirs_type_id = g_type_register_fundamental (g_type_fundamental_next (), "AppDirs", &g_define_type_info, &g_define_type_fundamental_info, 0);
338 g_once_init_leave (&app_dirs_type_id__volatile, app_dirs_type_id);
340 return app_dirs_type_id__volatile;
344 gpointer app_dirs_ref (gpointer instance) {
347 g_atomic_int_inc (&self->ref_count);
352 void app_dirs_unref (gpointer instance) {
355 if (g_atomic_int_dec_and_test (&self->ref_count)) {
356 APP_DIRS_GET_CLASS (self)->finalize (self);
357 g_type_free_instance ((GTypeInstance *) self);