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