1 /* valasignaltype.c generated by valac, the Vala compiler
2  * generated from valasignaltype.vala, do not modify */
3 
4 /* valasignaltype.vala
5  *
6  * Copyright (C) 2007-2011  Jürg Billeter
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  * 	Jürg Billeter <j@bitron.ch>
24  */
25 
26 #include "vala.h"
27 #include <glib.h>
28 #include <stdlib.h>
29 #include <string.h>
30 #include <valagee.h>
31 #include <glib-object.h>
32 
33 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
34 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
35 #define _vala_code_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_context_unref (var), NULL)))
36 
37 struct _ValaSignalTypePrivate {
38 	ValaMethod* connect_method;
39 	ValaMethod* connect_after_method;
40 	ValaMethod* disconnect_method;
41 };
42 
43 static gint ValaSignalType_private_offset;
44 static gpointer vala_signal_type_parent_class = NULL;
45 
46 static ValaDataType* vala_signal_type_real_copy (ValaDataType* base);
47 static gboolean vala_signal_type_real_compatible (ValaDataType* base,
48                                            ValaDataType* target_type);
49 static gchar* vala_signal_type_real_to_qualified_string (ValaDataType* base,
50                                                   ValaScope* scope);
51 static ValaMethod* vala_signal_type_get_connect_method (ValaSignalType* self);
52 static ValaMethod* vala_signal_type_get_connect_after_method (ValaSignalType* self);
53 static ValaMethod* vala_signal_type_get_disconnect_method (ValaSignalType* self);
54 static ValaSymbol* vala_signal_type_real_get_member (ValaDataType* base,
55                                               const gchar* member_name);
56 static gboolean vala_signal_type_real_is_accessible (ValaDataType* base,
57                                               ValaSymbol* sym);
58 static void vala_signal_type_finalize (ValaCodeNode * obj);
59 static GType vala_signal_type_get_type_once (void);
60 
61 static inline gpointer
vala_signal_type_get_instance_private(ValaSignalType * self)62 vala_signal_type_get_instance_private (ValaSignalType* self)
63 {
64 	return G_STRUCT_MEMBER_P (self, ValaSignalType_private_offset);
65 }
66 
67 ValaSignal*
vala_signal_type_get_signal_symbol(ValaSignalType * self)68 vala_signal_type_get_signal_symbol (ValaSignalType* self)
69 {
70 	ValaSignal* result;
71 	ValaSymbol* _tmp0_;
72 	ValaSymbol* _tmp1_;
73 	g_return_val_if_fail (self != NULL, NULL);
74 	_tmp0_ = vala_data_type_get_symbol ((ValaDataType*) self);
75 	_tmp1_ = _tmp0_;
76 	result = G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_SIGNAL, ValaSignal);
77 	return result;
78 }
79 
80 ValaSignalType*
vala_signal_type_construct(GType object_type,ValaSignal * signal_symbol)81 vala_signal_type_construct (GType object_type,
82                             ValaSignal* signal_symbol)
83 {
84 	ValaSignalType* self = NULL;
85 	g_return_val_if_fail (signal_symbol != NULL, NULL);
86 	self = (ValaSignalType*) vala_callable_type_construct (object_type, (ValaSymbol*) signal_symbol);
87 	return self;
88 }
89 
90 ValaSignalType*
vala_signal_type_new(ValaSignal * signal_symbol)91 vala_signal_type_new (ValaSignal* signal_symbol)
92 {
93 	return vala_signal_type_construct (VALA_TYPE_SIGNAL_TYPE, signal_symbol);
94 }
95 
96 static ValaDataType*
vala_signal_type_real_copy(ValaDataType * base)97 vala_signal_type_real_copy (ValaDataType* base)
98 {
99 	ValaSignalType * self;
100 	ValaSignal* _tmp0_;
101 	ValaSignal* _tmp1_;
102 	ValaSignalType* _tmp2_;
103 	ValaDataType* result = NULL;
104 	self = (ValaSignalType*) base;
105 	_tmp0_ = vala_signal_type_get_signal_symbol (self);
106 	_tmp1_ = _tmp0_;
107 	_tmp2_ = vala_signal_type_new (_tmp1_);
108 	result = (ValaDataType*) _tmp2_;
109 	return result;
110 }
111 
112 static gboolean
vala_signal_type_real_compatible(ValaDataType * base,ValaDataType * target_type)113 vala_signal_type_real_compatible (ValaDataType* base,
114                                   ValaDataType* target_type)
115 {
116 	ValaSignalType * self;
117 	gboolean result = FALSE;
118 	self = (ValaSignalType*) base;
119 	g_return_val_if_fail (target_type != NULL, FALSE);
120 	result = FALSE;
121 	return result;
122 }
123 
124 static gchar*
vala_signal_type_real_to_qualified_string(ValaDataType * base,ValaScope * scope)125 vala_signal_type_real_to_qualified_string (ValaDataType* base,
126                                            ValaScope* scope)
127 {
128 	ValaSignalType * self;
129 	ValaSignal* _tmp0_;
130 	ValaSignal* _tmp1_;
131 	gchar* _tmp2_;
132 	gchar* result = NULL;
133 	self = (ValaSignalType*) base;
134 	_tmp0_ = vala_signal_type_get_signal_symbol (self);
135 	_tmp1_ = _tmp0_;
136 	_tmp2_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp1_);
137 	result = _tmp2_;
138 	return result;
139 }
140 
141 static gpointer
_vala_code_node_ref0(gpointer self)142 _vala_code_node_ref0 (gpointer self)
143 {
144 	return self ? vala_code_node_ref (self) : NULL;
145 }
146 
147 static gpointer
_vala_iterable_ref0(gpointer self)148 _vala_iterable_ref0 (gpointer self)
149 {
150 	return self ? vala_iterable_ref (self) : NULL;
151 }
152 
153 ValaDelegateType*
vala_signal_type_get_handler_type(ValaSignalType * self)154 vala_signal_type_get_handler_type (ValaSignalType* self)
155 {
156 	ValaObjectTypeSymbol* type_sym = NULL;
157 	ValaSignal* _tmp0_;
158 	ValaSignal* _tmp1_;
159 	ValaSymbol* _tmp2_;
160 	ValaSymbol* _tmp3_;
161 	ValaObjectTypeSymbol* _tmp4_;
162 	ValaDataType* sender_type = NULL;
163 	ValaObjectTypeSymbol* _tmp5_;
164 	ValaDataType* _tmp6_;
165 	ValaDelegateType* _result_ = NULL;
166 	ValaSignal* _tmp7_;
167 	ValaSignal* _tmp8_;
168 	ValaDataType* _tmp9_;
169 	ValaDelegate* _tmp10_;
170 	ValaDelegate* _tmp11_;
171 	ValaDelegateType* _tmp12_;
172 	ValaDelegateType* _tmp13_;
173 	ValaDelegateType* _tmp14_;
174 	ValaDelegateType* _tmp15_;
175 	ValaDelegate* _tmp16_;
176 	ValaDelegate* _tmp17_;
177 	ValaDelegateType* result = NULL;
178 	g_return_val_if_fail (self != NULL, NULL);
179 	_tmp0_ = vala_signal_type_get_signal_symbol (self);
180 	_tmp1_ = _tmp0_;
181 	_tmp2_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp1_);
182 	_tmp3_ = _tmp2_;
183 	_tmp4_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
184 	type_sym = _tmp4_;
185 	_tmp5_ = type_sym;
186 	_tmp6_ = vala_semantic_analyzer_get_data_type_for_symbol ((ValaSymbol*) _tmp5_);
187 	sender_type = _tmp6_;
188 	_tmp7_ = vala_signal_type_get_signal_symbol (self);
189 	_tmp8_ = _tmp7_;
190 	_tmp9_ = sender_type;
191 	_tmp10_ = vala_signal_get_delegate (_tmp8_, _tmp9_, (ValaCodeNode*) self);
192 	_tmp11_ = _tmp10_;
193 	_tmp12_ = vala_delegate_type_new (_tmp11_);
194 	_tmp13_ = _tmp12_;
195 	_vala_code_node_unref0 (_tmp11_);
196 	_result_ = _tmp13_;
197 	_tmp14_ = _result_;
198 	vala_data_type_set_value_owned ((ValaDataType*) _tmp14_, TRUE);
199 	_tmp15_ = _result_;
200 	_tmp16_ = vala_delegate_type_get_delegate_symbol (_tmp15_);
201 	_tmp17_ = _tmp16_;
202 	if (vala_delegate_has_type_parameters (_tmp17_)) {
203 		{
204 			ValaList* _type_param_list = NULL;
205 			ValaObjectTypeSymbol* _tmp18_;
206 			ValaList* _tmp19_;
207 			ValaList* _tmp20_;
208 			gint _type_param_size = 0;
209 			ValaList* _tmp21_;
210 			gint _tmp22_;
211 			gint _tmp23_;
212 			gint _type_param_index = 0;
213 			_tmp18_ = type_sym;
214 			_tmp19_ = vala_object_type_symbol_get_type_parameters (_tmp18_);
215 			_tmp20_ = _vala_iterable_ref0 (_tmp19_);
216 			_type_param_list = _tmp20_;
217 			_tmp21_ = _type_param_list;
218 			_tmp22_ = vala_collection_get_size ((ValaCollection*) _tmp21_);
219 			_tmp23_ = _tmp22_;
220 			_type_param_size = _tmp23_;
221 			_type_param_index = -1;
222 			while (TRUE) {
223 				gint _tmp24_;
224 				gint _tmp25_;
225 				ValaTypeParameter* type_param = NULL;
226 				ValaList* _tmp26_;
227 				gpointer _tmp27_;
228 				ValaGenericType* type_arg = NULL;
229 				ValaTypeParameter* _tmp28_;
230 				ValaGenericType* _tmp29_;
231 				ValaGenericType* _tmp30_;
232 				ValaDelegateType* _tmp31_;
233 				ValaGenericType* _tmp32_;
234 				_type_param_index = _type_param_index + 1;
235 				_tmp24_ = _type_param_index;
236 				_tmp25_ = _type_param_size;
237 				if (!(_tmp24_ < _tmp25_)) {
238 					break;
239 				}
240 				_tmp26_ = _type_param_list;
241 				_tmp27_ = vala_list_get (_tmp26_, _type_param_index);
242 				type_param = (ValaTypeParameter*) _tmp27_;
243 				_tmp28_ = type_param;
244 				_tmp29_ = vala_generic_type_new (_tmp28_);
245 				type_arg = _tmp29_;
246 				_tmp30_ = type_arg;
247 				vala_data_type_set_value_owned ((ValaDataType*) _tmp30_, TRUE);
248 				_tmp31_ = _result_;
249 				_tmp32_ = type_arg;
250 				vala_data_type_add_type_argument ((ValaDataType*) _tmp31_, (ValaDataType*) _tmp32_);
251 				_vala_code_node_unref0 (type_arg);
252 				_vala_code_node_unref0 (type_param);
253 			}
254 			_vala_iterable_unref0 (_type_param_list);
255 		}
256 	}
257 	result = _result_;
258 	_vala_code_node_unref0 (sender_type);
259 	_vala_code_node_unref0 (type_sym);
260 	return result;
261 }
262 
263 static ValaMethod*
vala_signal_type_get_connect_method(ValaSignalType * self)264 vala_signal_type_get_connect_method (ValaSignalType* self)
265 {
266 	ValaMethod* _tmp0_;
267 	ValaMethod* _tmp25_;
268 	ValaMethod* result = NULL;
269 	g_return_val_if_fail (self != NULL, NULL);
270 	_tmp0_ = self->priv->connect_method;
271 	if (_tmp0_ == NULL) {
272 		ValaIntegerType* ulong_type = NULL;
273 		ValaCodeContext* _tmp1_;
274 		ValaCodeContext* _tmp2_;
275 		ValaNamespace* _tmp3_;
276 		ValaNamespace* _tmp4_;
277 		ValaScope* _tmp5_;
278 		ValaScope* _tmp6_;
279 		ValaSymbol* _tmp7_;
280 		ValaStruct* _tmp8_;
281 		ValaIntegerType* _tmp9_;
282 		ValaIntegerType* _tmp10_;
283 		ValaIntegerType* _tmp11_;
284 		ValaMethod* _tmp12_;
285 		ValaMethod* _tmp13_;
286 		ValaMethod* _tmp14_;
287 		ValaMethod* _tmp15_;
288 		ValaSignal* _tmp16_;
289 		ValaSignal* _tmp17_;
290 		ValaScope* _tmp18_;
291 		ValaScope* _tmp19_;
292 		ValaMethod* _tmp20_;
293 		ValaDelegateType* _tmp21_;
294 		ValaDelegateType* _tmp22_;
295 		ValaParameter* _tmp23_;
296 		ValaParameter* _tmp24_;
297 		_tmp1_ = vala_code_context_get ();
298 		_tmp2_ = _tmp1_;
299 		_tmp3_ = vala_code_context_get_root (_tmp2_);
300 		_tmp4_ = _tmp3_;
301 		_tmp5_ = vala_symbol_get_scope ((ValaSymbol*) _tmp4_);
302 		_tmp6_ = _tmp5_;
303 		_tmp7_ = vala_scope_lookup (_tmp6_, "ulong");
304 		_tmp8_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, VALA_TYPE_STRUCT, ValaStruct);
305 		_tmp9_ = vala_integer_type_new (_tmp8_, NULL, NULL);
306 		_tmp10_ = _tmp9_;
307 		_vala_code_node_unref0 (_tmp8_);
308 		_vala_code_context_unref0 (_tmp2_);
309 		ulong_type = _tmp10_;
310 		_tmp11_ = ulong_type;
311 		_tmp12_ = vala_method_new ("connect", (ValaDataType*) _tmp11_, NULL, NULL);
312 		_vala_code_node_unref0 (self->priv->connect_method);
313 		self->priv->connect_method = _tmp12_;
314 		_tmp13_ = self->priv->connect_method;
315 		vala_symbol_set_access ((ValaSymbol*) _tmp13_, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
316 		_tmp14_ = self->priv->connect_method;
317 		vala_symbol_set_external ((ValaSymbol*) _tmp14_, TRUE);
318 		_tmp15_ = self->priv->connect_method;
319 		_tmp16_ = vala_signal_type_get_signal_symbol (self);
320 		_tmp17_ = _tmp16_;
321 		_tmp18_ = vala_symbol_get_scope ((ValaSymbol*) _tmp17_);
322 		_tmp19_ = _tmp18_;
323 		vala_symbol_set_owner ((ValaSymbol*) _tmp15_, _tmp19_);
324 		_tmp20_ = self->priv->connect_method;
325 		_tmp21_ = vala_signal_type_get_handler_type (self);
326 		_tmp22_ = _tmp21_;
327 		_tmp23_ = vala_parameter_new ("handler", (ValaDataType*) _tmp22_, NULL);
328 		_tmp24_ = _tmp23_;
329 		vala_callable_add_parameter ((ValaCallable*) _tmp20_, _tmp24_);
330 		_vala_code_node_unref0 (_tmp24_);
331 		_vala_code_node_unref0 (_tmp22_);
332 		_vala_code_node_unref0 (ulong_type);
333 	}
334 	_tmp25_ = self->priv->connect_method;
335 	result = _tmp25_;
336 	return result;
337 }
338 
339 static ValaMethod*
vala_signal_type_get_connect_after_method(ValaSignalType * self)340 vala_signal_type_get_connect_after_method (ValaSignalType* self)
341 {
342 	ValaMethod* _tmp0_;
343 	ValaMethod* _tmp25_;
344 	ValaMethod* result = NULL;
345 	g_return_val_if_fail (self != NULL, NULL);
346 	_tmp0_ = self->priv->connect_after_method;
347 	if (_tmp0_ == NULL) {
348 		ValaIntegerType* ulong_type = NULL;
349 		ValaCodeContext* _tmp1_;
350 		ValaCodeContext* _tmp2_;
351 		ValaNamespace* _tmp3_;
352 		ValaNamespace* _tmp4_;
353 		ValaScope* _tmp5_;
354 		ValaScope* _tmp6_;
355 		ValaSymbol* _tmp7_;
356 		ValaStruct* _tmp8_;
357 		ValaIntegerType* _tmp9_;
358 		ValaIntegerType* _tmp10_;
359 		ValaIntegerType* _tmp11_;
360 		ValaMethod* _tmp12_;
361 		ValaMethod* _tmp13_;
362 		ValaMethod* _tmp14_;
363 		ValaMethod* _tmp15_;
364 		ValaSignal* _tmp16_;
365 		ValaSignal* _tmp17_;
366 		ValaScope* _tmp18_;
367 		ValaScope* _tmp19_;
368 		ValaMethod* _tmp20_;
369 		ValaDelegateType* _tmp21_;
370 		ValaDelegateType* _tmp22_;
371 		ValaParameter* _tmp23_;
372 		ValaParameter* _tmp24_;
373 		_tmp1_ = vala_code_context_get ();
374 		_tmp2_ = _tmp1_;
375 		_tmp3_ = vala_code_context_get_root (_tmp2_);
376 		_tmp4_ = _tmp3_;
377 		_tmp5_ = vala_symbol_get_scope ((ValaSymbol*) _tmp4_);
378 		_tmp6_ = _tmp5_;
379 		_tmp7_ = vala_scope_lookup (_tmp6_, "ulong");
380 		_tmp8_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, VALA_TYPE_STRUCT, ValaStruct);
381 		_tmp9_ = vala_integer_type_new (_tmp8_, NULL, NULL);
382 		_tmp10_ = _tmp9_;
383 		_vala_code_node_unref0 (_tmp8_);
384 		_vala_code_context_unref0 (_tmp2_);
385 		ulong_type = _tmp10_;
386 		_tmp11_ = ulong_type;
387 		_tmp12_ = vala_method_new ("connect_after", (ValaDataType*) _tmp11_, NULL, NULL);
388 		_vala_code_node_unref0 (self->priv->connect_after_method);
389 		self->priv->connect_after_method = _tmp12_;
390 		_tmp13_ = self->priv->connect_after_method;
391 		vala_symbol_set_access ((ValaSymbol*) _tmp13_, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
392 		_tmp14_ = self->priv->connect_after_method;
393 		vala_symbol_set_external ((ValaSymbol*) _tmp14_, TRUE);
394 		_tmp15_ = self->priv->connect_after_method;
395 		_tmp16_ = vala_signal_type_get_signal_symbol (self);
396 		_tmp17_ = _tmp16_;
397 		_tmp18_ = vala_symbol_get_scope ((ValaSymbol*) _tmp17_);
398 		_tmp19_ = _tmp18_;
399 		vala_symbol_set_owner ((ValaSymbol*) _tmp15_, _tmp19_);
400 		_tmp20_ = self->priv->connect_after_method;
401 		_tmp21_ = vala_signal_type_get_handler_type (self);
402 		_tmp22_ = _tmp21_;
403 		_tmp23_ = vala_parameter_new ("handler", (ValaDataType*) _tmp22_, NULL);
404 		_tmp24_ = _tmp23_;
405 		vala_callable_add_parameter ((ValaCallable*) _tmp20_, _tmp24_);
406 		_vala_code_node_unref0 (_tmp24_);
407 		_vala_code_node_unref0 (_tmp22_);
408 		_vala_code_node_unref0 (ulong_type);
409 	}
410 	_tmp25_ = self->priv->connect_after_method;
411 	result = _tmp25_;
412 	return result;
413 }
414 
415 static ValaMethod*
vala_signal_type_get_disconnect_method(ValaSignalType * self)416 vala_signal_type_get_disconnect_method (ValaSignalType* self)
417 {
418 	ValaMethod* _tmp0_;
419 	ValaMethod* _tmp16_;
420 	ValaMethod* result = NULL;
421 	g_return_val_if_fail (self != NULL, NULL);
422 	_tmp0_ = self->priv->disconnect_method;
423 	if (_tmp0_ == NULL) {
424 		ValaVoidType* _tmp1_;
425 		ValaVoidType* _tmp2_;
426 		ValaMethod* _tmp3_;
427 		ValaMethod* _tmp4_;
428 		ValaMethod* _tmp5_;
429 		ValaMethod* _tmp6_;
430 		ValaSignal* _tmp7_;
431 		ValaSignal* _tmp8_;
432 		ValaScope* _tmp9_;
433 		ValaScope* _tmp10_;
434 		ValaMethod* _tmp11_;
435 		ValaDelegateType* _tmp12_;
436 		ValaDelegateType* _tmp13_;
437 		ValaParameter* _tmp14_;
438 		ValaParameter* _tmp15_;
439 		_tmp1_ = vala_void_type_new (NULL);
440 		_tmp2_ = _tmp1_;
441 		_tmp3_ = vala_method_new ("disconnect", (ValaDataType*) _tmp2_, NULL, NULL);
442 		_vala_code_node_unref0 (self->priv->disconnect_method);
443 		self->priv->disconnect_method = _tmp3_;
444 		_vala_code_node_unref0 (_tmp2_);
445 		_tmp4_ = self->priv->disconnect_method;
446 		vala_symbol_set_access ((ValaSymbol*) _tmp4_, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
447 		_tmp5_ = self->priv->disconnect_method;
448 		vala_symbol_set_external ((ValaSymbol*) _tmp5_, TRUE);
449 		_tmp6_ = self->priv->disconnect_method;
450 		_tmp7_ = vala_signal_type_get_signal_symbol (self);
451 		_tmp8_ = _tmp7_;
452 		_tmp9_ = vala_symbol_get_scope ((ValaSymbol*) _tmp8_);
453 		_tmp10_ = _tmp9_;
454 		vala_symbol_set_owner ((ValaSymbol*) _tmp6_, _tmp10_);
455 		_tmp11_ = self->priv->disconnect_method;
456 		_tmp12_ = vala_signal_type_get_handler_type (self);
457 		_tmp13_ = _tmp12_;
458 		_tmp14_ = vala_parameter_new ("handler", (ValaDataType*) _tmp13_, NULL);
459 		_tmp15_ = _tmp14_;
460 		vala_callable_add_parameter ((ValaCallable*) _tmp11_, _tmp15_);
461 		_vala_code_node_unref0 (_tmp15_);
462 		_vala_code_node_unref0 (_tmp13_);
463 	}
464 	_tmp16_ = self->priv->disconnect_method;
465 	result = _tmp16_;
466 	return result;
467 }
468 
469 static ValaSymbol*
vala_signal_type_real_get_member(ValaDataType * base,const gchar * member_name)470 vala_signal_type_real_get_member (ValaDataType* base,
471                                   const gchar* member_name)
472 {
473 	ValaSignalType * self;
474 	ValaSymbol* result = NULL;
475 	self = (ValaSignalType*) base;
476 	g_return_val_if_fail (member_name != NULL, NULL);
477 	if (g_strcmp0 (member_name, "connect") == 0) {
478 		ValaMethod* _tmp0_;
479 		ValaSymbol* _tmp1_;
480 		_tmp0_ = vala_signal_type_get_connect_method (self);
481 		_tmp1_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp0_);
482 		result = _tmp1_;
483 		return result;
484 	} else {
485 		if (g_strcmp0 (member_name, "connect_after") == 0) {
486 			ValaMethod* _tmp2_;
487 			ValaSymbol* _tmp3_;
488 			_tmp2_ = vala_signal_type_get_connect_after_method (self);
489 			_tmp3_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp2_);
490 			result = _tmp3_;
491 			return result;
492 		} else {
493 			if (g_strcmp0 (member_name, "disconnect") == 0) {
494 				ValaMethod* _tmp4_;
495 				ValaSymbol* _tmp5_;
496 				_tmp4_ = vala_signal_type_get_disconnect_method (self);
497 				_tmp5_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp4_);
498 				result = _tmp5_;
499 				return result;
500 			}
501 		}
502 	}
503 	result = NULL;
504 	return result;
505 }
506 
507 static gboolean
vala_signal_type_real_is_accessible(ValaDataType * base,ValaSymbol * sym)508 vala_signal_type_real_is_accessible (ValaDataType* base,
509                                      ValaSymbol* sym)
510 {
511 	ValaSignalType * self;
512 	ValaSignal* _tmp0_;
513 	ValaSignal* _tmp1_;
514 	gboolean result = FALSE;
515 	self = (ValaSignalType*) base;
516 	g_return_val_if_fail (sym != NULL, FALSE);
517 	_tmp0_ = vala_signal_type_get_signal_symbol (self);
518 	_tmp1_ = _tmp0_;
519 	result = vala_symbol_is_accessible ((ValaSymbol*) _tmp1_, sym);
520 	return result;
521 }
522 
523 static void
vala_signal_type_class_init(ValaSignalTypeClass * klass,gpointer klass_data)524 vala_signal_type_class_init (ValaSignalTypeClass * klass,
525                              gpointer klass_data)
526 {
527 	vala_signal_type_parent_class = g_type_class_peek_parent (klass);
528 	((ValaCodeNodeClass *) klass)->finalize = vala_signal_type_finalize;
529 	g_type_class_adjust_private_offset (klass, &ValaSignalType_private_offset);
530 	((ValaDataTypeClass *) klass)->copy = (ValaDataType* (*) (ValaDataType*)) vala_signal_type_real_copy;
531 	((ValaDataTypeClass *) klass)->compatible = (gboolean (*) (ValaDataType*, ValaDataType*)) vala_signal_type_real_compatible;
532 	((ValaDataTypeClass *) klass)->to_qualified_string = (gchar* (*) (ValaDataType*, ValaScope*)) vala_signal_type_real_to_qualified_string;
533 	((ValaDataTypeClass *) klass)->get_member = (ValaSymbol* (*) (ValaDataType*, const gchar*)) vala_signal_type_real_get_member;
534 	((ValaDataTypeClass *) klass)->is_accessible = (gboolean (*) (ValaDataType*, ValaSymbol*)) vala_signal_type_real_is_accessible;
535 }
536 
537 static void
vala_signal_type_instance_init(ValaSignalType * self,gpointer klass)538 vala_signal_type_instance_init (ValaSignalType * self,
539                                 gpointer klass)
540 {
541 	self->priv = vala_signal_type_get_instance_private (self);
542 }
543 
544 static void
vala_signal_type_finalize(ValaCodeNode * obj)545 vala_signal_type_finalize (ValaCodeNode * obj)
546 {
547 	ValaSignalType * self;
548 	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_SIGNAL_TYPE, ValaSignalType);
549 	_vala_code_node_unref0 (self->priv->connect_method);
550 	_vala_code_node_unref0 (self->priv->connect_after_method);
551 	_vala_code_node_unref0 (self->priv->disconnect_method);
552 	VALA_CODE_NODE_CLASS (vala_signal_type_parent_class)->finalize (obj);
553 }
554 
555 /**
556  * The type of a signal referencea.
557  */
558 static GType
vala_signal_type_get_type_once(void)559 vala_signal_type_get_type_once (void)
560 {
561 	static const GTypeInfo g_define_type_info = { sizeof (ValaSignalTypeClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_signal_type_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaSignalType), 0, (GInstanceInitFunc) vala_signal_type_instance_init, NULL };
562 	GType vala_signal_type_type_id;
563 	vala_signal_type_type_id = g_type_register_static (VALA_TYPE_CALLABLE_TYPE, "ValaSignalType", &g_define_type_info, 0);
564 	ValaSignalType_private_offset = g_type_add_instance_private (vala_signal_type_type_id, sizeof (ValaSignalTypePrivate));
565 	return vala_signal_type_type_id;
566 }
567 
568 GType
vala_signal_type_get_type(void)569 vala_signal_type_get_type (void)
570 {
571 	static volatile gsize vala_signal_type_type_id__volatile = 0;
572 	if (g_once_init_enter (&vala_signal_type_type_id__volatile)) {
573 		GType vala_signal_type_type_id;
574 		vala_signal_type_type_id = vala_signal_type_get_type_once ();
575 		g_once_init_leave (&vala_signal_type_type_id__volatile, vala_signal_type_type_id);
576 	}
577 	return vala_signal_type_type_id__volatile;
578 }
579 
580