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