1 /* constant.c generated by valac, the Vala compiler
2 * generated from constant.vala, do not modify */
3
4 /* constant.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_CONSTANT_0_PROPERTY,
35 VALADOC_API_CONSTANT_CONSTANT_TYPE_PROPERTY,
36 VALADOC_API_CONSTANT_NODE_TYPE_PROPERTY,
37 VALADOC_API_CONSTANT_NUM_PROPERTIES
38 };
39 static GParamSpec* valadoc_api_constant_properties[VALADOC_API_CONSTANT_NUM_PROPERTIES];
40 #define _g_free0(var) (var = (g_free (var), NULL))
41 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
42 #define _valadoc_api_signature_builder_unref0(var) ((var == NULL) ? NULL : (var = (valadoc_api_signature_builder_unref (var), NULL)))
43
44 struct _ValadocApiConstantPrivate {
45 gchar* cname;
46 ValadocApiTypeReference* _constant_type;
47 };
48
49 static gint ValadocApiConstant_private_offset;
50 static gpointer valadoc_api_constant_parent_class = NULL;
51
52 static ValadocContentInline* valadoc_api_constant_real_build_signature (ValadocApiItem* base);
53 static void valadoc_api_constant_real_accept (ValadocApiNode* base,
54 ValadocApiVisitor* visitor);
55 static void valadoc_api_constant_finalize (GObject * obj);
56 static GType valadoc_api_constant_get_type_once (void);
57 static void _vala_valadoc_api_constant_get_property (GObject * object,
58 guint property_id,
59 GValue * value,
60 GParamSpec * pspec);
61 static void _vala_valadoc_api_constant_set_property (GObject * object,
62 guint property_id,
63 const GValue * value,
64 GParamSpec * pspec);
65
66 static inline gpointer
valadoc_api_constant_get_instance_private(ValadocApiConstant * self)67 valadoc_api_constant_get_instance_private (ValadocApiConstant* self)
68 {
69 return G_STRUCT_MEMBER_P (self, ValadocApiConstant_private_offset);
70 }
71
72 ValadocApiTypeReference*
valadoc_api_constant_get_constant_type(ValadocApiConstant * self)73 valadoc_api_constant_get_constant_type (ValadocApiConstant* self)
74 {
75 ValadocApiTypeReference* result;
76 ValadocApiTypeReference* _tmp0_;
77 g_return_val_if_fail (self != NULL, NULL);
78 _tmp0_ = self->priv->_constant_type;
79 result = _tmp0_;
80 return result;
81 }
82
83 static gpointer
_g_object_ref0(gpointer self)84 _g_object_ref0 (gpointer self)
85 {
86 return self ? g_object_ref (self) : NULL;
87 }
88
89 void
valadoc_api_constant_set_constant_type(ValadocApiConstant * self,ValadocApiTypeReference * value)90 valadoc_api_constant_set_constant_type (ValadocApiConstant* self,
91 ValadocApiTypeReference* value)
92 {
93 ValadocApiTypeReference* old_value;
94 g_return_if_fail (self != NULL);
95 old_value = valadoc_api_constant_get_constant_type (self);
96 if (old_value != value) {
97 ValadocApiTypeReference* _tmp0_;
98 _tmp0_ = _g_object_ref0 (value);
99 _g_object_unref0 (self->priv->_constant_type);
100 self->priv->_constant_type = _tmp0_;
101 g_object_notify_by_pspec ((GObject *) self, valadoc_api_constant_properties[VALADOC_API_CONSTANT_CONSTANT_TYPE_PROPERTY]);
102 }
103 }
104
105 ValadocApiConstant*
valadoc_api_constant_construct(GType object_type,ValadocApiNode * parent,ValadocApiSourceFile * file,const gchar * name,ValaSymbolAccessibility accessibility,ValadocApiSourceComment * comment,ValaConstant * data)106 valadoc_api_constant_construct (GType object_type,
107 ValadocApiNode* parent,
108 ValadocApiSourceFile* file,
109 const gchar* name,
110 ValaSymbolAccessibility accessibility,
111 ValadocApiSourceComment* comment,
112 ValaConstant* data)
113 {
114 ValadocApiConstant * self = NULL;
115 gchar* _tmp0_;
116 g_return_val_if_fail (parent != NULL, NULL);
117 g_return_val_if_fail (file != NULL, NULL);
118 g_return_val_if_fail (name != NULL, NULL);
119 g_return_val_if_fail (data != NULL, NULL);
120 self = (ValadocApiConstant*) valadoc_api_symbol_construct (object_type, parent, file, name, accessibility, comment, (ValaSymbol*) data);
121 _tmp0_ = vala_get_ccode_name ((ValaCodeNode*) data);
122 _g_free0 (self->priv->cname);
123 self->priv->cname = _tmp0_;
124 return self;
125 }
126
127 ValadocApiConstant*
valadoc_api_constant_new(ValadocApiNode * parent,ValadocApiSourceFile * file,const gchar * name,ValaSymbolAccessibility accessibility,ValadocApiSourceComment * comment,ValaConstant * data)128 valadoc_api_constant_new (ValadocApiNode* parent,
129 ValadocApiSourceFile* file,
130 const gchar* name,
131 ValaSymbolAccessibility accessibility,
132 ValadocApiSourceComment* comment,
133 ValaConstant* data)
134 {
135 return valadoc_api_constant_construct (VALADOC_API_TYPE_CONSTANT, parent, file, name, accessibility, comment, data);
136 }
137
138 /**
139 * Returns the name of this constant as it is used in C.
140 */
141 gchar*
valadoc_api_constant_get_cname(ValadocApiConstant * self)142 valadoc_api_constant_get_cname (ValadocApiConstant* self)
143 {
144 const gchar* _tmp0_;
145 gchar* _tmp1_;
146 gchar* result = NULL;
147 g_return_val_if_fail (self != NULL, NULL);
148 _tmp0_ = self->priv->cname;
149 _tmp1_ = g_strdup (_tmp0_);
150 result = _tmp1_;
151 return result;
152 }
153
154 /**
155 * {@inheritDoc}
156 */
157 static ValadocContentInline*
valadoc_api_constant_real_build_signature(ValadocApiItem * base)158 valadoc_api_constant_real_build_signature (ValadocApiItem* base)
159 {
160 ValadocApiConstant * self;
161 ValadocApiSignatureBuilder* _tmp0_;
162 ValadocApiSignatureBuilder* _tmp1_;
163 ValaSymbolAccessibility _tmp2_;
164 ValaSymbolAccessibility _tmp3_;
165 const gchar* _tmp4_;
166 ValadocApiSignatureBuilder* _tmp5_;
167 ValadocApiSignatureBuilder* _tmp6_;
168 ValadocApiTypeReference* _tmp7_;
169 ValadocContentInline* _tmp8_;
170 ValadocContentInline* _tmp9_;
171 ValadocApiSignatureBuilder* _tmp10_;
172 ValadocApiSignatureBuilder* _tmp11_;
173 ValadocContentRun* _tmp12_;
174 ValadocContentInline* _tmp13_;
175 ValadocContentInline* result = NULL;
176 self = (ValadocApiConstant*) base;
177 _tmp0_ = valadoc_api_signature_builder_new ();
178 _tmp1_ = _tmp0_;
179 _tmp2_ = valadoc_api_symbol_get_accessibility ((ValadocApiSymbol*) self);
180 _tmp3_ = _tmp2_;
181 _tmp4_ = vala_symbol_accessibility_to_string (_tmp3_);
182 _tmp5_ = valadoc_api_signature_builder_append_keyword (_tmp1_, _tmp4_, TRUE);
183 _tmp6_ = valadoc_api_signature_builder_append_keyword (_tmp5_, "const", TRUE);
184 _tmp7_ = self->priv->_constant_type;
185 _tmp8_ = valadoc_api_item_get_signature ((ValadocApiItem*) _tmp7_);
186 _tmp9_ = _tmp8_;
187 _tmp10_ = valadoc_api_signature_builder_append_content (_tmp6_, _tmp9_, TRUE);
188 _tmp11_ = valadoc_api_signature_builder_append_symbol (_tmp10_, (ValadocApiNode*) self, TRUE);
189 _tmp12_ = valadoc_api_signature_builder_get (_tmp11_);
190 _tmp13_ = (ValadocContentInline*) _tmp12_;
191 _valadoc_api_signature_builder_unref0 (_tmp1_);
192 result = _tmp13_;
193 return result;
194 }
195
196 static ValadocApiNodeType
valadoc_api_constant_real_get_node_type(ValadocApiNode * base)197 valadoc_api_constant_real_get_node_type (ValadocApiNode* base)
198 {
199 ValadocApiNodeType result;
200 ValadocApiConstant* self;
201 self = (ValadocApiConstant*) base;
202 result = VALADOC_API_NODE_TYPE_CONSTANT;
203 return result;
204 }
205
206 /**
207 * {@inheritDoc}
208 */
209 static void
valadoc_api_constant_real_accept(ValadocApiNode * base,ValadocApiVisitor * visitor)210 valadoc_api_constant_real_accept (ValadocApiNode* base,
211 ValadocApiVisitor* visitor)
212 {
213 ValadocApiConstant * self;
214 self = (ValadocApiConstant*) base;
215 g_return_if_fail (visitor != NULL);
216 valadoc_api_visitor_visit_constant (visitor, self);
217 }
218
219 static void
valadoc_api_constant_class_init(ValadocApiConstantClass * klass,gpointer klass_data)220 valadoc_api_constant_class_init (ValadocApiConstantClass * klass,
221 gpointer klass_data)
222 {
223 valadoc_api_constant_parent_class = g_type_class_peek_parent (klass);
224 g_type_class_adjust_private_offset (klass, &ValadocApiConstant_private_offset);
225 ((ValadocApiItemClass *) klass)->build_signature = (ValadocContentInline* (*) (ValadocApiItem*)) valadoc_api_constant_real_build_signature;
226 ((ValadocApiNodeClass *) klass)->accept = (void (*) (ValadocApiNode*, ValadocApiVisitor*)) valadoc_api_constant_real_accept;
227 VALADOC_API_NODE_CLASS (klass)->get_node_type = valadoc_api_constant_real_get_node_type;
228 G_OBJECT_CLASS (klass)->get_property = _vala_valadoc_api_constant_get_property;
229 G_OBJECT_CLASS (klass)->set_property = _vala_valadoc_api_constant_set_property;
230 G_OBJECT_CLASS (klass)->finalize = valadoc_api_constant_finalize;
231 /**
232 * The data type of this constant.
233 */
234 g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_CONSTANT_CONSTANT_TYPE_PROPERTY, valadoc_api_constant_properties[VALADOC_API_CONSTANT_CONSTANT_TYPE_PROPERTY] = g_param_spec_object ("constant-type", "constant-type", "constant-type", VALADOC_API_TYPE_TYPEREFERENCE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
235 /**
236 * {@inheritDoc}
237 */
238 g_object_class_install_property (G_OBJECT_CLASS (klass), VALADOC_API_CONSTANT_NODE_TYPE_PROPERTY, valadoc_api_constant_properties[VALADOC_API_CONSTANT_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));
239 }
240
241 static void
valadoc_api_constant_instance_init(ValadocApiConstant * self,gpointer klass)242 valadoc_api_constant_instance_init (ValadocApiConstant * self,
243 gpointer klass)
244 {
245 self->priv = valadoc_api_constant_get_instance_private (self);
246 }
247
248 static void
valadoc_api_constant_finalize(GObject * obj)249 valadoc_api_constant_finalize (GObject * obj)
250 {
251 ValadocApiConstant * self;
252 self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALADOC_API_TYPE_CONSTANT, ValadocApiConstant);
253 _g_free0 (self->priv->cname);
254 _g_object_unref0 (self->priv->_constant_type);
255 G_OBJECT_CLASS (valadoc_api_constant_parent_class)->finalize (obj);
256 }
257
258 /**
259 * Represents a type member with a constant value.
260 */
261 static GType
valadoc_api_constant_get_type_once(void)262 valadoc_api_constant_get_type_once (void)
263 {
264 static const GTypeInfo g_define_type_info = { sizeof (ValadocApiConstantClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) valadoc_api_constant_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValadocApiConstant), 0, (GInstanceInitFunc) valadoc_api_constant_instance_init, NULL };
265 GType valadoc_api_constant_type_id;
266 valadoc_api_constant_type_id = g_type_register_static (VALADOC_API_TYPE_SYMBOL, "ValadocApiConstant", &g_define_type_info, 0);
267 ValadocApiConstant_private_offset = g_type_add_instance_private (valadoc_api_constant_type_id, sizeof (ValadocApiConstantPrivate));
268 return valadoc_api_constant_type_id;
269 }
270
271 GType
valadoc_api_constant_get_type(void)272 valadoc_api_constant_get_type (void)
273 {
274 static volatile gsize valadoc_api_constant_type_id__volatile = 0;
275 if (g_once_init_enter (&valadoc_api_constant_type_id__volatile)) {
276 GType valadoc_api_constant_type_id;
277 valadoc_api_constant_type_id = valadoc_api_constant_get_type_once ();
278 g_once_init_leave (&valadoc_api_constant_type_id__volatile, valadoc_api_constant_type_id);
279 }
280 return valadoc_api_constant_type_id__volatile;
281 }
282
283 static void
_vala_valadoc_api_constant_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)284 _vala_valadoc_api_constant_get_property (GObject * object,
285 guint property_id,
286 GValue * value,
287 GParamSpec * pspec)
288 {
289 ValadocApiConstant * self;
290 self = G_TYPE_CHECK_INSTANCE_CAST (object, VALADOC_API_TYPE_CONSTANT, ValadocApiConstant);
291 switch (property_id) {
292 case VALADOC_API_CONSTANT_CONSTANT_TYPE_PROPERTY:
293 g_value_set_object (value, valadoc_api_constant_get_constant_type (self));
294 break;
295 case VALADOC_API_CONSTANT_NODE_TYPE_PROPERTY:
296 g_value_set_enum (value, valadoc_api_node_get_node_type ((ValadocApiNode*) self));
297 break;
298 default:
299 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
300 break;
301 }
302 }
303
304 static void
_vala_valadoc_api_constant_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)305 _vala_valadoc_api_constant_set_property (GObject * object,
306 guint property_id,
307 const GValue * value,
308 GParamSpec * pspec)
309 {
310 ValadocApiConstant * self;
311 self = G_TYPE_CHECK_INSTANCE_CAST (object, VALADOC_API_TYPE_CONSTANT, ValadocApiConstant);
312 switch (property_id) {
313 case VALADOC_API_CONSTANT_CONSTANT_TYPE_PROPERTY:
314 valadoc_api_constant_set_constant_type (self, g_value_get_object (value));
315 break;
316 default:
317 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
318 break;
319 }
320 }
321
322