1 /* enumvalue.c generated by valac, the Vala compiler
2  * generated from enumvalue.vala, do not modify */
3 
4 /* enumvalue.vala
5  *
6  * Copyright (C) 2008-2011  Florian Brosch
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  * 	Florian Brosch <flo.brosch@gmail.com>
24  */
25 
26 #include "valadoc.h"
27 #include <stdlib.h>
28 #include <string.h>
29 #include <glib.h>
30 #include <vala.h>
31 #include <valacodegen.h>
32 
33 enum  {
34 	VALADOC_API_ENUM_VALUE_0_PROPERTY,
35 	VALADOC_API_ENUM_VALUE_DEFAULT_VALUE_PROPERTY,
36 	VALADOC_API_ENUM_VALUE_HAS_DEFAULT_VALUE_PROPERTY,
37 	VALADOC_API_ENUM_VALUE_NODE_TYPE_PROPERTY,
38 	VALADOC_API_ENUM_VALUE_NUM_PROPERTIES
39 };
40 static GParamSpec* valadoc_api_enum_value_properties[VALADOC_API_ENUM_VALUE_NUM_PROPERTIES];
41 #define _g_free0(var) (var = (g_free (var), NULL))
42 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
43 #define _valadoc_api_signature_builder_unref0(var) ((var == NULL) ? NULL : (var = (valadoc_api_signature_builder_unref (var), NULL)))
44 
45 struct _ValadocApiEnumValuePrivate {
46 	gchar* cname;
47 	ValadocContentRun* _default_value;
48 };
49 
50 static gint ValadocApiEnumValue_private_offset;
51 static gpointer valadoc_api_enum_value_parent_class = NULL;
52 
53 static void valadoc_api_enum_value_real_accept (ValadocApiNode* base,
54                                          ValadocApiVisitor* visitor);
55 static ValadocContentInline* valadoc_api_enum_value_real_build_signature (ValadocApiItem* base);
56 static void valadoc_api_enum_value_finalize (GObject * obj);
57 static GType valadoc_api_enum_value_get_type_once (void);
58 static void _vala_valadoc_api_enum_value_get_property (GObject * object,
59                                                 guint property_id,
60                                                 GValue * value,
61                                                 GParamSpec * pspec);
62 static void _vala_valadoc_api_enum_value_set_property (GObject * object,
63                                                 guint property_id,
64                                                 const GValue * value,
65                                                 GParamSpec * pspec);
66 
67 static inline gpointer
valadoc_api_enum_value_get_instance_private(ValadocApiEnumValue * self)68 valadoc_api_enum_value_get_instance_private (ValadocApiEnumValue* self)
69 {
70 	return G_STRUCT_MEMBER_P (self, ValadocApiEnumValue_private_offset);
71 }
72 
73 ValadocContentRun*
valadoc_api_enum_value_get_default_value(ValadocApiEnumValue * self)74 valadoc_api_enum_value_get_default_value (ValadocApiEnumValue* self)
75 {
76 	ValadocContentRun* result;
77 	ValadocContentRun* _tmp0_;
78 	g_return_val_if_fail (self != NULL, NULL);
79 	_tmp0_ = self->priv->_default_value;
80 	result = _tmp0_;
81 	return result;
82 }
83 
84 static gpointer
_g_object_ref0(gpointer self)85 _g_object_ref0 (gpointer self)
86 {
87 	return self ? g_object_ref (self) : NULL;
88 }
89 
90 void
valadoc_api_enum_value_set_default_value(ValadocApiEnumValue * self,ValadocContentRun * value)91 valadoc_api_enum_value_set_default_value (ValadocApiEnumValue* self,
92                                           ValadocContentRun* value)
93 {
94 	ValadocContentRun* old_value;
95 	g_return_if_fail (self != NULL);
96 	old_value = valadoc_api_enum_value_get_default_value (self);
97 	if (old_value != value) {
98 		ValadocContentRun* _tmp0_;
99 		_tmp0_ = _g_object_ref0 (value);
100 		_g_object_unref0 (self->priv->_default_value);
101 		self->priv->_default_value = _tmp0_;
102 		g_object_notify_by_pspec ((GObject *) self, valadoc_api_enum_value_properties[VALADOC_API_ENUM_VALUE_DEFAULT_VALUE_PROPERTY]);
103 	}
104 }
105 
106 gboolean
valadoc_api_enum_value_get_has_default_value(ValadocApiEnumValue * self)107 valadoc_api_enum_value_get_has_default_value (ValadocApiEnumValue* self)
108 {
109 	gboolean result;
110 	ValadocContentRun* _tmp0_;
111 	g_return_val_if_fail (self != NULL, FALSE);
112 	_tmp0_ = self->priv->_default_value;
113 	result = _tmp0_ != NULL;
114 	return result;
115 }
116 
117 ValadocApiEnumValue*
valadoc_api_enum_value_construct(GType object_type,ValadocApiEnum * parent,ValadocApiSourceFile * file,const gchar * name,ValadocApiSourceComment * comment,ValaEnumValue * data)118 valadoc_api_enum_value_construct (GType object_type,
119                                   ValadocApiEnum* parent,
120                                   ValadocApiSourceFile* file,
121                                   const gchar* name,
122                                   ValadocApiSourceComment* comment,
123                                   ValaEnumValue* data)
124 {
125 	ValadocApiEnumValue * self = NULL;
126 	ValaSymbolAccessibility _tmp0_;
127 	ValaSymbolAccessibility _tmp1_;
128 	gchar* _tmp2_;
129 	g_return_val_if_fail (parent != NULL, NULL);
130 	g_return_val_if_fail (file != NULL, NULL);
131 	g_return_val_if_fail (name != NULL, NULL);
132 	g_return_val_if_fail (data != NULL, NULL);
133 	_tmp0_ = valadoc_api_symbol_get_accessibility ((ValadocApiSymbol*) parent);
134 	_tmp1_ = _tmp0_;
135 	self = (ValadocApiEnumValue*) valadoc_api_symbol_construct (object_type, (ValadocApiNode*) parent, file, name, _tmp1_, comment, (ValaSymbol*) data);
136 	_tmp2_ = vala_get_ccode_name ((ValaCodeNode*) data);
137 	_g_free0 (self->priv->cname);
138 	self->priv->cname = _tmp2_;
139 	return self;
140 }
141 
142 ValadocApiEnumValue*
valadoc_api_enum_value_new(ValadocApiEnum * parent,ValadocApiSourceFile * file,const gchar * name,ValadocApiSourceComment * comment,ValaEnumValue * data)143 valadoc_api_enum_value_new (ValadocApiEnum* parent,
144                             ValadocApiSourceFile* file,
145                             const gchar* name,
146                             ValadocApiSourceComment* comment,
147                             ValaEnumValue* data)
148 {
149 	return valadoc_api_enum_value_construct (VALADOC_API_TYPE_ENUM_VALUE, parent, file, name, comment, data);
150 }
151 
152 /**
153  * Returns the name of this enum value as it is used in C.
154  */
155 gchar*
valadoc_api_enum_value_get_cname(ValadocApiEnumValue * self)156 valadoc_api_enum_value_get_cname (ValadocApiEnumValue* self)
157 {
158 	const gchar* _tmp0_;
159 	gchar* _tmp1_;
160 	gchar* result = NULL;
161 	g_return_val_if_fail (self != NULL, NULL);
162 	_tmp0_ = self->priv->cname;
163 	_tmp1_ = g_strdup (_tmp0_);
164 	result = _tmp1_;
165 	return result;
166 }
167 
168 static ValadocApiNodeType
valadoc_api_enum_value_real_get_node_type(ValadocApiNode * base)169 valadoc_api_enum_value_real_get_node_type (ValadocApiNode* base)
170 {
171 	ValadocApiNodeType result;
172 	ValadocApiEnumValue* self;
173 	self = (ValadocApiEnumValue*) base;
174 	result = VALADOC_API_NODE_TYPE_ENUM_VALUE;
175 	return result;
176 }
177 
178 /**
179  * {@inheritDoc}
180  */
181 static void
valadoc_api_enum_value_real_accept(ValadocApiNode * base,ValadocApiVisitor * visitor)182 valadoc_api_enum_value_real_accept (ValadocApiNode* base,
183                                     ValadocApiVisitor* visitor)
184 {
185 	ValadocApiEnumValue * self;
186 	self = (ValadocApiEnumValue*) base;
187 	g_return_if_fail (visitor != NULL);
188 	valadoc_api_visitor_visit_enum_value (visitor, self);
189 }
190 
191 /**
192  * {@inheritDoc}
193  */
194 static gpointer
_valadoc_api_signature_builder_ref0(gpointer self)195 _valadoc_api_signature_builder_ref0 (gpointer self)
196 {
197 	return self ? valadoc_api_signature_builder_ref (self) : NULL;
198 }
199 
200 static ValadocContentInline*
valadoc_api_enum_value_real_build_signature(ValadocApiItem * base)201 valadoc_api_enum_value_real_build_signature (ValadocApiItem* base)
202 {
203 	ValadocApiEnumValue * self;
204 	ValadocApiSignatureBuilder* builder = NULL;
205 	ValadocApiSignatureBuilder* _tmp0_;
206 	ValadocApiSignatureBuilder* _tmp1_;
207 	ValadocApiSignatureBuilder* _tmp2_;
208 	ValadocApiSignatureBuilder* _tmp3_;
209 	ValadocApiSignatureBuilder* _tmp4_;
210 	gboolean _tmp5_;
211 	gboolean _tmp6_;
212 	ValadocApiSignatureBuilder* _tmp10_;
213 	ValadocContentRun* _tmp11_;
214 	ValadocContentInline* result = NULL;
215 	self = (ValadocApiEnumValue*) base;
216 	_tmp0_ = valadoc_api_signature_builder_new ();
217 	_tmp1_ = _tmp0_;
218 	_tmp2_ = valadoc_api_signature_builder_append_symbol (_tmp1_, (ValadocApiNode*) self, TRUE);
219 	_tmp3_ = _valadoc_api_signature_builder_ref0 (_tmp2_);
220 	_tmp4_ = _tmp3_;
221 	_valadoc_api_signature_builder_unref0 (_tmp1_);
222 	builder = _tmp4_;
223 	_tmp5_ = valadoc_api_enum_value_get_has_default_value (self);
224 	_tmp6_ = _tmp5_;
225 	if (_tmp6_) {
226 		ValadocApiSignatureBuilder* _tmp7_;
227 		ValadocApiSignatureBuilder* _tmp8_;
228 		ValadocContentRun* _tmp9_;
229 		_tmp7_ = builder;
230 		valadoc_api_signature_builder_append (_tmp7_, "=", TRUE);
231 		_tmp8_ = builder;
232 		_tmp9_ = self->priv->_default_value;
233 		valadoc_api_signature_builder_append_content (_tmp8_, (ValadocContentInline*) _tmp9_, TRUE);
234 	}
235 	_tmp10_ = builder;
236 	_tmp11_ = valadoc_api_signature_builder_get (_tmp10_);
237 	result = (ValadocContentInline*) _tmp11_;
238 	_valadoc_api_signature_builder_unref0 (builder);
239 	return result;
240 }
241 
242 static void
valadoc_api_enum_value_class_init(ValadocApiEnumValueClass * klass,gpointer klass_data)243 valadoc_api_enum_value_class_init (ValadocApiEnumValueClass * klass,
244                                    gpointer klass_data)
245 {
246 	valadoc_api_enum_value_parent_class = g_type_class_peek_parent (klass);
247 	g_type_class_adjust_private_offset (klass, &ValadocApiEnumValue_private_offset);
248 	((ValadocApiNodeClass *) klass)->accept = (void (*) (ValadocApiNode*, ValadocApiVisitor*)) valadoc_api_enum_value_real_accept;
249 	((ValadocApiItemClass *) klass)->build_signature = (ValadocContentInline* (*) (ValadocApiItem*)) valadoc_api_enum_value_real_build_signature;
250 	VALADOC_API_NODE_CLASS (klass)->get_node_type = valadoc_api_enum_value_real_get_node_type;
251 	G_OBJECT_CLASS (klass)->get_property = _vala_valadoc_api_enum_value_get_property;
252 	G_OBJECT_CLASS (klass)->set_property = _vala_valadoc_api_enum_value_set_property;
253 	G_OBJECT_CLASS (klass)->finalize = valadoc_api_enum_value_finalize;
254 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_ENUM_VALUE_DEFAULT_VALUE_PROPERTY, valadoc_api_enum_value_properties[VALADOC_API_ENUM_VALUE_DEFAULT_VALUE_PROPERTY] = g_param_spec_object ("default-value", "default-value", "default-value", VALADOC_CONTENT_TYPE_RUN, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
255 	/**
256 	 * Specifies whether the parameter has a default value
257 	 */
258 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_ENUM_VALUE_HAS_DEFAULT_VALUE_PROPERTY, valadoc_api_enum_value_properties[VALADOC_API_ENUM_VALUE_HAS_DEFAULT_VALUE_PROPERTY] = g_param_spec_boolean ("has-default-value", "has-default-value", "has-default-value", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
259 	/**
260 	 * {@inheritDoc}
261 	 */
262 	g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_ENUM_VALUE_NODE_TYPE_PROPERTY, valadoc_api_enum_value_properties[VALADOC_API_ENUM_VALUE_NODE_TYPE_PROPERTY] = g_param_spec_enum ("node-type", "node-type", "node-type", VALADOC_API_TYPE_NODE_TYPE, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE));
263 }
264 
265 static void
valadoc_api_enum_value_instance_init(ValadocApiEnumValue * self,gpointer klass)266 valadoc_api_enum_value_instance_init (ValadocApiEnumValue * self,
267                                       gpointer klass)
268 {
269 	self->priv = valadoc_api_enum_value_get_instance_private (self);
270 }
271 
272 static void
valadoc_api_enum_value_finalize(GObject * obj)273 valadoc_api_enum_value_finalize (GObject * obj)
274 {
275 	ValadocApiEnumValue * self;
276 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALADOC_API_TYPE_ENUM_VALUE, ValadocApiEnumValue);
277 	_g_free0 (self->priv->cname);
278 	_g_object_unref0 (self->priv->_default_value);
279 	G_OBJECT_CLASS (valadoc_api_enum_value_parent_class)->finalize (obj);
280 }
281 
282 /**
283  * Represents an enum member.
284  */
285 static GType
valadoc_api_enum_value_get_type_once(void)286 valadoc_api_enum_value_get_type_once (void)
287 {
288 	static const GTypeInfo g_define_type_info = { sizeof (ValadocApiEnumValueClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) valadoc_api_enum_value_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValadocApiEnumValue), 0, (GInstanceInitFunc) valadoc_api_enum_value_instance_init, NULL };
289 	GType valadoc_api_enum_value_type_id;
290 	valadoc_api_enum_value_type_id = g_type_register_static (VALADOC_API_TYPE_SYMBOL, "ValadocApiEnumValue", &g_define_type_info, 0);
291 	ValadocApiEnumValue_private_offset = g_type_add_instance_private (valadoc_api_enum_value_type_id, sizeof (ValadocApiEnumValuePrivate));
292 	return valadoc_api_enum_value_type_id;
293 }
294 
295 GType
valadoc_api_enum_value_get_type(void)296 valadoc_api_enum_value_get_type (void)
297 {
298 	static volatile gsize valadoc_api_enum_value_type_id__volatile = 0;
299 	if (g_once_init_enter (&valadoc_api_enum_value_type_id__volatile)) {
300 		GType valadoc_api_enum_value_type_id;
301 		valadoc_api_enum_value_type_id = valadoc_api_enum_value_get_type_once ();
302 		g_once_init_leave (&valadoc_api_enum_value_type_id__volatile, valadoc_api_enum_value_type_id);
303 	}
304 	return valadoc_api_enum_value_type_id__volatile;
305 }
306 
307 static void
_vala_valadoc_api_enum_value_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)308 _vala_valadoc_api_enum_value_get_property (GObject * object,
309                                            guint property_id,
310                                            GValue * value,
311                                            GParamSpec * pspec)
312 {
313 	ValadocApiEnumValue * self;
314 	self = G_TYPE_CHECK_INSTANCE_CAST (object, VALADOC_API_TYPE_ENUM_VALUE, ValadocApiEnumValue);
315 	switch (property_id) {
316 		case VALADOC_API_ENUM_VALUE_DEFAULT_VALUE_PROPERTY:
317 		g_value_set_object (value, valadoc_api_enum_value_get_default_value (self));
318 		break;
319 		case VALADOC_API_ENUM_VALUE_HAS_DEFAULT_VALUE_PROPERTY:
320 		g_value_set_boolean (value, valadoc_api_enum_value_get_has_default_value (self));
321 		break;
322 		case VALADOC_API_ENUM_VALUE_NODE_TYPE_PROPERTY:
323 		g_value_set_enum (value, valadoc_api_node_get_node_type ((ValadocApiNode*) self));
324 		break;
325 		default:
326 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
327 		break;
328 	}
329 }
330 
331 static void
_vala_valadoc_api_enum_value_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)332 _vala_valadoc_api_enum_value_set_property (GObject * object,
333                                            guint property_id,
334                                            const GValue * value,
335                                            GParamSpec * pspec)
336 {
337 	ValadocApiEnumValue * self;
338 	self = G_TYPE_CHECK_INSTANCE_CAST (object, VALADOC_API_TYPE_ENUM_VALUE, ValadocApiEnumValue);
339 	switch (property_id) {
340 		case VALADOC_API_ENUM_VALUE_DEFAULT_VALUE_PROPERTY:
341 		valadoc_api_enum_value_set_default_value (self, g_value_get_object (value));
342 		break;
343 		default:
344 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
345 		break;
346 	}
347 }
348 
349