1 /* hierarchychart.c generated by valac, the Vala compiler
2  * generated from hierarchychart.vala, do not modify */
3 
4 /* hierarchychart.vala
5  *
6  * Copyright (C) 2008  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 <glib.h>
28 #include <graphviz/gvc.h>
29 #include <valagee.h>
30 #include <glib-object.h>
31 
32 enum  {
33 	VALADOC_CHARTS_HIERARCHY_0_PROPERTY,
34 	VALADOC_CHARTS_HIERARCHY_NUM_PROPERTIES
35 };
36 static GParamSpec* valadoc_charts_hierarchy_properties[VALADOC_CHARTS_HIERARCHY_NUM_PROPERTIES];
37 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
38 #define _vala_iterator_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterator_unref (var), NULL)))
39 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
40 
41 static gpointer valadoc_charts_hierarchy_parent_class = NULL;
42 
43 static void valadoc_charts_hierarchy_draw_implemented_interfaces (ValadocChartsHierarchy* self,
44                                                            Agnode_t* child,
45                                                            ValaCollection* interfaces);
46 static void valadoc_charts_hierarchy_draw_parent_classes (ValadocChartsHierarchy* self,
47                                                    ValadocApiClass* item,
48                                                    Agnode_t* child);
49 static void valadoc_charts_hierarchy_draw_parent_structs (ValadocChartsHierarchy* self,
50                                                    ValadocApiStruct* item,
51                                                    Agnode_t* child);
52 static void valadoc_charts_hierarchy_real_visit_interface (ValadocApiVisitor* base,
53                                                     ValadocApiInterface* item);
54 static void valadoc_charts_hierarchy_real_visit_class (ValadocApiVisitor* base,
55                                                 ValadocApiClass* item);
56 static void valadoc_charts_hierarchy_real_visit_struct (ValadocApiVisitor* base,
57                                                  ValadocApiStruct* item);
58 static GType valadoc_charts_hierarchy_get_type_once (void);
59 
60 ValadocChartsHierarchy*
valadoc_charts_hierarchy_construct(GType object_type,ValadocChartsFactory * factory,ValadocApiNode * node)61 valadoc_charts_hierarchy_construct (GType object_type,
62                                     ValadocChartsFactory* factory,
63                                     ValadocApiNode* node)
64 {
65 	ValadocChartsHierarchy * self = NULL;
66 	g_return_val_if_fail (factory != NULL, NULL);
67 	g_return_val_if_fail (node != NULL, NULL);
68 	self = (ValadocChartsHierarchy*) valadoc_charts_chart_construct (object_type, factory, node);
69 	return self;
70 }
71 
72 ValadocChartsHierarchy*
valadoc_charts_hierarchy_new(ValadocChartsFactory * factory,ValadocApiNode * node)73 valadoc_charts_hierarchy_new (ValadocChartsFactory* factory,
74                               ValadocApiNode* node)
75 {
76 	return valadoc_charts_hierarchy_construct (VALADOC_CHARTS_TYPE_HIERARCHY, factory, node);
77 }
78 
79 static void
valadoc_charts_hierarchy_draw_implemented_interfaces(ValadocChartsHierarchy * self,Agnode_t * child,ValaCollection * interfaces)80 valadoc_charts_hierarchy_draw_implemented_interfaces (ValadocChartsHierarchy* self,
81                                                       Agnode_t* child,
82                                                       ValaCollection* interfaces)
83 {
84 	g_return_if_fail (self != NULL);
85 	g_return_if_fail (child != NULL);
86 	g_return_if_fail (interfaces != NULL);
87 	{
88 		ValaIterator* _typeref_it = NULL;
89 		ValaIterator* _tmp0_;
90 		_tmp0_ = vala_iterable_iterator ((ValaIterable*) interfaces);
91 		_typeref_it = _tmp0_;
92 		while (TRUE) {
93 			ValaIterator* _tmp1_;
94 			ValadocApiTypeReference* typeref = NULL;
95 			ValaIterator* _tmp2_;
96 			gpointer _tmp3_;
97 			Agnode_t* parent = NULL;
98 			ValadocChartsFactory* _tmp4_;
99 			Agraph_t* _tmp5_;
100 			ValadocApiTypeReference* _tmp6_;
101 			ValadocApiItem* _tmp7_;
102 			ValadocApiItem* _tmp8_;
103 			Agnode_t* _tmp9_;
104 			ValadocChartsFactory* _tmp10_;
105 			Agraph_t* _tmp11_;
106 			Agnode_t* _tmp12_;
107 			Agedge_t* _tmp13_;
108 			_tmp1_ = _typeref_it;
109 			if (!vala_iterator_next (_tmp1_)) {
110 				break;
111 			}
112 			_tmp2_ = _typeref_it;
113 			_tmp3_ = vala_iterator_get (_tmp2_);
114 			typeref = (ValadocApiTypeReference*) _tmp3_;
115 			_tmp4_ = ((ValadocChartsChart*) self)->factory;
116 			_tmp5_ = ((ValadocChartsChart*) self)->graph;
117 			_tmp6_ = typeref;
118 			_tmp7_ = valadoc_api_typereference_get_data_type (_tmp6_);
119 			_tmp8_ = _tmp7_;
120 			_tmp9_ = valadoc_charts_factory_create_interface (_tmp4_, _tmp5_, G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALADOC_API_TYPE_INTERFACE, ValadocApiInterface));
121 			parent = _tmp9_;
122 			_tmp10_ = ((ValadocChartsChart*) self)->factory;
123 			_tmp11_ = ((ValadocChartsChart*) self)->graph;
124 			_tmp12_ = parent;
125 			_tmp13_ = valadoc_charts_factory_add_children (_tmp10_, _tmp11_, _tmp12_, child);
126 			_g_object_unref0 (typeref);
127 		}
128 		_vala_iterator_unref0 (_typeref_it);
129 	}
130 }
131 
132 static void
valadoc_charts_hierarchy_draw_parent_classes(ValadocChartsHierarchy * self,ValadocApiClass * item,Agnode_t * child)133 valadoc_charts_hierarchy_draw_parent_classes (ValadocChartsHierarchy* self,
134                                               ValadocApiClass* item,
135                                               Agnode_t* child)
136 {
137 	Agnode_t* parent = NULL;
138 	ValadocChartsFactory* _tmp0_;
139 	Agraph_t* _tmp1_;
140 	Agnode_t* _tmp2_;
141 	ValadocApiTypeReference* _tmp7_;
142 	ValadocApiTypeReference* _tmp8_;
143 	Agnode_t* _tmp14_;
144 	ValaCollection* _tmp15_;
145 	ValaCollection* _tmp16_;
146 	g_return_if_fail (self != NULL);
147 	g_return_if_fail (item != NULL);
148 	_tmp0_ = ((ValadocChartsChart*) self)->factory;
149 	_tmp1_ = ((ValadocChartsChart*) self)->graph;
150 	_tmp2_ = valadoc_charts_factory_create_class (_tmp0_, _tmp1_, item);
151 	parent = _tmp2_;
152 	if (child != NULL) {
153 		ValadocChartsFactory* _tmp3_;
154 		Agraph_t* _tmp4_;
155 		Agnode_t* _tmp5_;
156 		Agedge_t* _tmp6_;
157 		_tmp3_ = ((ValadocChartsChart*) self)->factory;
158 		_tmp4_ = ((ValadocChartsChart*) self)->graph;
159 		_tmp5_ = parent;
160 		_tmp6_ = valadoc_charts_factory_add_children (_tmp3_, _tmp4_, _tmp5_, child);
161 	}
162 	_tmp7_ = valadoc_api_class_get_base_type (item);
163 	_tmp8_ = _tmp7_;
164 	if (_tmp8_ != NULL) {
165 		ValadocApiTypeReference* _tmp9_;
166 		ValadocApiTypeReference* _tmp10_;
167 		ValadocApiItem* _tmp11_;
168 		ValadocApiItem* _tmp12_;
169 		Agnode_t* _tmp13_;
170 		_tmp9_ = valadoc_api_class_get_base_type (item);
171 		_tmp10_ = _tmp9_;
172 		_tmp11_ = valadoc_api_typereference_get_data_type (_tmp10_);
173 		_tmp12_ = _tmp11_;
174 		_tmp13_ = parent;
175 		valadoc_charts_hierarchy_draw_parent_classes (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, VALADOC_API_TYPE_CLASS, ValadocApiClass), _tmp13_);
176 	}
177 	_tmp14_ = parent;
178 	_tmp15_ = valadoc_api_class_get_implemented_interface_list (item);
179 	_tmp16_ = _tmp15_;
180 	valadoc_charts_hierarchy_draw_implemented_interfaces (self, _tmp14_, _tmp16_);
181 	_vala_iterable_unref0 (_tmp16_);
182 }
183 
184 static void
valadoc_charts_hierarchy_draw_parent_structs(ValadocChartsHierarchy * self,ValadocApiStruct * item,Agnode_t * child)185 valadoc_charts_hierarchy_draw_parent_structs (ValadocChartsHierarchy* self,
186                                               ValadocApiStruct* item,
187                                               Agnode_t* child)
188 {
189 	Agnode_t* parent = NULL;
190 	ValadocChartsFactory* _tmp0_;
191 	Agraph_t* _tmp1_;
192 	Agnode_t* _tmp2_;
193 	ValadocApiTypeReference* _tmp7_;
194 	ValadocApiTypeReference* _tmp8_;
195 	g_return_if_fail (self != NULL);
196 	g_return_if_fail (item != NULL);
197 	_tmp0_ = ((ValadocChartsChart*) self)->factory;
198 	_tmp1_ = ((ValadocChartsChart*) self)->graph;
199 	_tmp2_ = valadoc_charts_factory_create_struct (_tmp0_, _tmp1_, item);
200 	parent = _tmp2_;
201 	if (child != NULL) {
202 		ValadocChartsFactory* _tmp3_;
203 		Agraph_t* _tmp4_;
204 		Agnode_t* _tmp5_;
205 		Agedge_t* _tmp6_;
206 		_tmp3_ = ((ValadocChartsChart*) self)->factory;
207 		_tmp4_ = ((ValadocChartsChart*) self)->graph;
208 		_tmp5_ = parent;
209 		_tmp6_ = valadoc_charts_factory_add_children (_tmp3_, _tmp4_, _tmp5_, child);
210 	}
211 	_tmp7_ = valadoc_api_struct_get_base_type (item);
212 	_tmp8_ = _tmp7_;
213 	if (_tmp8_ != NULL) {
214 		ValadocApiTypeReference* _tmp9_;
215 		ValadocApiTypeReference* _tmp10_;
216 		ValadocApiItem* _tmp11_;
217 		ValadocApiItem* _tmp12_;
218 		Agnode_t* _tmp13_;
219 		_tmp9_ = valadoc_api_struct_get_base_type (item);
220 		_tmp10_ = _tmp9_;
221 		_tmp11_ = valadoc_api_typereference_get_data_type (_tmp10_);
222 		_tmp12_ = _tmp11_;
223 		_tmp13_ = parent;
224 		valadoc_charts_hierarchy_draw_parent_structs (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, VALADOC_API_TYPE_STRUCT, ValadocApiStruct), _tmp13_);
225 	}
226 }
227 
228 static void
valadoc_charts_hierarchy_real_visit_interface(ValadocApiVisitor * base,ValadocApiInterface * item)229 valadoc_charts_hierarchy_real_visit_interface (ValadocApiVisitor* base,
230                                                ValadocApiInterface* item)
231 {
232 	ValadocChartsHierarchy * self;
233 	Agnode_t* iface = NULL;
234 	ValadocChartsFactory* _tmp0_;
235 	Agraph_t* _tmp1_;
236 	Agnode_t* _tmp2_;
237 	ValadocApiTypeReference* _tmp3_;
238 	ValadocApiTypeReference* _tmp4_;
239 	Agnode_t* _tmp10_;
240 	ValaCollection* _tmp11_;
241 	ValaCollection* _tmp12_;
242 	self = (ValadocChartsHierarchy*) base;
243 	g_return_if_fail (item != NULL);
244 	_tmp0_ = ((ValadocChartsChart*) self)->factory;
245 	_tmp1_ = ((ValadocChartsChart*) self)->graph;
246 	_tmp2_ = valadoc_charts_factory_create_interface (_tmp0_, _tmp1_, item);
247 	iface = _tmp2_;
248 	_tmp3_ = valadoc_api_interface_get_base_type (item);
249 	_tmp4_ = _tmp3_;
250 	if (_tmp4_ != NULL) {
251 		ValadocApiTypeReference* _tmp5_;
252 		ValadocApiTypeReference* _tmp6_;
253 		ValadocApiItem* _tmp7_;
254 		ValadocApiItem* _tmp8_;
255 		Agnode_t* _tmp9_;
256 		_tmp5_ = valadoc_api_interface_get_base_type (item);
257 		_tmp6_ = _tmp5_;
258 		_tmp7_ = valadoc_api_typereference_get_data_type (_tmp6_);
259 		_tmp8_ = _tmp7_;
260 		_tmp9_ = iface;
261 		valadoc_charts_hierarchy_draw_parent_classes (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALADOC_API_TYPE_CLASS, ValadocApiClass), _tmp9_);
262 	}
263 	_tmp10_ = iface;
264 	_tmp11_ = valadoc_api_interface_get_implemented_interface_list (item);
265 	_tmp12_ = _tmp11_;
266 	valadoc_charts_hierarchy_draw_implemented_interfaces (self, _tmp10_, _tmp12_);
267 	_vala_iterable_unref0 (_tmp12_);
268 }
269 
270 static void
valadoc_charts_hierarchy_real_visit_class(ValadocApiVisitor * base,ValadocApiClass * item)271 valadoc_charts_hierarchy_real_visit_class (ValadocApiVisitor* base,
272                                            ValadocApiClass* item)
273 {
274 	ValadocChartsHierarchy * self;
275 	self = (ValadocChartsHierarchy*) base;
276 	g_return_if_fail (item != NULL);
277 	valadoc_charts_hierarchy_draw_parent_classes (self, item, NULL);
278 }
279 
280 static void
valadoc_charts_hierarchy_real_visit_struct(ValadocApiVisitor * base,ValadocApiStruct * item)281 valadoc_charts_hierarchy_real_visit_struct (ValadocApiVisitor* base,
282                                             ValadocApiStruct* item)
283 {
284 	ValadocChartsHierarchy * self;
285 	self = (ValadocChartsHierarchy*) base;
286 	g_return_if_fail (item != NULL);
287 	valadoc_charts_hierarchy_draw_parent_structs (self, item, NULL);
288 }
289 
290 static void
valadoc_charts_hierarchy_class_init(ValadocChartsHierarchyClass * klass,gpointer klass_data)291 valadoc_charts_hierarchy_class_init (ValadocChartsHierarchyClass * klass,
292                                      gpointer klass_data)
293 {
294 	valadoc_charts_hierarchy_parent_class = g_type_class_peek_parent (klass);
295 	((ValadocApiVisitorClass *) klass)->visit_interface = (void (*) (ValadocApiVisitor*, ValadocApiInterface*)) valadoc_charts_hierarchy_real_visit_interface;
296 	((ValadocApiVisitorClass *) klass)->visit_class = (void (*) (ValadocApiVisitor*, ValadocApiClass*)) valadoc_charts_hierarchy_real_visit_class;
297 	((ValadocApiVisitorClass *) klass)->visit_struct = (void (*) (ValadocApiVisitor*, ValadocApiStruct*)) valadoc_charts_hierarchy_real_visit_struct;
298 }
299 
300 static void
valadoc_charts_hierarchy_instance_init(ValadocChartsHierarchy * self,gpointer klass)301 valadoc_charts_hierarchy_instance_init (ValadocChartsHierarchy * self,
302                                         gpointer klass)
303 {
304 }
305 
306 static GType
valadoc_charts_hierarchy_get_type_once(void)307 valadoc_charts_hierarchy_get_type_once (void)
308 {
309 	static const GTypeInfo g_define_type_info = { sizeof (ValadocChartsHierarchyClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) valadoc_charts_hierarchy_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValadocChartsHierarchy), 0, (GInstanceInitFunc) valadoc_charts_hierarchy_instance_init, NULL };
310 	GType valadoc_charts_hierarchy_type_id;
311 	valadoc_charts_hierarchy_type_id = g_type_register_static (VALADOC_CHARTS_TYPE_CHART, "ValadocChartsHierarchy", &g_define_type_info, 0);
312 	return valadoc_charts_hierarchy_type_id;
313 }
314 
315 GType
valadoc_charts_hierarchy_get_type(void)316 valadoc_charts_hierarchy_get_type (void)
317 {
318 	static volatile gsize valadoc_charts_hierarchy_type_id__volatile = 0;
319 	if (g_once_init_enter (&valadoc_charts_hierarchy_type_id__volatile)) {
320 		GType valadoc_charts_hierarchy_type_id;
321 		valadoc_charts_hierarchy_type_id = valadoc_charts_hierarchy_get_type_once ();
322 		g_once_init_leave (&valadoc_charts_hierarchy_type_id__volatile, valadoc_charts_hierarchy_type_id);
323 	}
324 	return valadoc_charts_hierarchy_type_id__volatile;
325 }
326 
327