~ubuntu-branches/ubuntu/trusty/vala/trusty

« back to all changes in this revision

Viewing changes to codegen/valagobjectmodule.c

  • Committer: Bazaar Package Importer
  • Author(s): Michael Terry
  • Date: 2011-01-18 09:51:15 UTC
  • mfrom: (1.5.14 upstream)
  • Revision ID: james.westby@ubuntu.com-20110118095115-r2jr7c63lr0jzj0y
Tags: 0.11.4-0ubuntu1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
 
4
4
/* valagobjectmodule.vala
5
5
 *
6
 
 * Copyright (C) 2006-2010  Jürg Billeter
 
6
 * Copyright (C) 2006-2011  Jürg Billeter
7
7
 * Copyright (C) 2006-2008  Raffaele Sandrini
8
8
 *
9
9
 * This library is free software; you can redistribute it and/or
165
165
typedef struct _ValaGTypeModuleClass ValaGTypeModuleClass;
166
166
typedef struct _ValaGTypeModulePrivate ValaGTypeModulePrivate;
167
167
 
168
 
#define VALA_TYPE_TYPEREGISTER_FUNCTION (vala_typeregister_function_get_type ())
169
 
#define VALA_TYPEREGISTER_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TYPEREGISTER_FUNCTION, ValaTypeRegisterFunction))
170
 
#define VALA_TYPEREGISTER_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TYPEREGISTER_FUNCTION, ValaTypeRegisterFunctionClass))
171
 
#define VALA_IS_TYPEREGISTER_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TYPEREGISTER_FUNCTION))
172
 
#define VALA_IS_TYPEREGISTER_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TYPEREGISTER_FUNCTION))
173
 
#define VALA_TYPEREGISTER_FUNCTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TYPEREGISTER_FUNCTION, ValaTypeRegisterFunctionClass))
174
 
 
175
 
typedef struct _ValaTypeRegisterFunction ValaTypeRegisterFunction;
176
 
typedef struct _ValaTypeRegisterFunctionClass ValaTypeRegisterFunctionClass;
177
 
 
178
168
#define VALA_TYPE_GOBJECT_MODULE (vala_gobject_module_get_type ())
179
169
#define VALA_GOBJECT_MODULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_GOBJECT_MODULE, ValaGObjectModule))
180
170
#define VALA_GOBJECT_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_GOBJECT_MODULE, ValaGObjectModuleClass))
249
239
        ValaTypeSymbol* gbytearray_type;
250
240
        ValaTypeSymbol* gptrarray_type;
251
241
        ValaTypeSymbol* gthreadpool_type;
 
242
        ValaDataType* gdestroynotify_type;
252
243
        ValaDataType* gquark_type;
253
244
        ValaStruct* gvalue_type;
254
245
        ValaClass* gvariant_type;
278
269
        ValaCCodeExpression* (*get_dup_func_expression) (ValaCCodeBaseModule* self, ValaDataType* type, ValaSourceReference* source_reference, gboolean is_chainup);
279
270
        gchar* (*append_struct_array_free) (ValaCCodeBaseModule* self, ValaStruct* st);
280
271
        ValaCCodeExpression* (*destroy_value) (ValaCCodeBaseModule* self, ValaTargetValue* value, gboolean is_macro_definition);
281
 
        void (*append_local_free) (ValaCCodeBaseModule* self, ValaSymbol* sym, gboolean stop_at_loop);
 
272
        void (*append_local_free) (ValaCCodeBaseModule* self, ValaSymbol* sym, gboolean stop_at_loop, ValaCodeNode* stop_at);
282
273
        gchar* (*get_delegate_target_cname) (ValaCCodeBaseModule* self, const gchar* delegate_cname);
283
274
        ValaCCodeExpression* (*get_delegate_target_cexpression) (ValaCCodeBaseModule* self, ValaExpression* delegate_expr, ValaCCodeExpression** delegate_target_destroy_notify);
284
275
        ValaCCodeExpression* (*get_delegate_target_cvalue) (ValaCCodeBaseModule* self, ValaTargetValue* value);
289
280
        void (*generate_interface_declaration) (ValaCCodeBaseModule* self, ValaInterface* iface, ValaCCodeFile* decl_space);
290
281
        void (*generate_method_declaration) (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space);
291
282
        void (*generate_error_domain_declaration) (ValaCCodeBaseModule* self, ValaErrorDomain* edomain, ValaCCodeFile* decl_space);
292
 
        ValaCCodeExpression* (*deserialize_expression) (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* variant_expr, ValaCCodeExpression* expr);
 
283
        ValaCCodeExpression* (*deserialize_expression) (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* variant_expr, ValaCCodeExpression* expr, ValaCCodeExpression* error_expr, gboolean* may_fail);
293
284
        ValaCCodeExpression* (*serialize_expression) (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* expr);
294
285
        ValaCCodeExpression* (*get_implicit_cast_expression) (ValaCCodeBaseModule* self, ValaCCodeExpression* source_cexpr, ValaDataType* expression_type, ValaDataType* target_type, ValaExpression* expr);
295
286
        gboolean (*is_gobject_property) (ValaCCodeBaseModule* self, ValaProperty* prop);
298
289
        gboolean (*method_has_wrapper) (ValaCCodeBaseModule* self, ValaMethod* method);
299
290
        ValaCCodeFunctionCall* (*get_param_spec) (ValaCCodeBaseModule* self, ValaProperty* prop);
300
291
        ValaCCodeFunctionCall* (*get_signal_creation) (ValaCCodeBaseModule* self, ValaSignal* sig, ValaTypeSymbol* type);
301
 
        void (*register_dbus_info) (ValaCCodeBaseModule* self, ValaObjectTypeSymbol* bindable);
 
292
        void (*register_dbus_info) (ValaCCodeBaseModule* self, ValaCCodeBlock* block, ValaObjectTypeSymbol* bindable);
302
293
        gchar* (*get_dynamic_property_getter_cname) (ValaCCodeBaseModule* self, ValaDynamicProperty* node);
303
294
        gchar* (*get_dynamic_property_setter_cname) (ValaCCodeBaseModule* self, ValaDynamicProperty* node);
304
295
        gchar* (*get_dynamic_signal_cname) (ValaCCodeBaseModule* self, ValaDynamicSignal* node);
409
400
        ValaGErrorModuleClass parent_class;
410
401
        void (*generate_virtual_method_declaration) (ValaGTypeModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeStruct* type_struct);
411
402
        void (*generate_class_init) (ValaGTypeModule* self, ValaClass* cl);
412
 
        ValaTypeRegisterFunction* (*create_interface_register_function) (ValaGTypeModule* self, ValaInterface* iface);
413
403
};
414
404
 
415
405
struct _ValaGObjectModule {
447
437
GType vala_ccode_delegate_module_get_type (void) G_GNUC_CONST;
448
438
GType vala_gerror_module_get_type (void) G_GNUC_CONST;
449
439
GType vala_gtype_module_get_type (void) G_GNUC_CONST;
450
 
gpointer vala_typeregister_function_ref (gpointer instance);
451
 
void vala_typeregister_function_unref (gpointer instance);
452
 
GParamSpec* vala_param_spec_typeregister_function (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
453
 
void vala_value_set_typeregister_function (GValue* value, gpointer v_object);
454
 
void vala_value_take_typeregister_function (GValue* value, gpointer v_object);
455
 
gpointer vala_value_get_typeregister_function (const GValue* value);
456
 
GType vala_typeregister_function_get_type (void) G_GNUC_CONST;
457
440
GType vala_gobject_module_get_type (void) G_GNUC_CONST;
458
441
#define VALA_GOBJECT_MODULE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALA_TYPE_GOBJECT_MODULE, ValaGObjectModulePrivate))
459
442
enum  {
3634
3617
        ValaDelegateType* _tmp24_;
3635
3618
        ValaDelegateType* d;
3636
3619
        gboolean _tmp25_ = FALSE;
3637
 
        ValaProperty* _tmp28_ = NULL;
 
3620
        gboolean _tmp28_ = FALSE;
 
3621
        gboolean _tmp29_ = FALSE;
3638
3622
        const gchar* _tmp33_ = NULL;
3639
3623
        gchar _tmp34_;
3640
3624
        gboolean _tmp35_;
 
3625
        gboolean _tmp36_ = FALSE;
3641
3626
        self = (ValaGObjectModule*) base;
3642
3627
        g_return_val_if_fail (prop != NULL, FALSE);
3643
3628
        _tmp0_ = vala_symbol_get_parent_symbol ((ValaSymbol*) prop);
3733
3718
                _vala_code_node_unref0 (type_sym);
3734
3719
                return result;
3735
3720
        }
3736
 
        _tmp28_ = vala_property_get_base_interface_property (prop);
3737
 
        if (_tmp28_ != NULL) {
3738
 
                ValaProperty* _tmp29_ = NULL;
3739
 
                ValaSymbol* _tmp30_ = NULL;
3740
 
                ValaInterface* _tmp31_;
3741
 
                ValaInterface* iface;
 
3721
        if (VALA_IS_CLASS (type_sym)) {
 
3722
                ValaProperty* _tmp30_ = NULL;
 
3723
                _tmp30_ = vala_property_get_base_interface_property (prop);
 
3724
                _tmp29_ = _tmp30_ != NULL;
 
3725
        } else {
 
3726
                _tmp29_ = FALSE;
 
3727
        }
 
3728
        if (_tmp29_) {
 
3729
                ValaProperty* _tmp31_ = NULL;
3742
3730
                gboolean _tmp32_;
3743
 
                _tmp29_ = vala_property_get_base_interface_property (prop);
3744
 
                _tmp30_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp29_);
3745
 
                _tmp31_ = _vala_code_node_ref0 (VALA_INTERFACE (_tmp30_));
3746
 
                iface = _tmp31_;
3747
 
                _tmp32_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) iface, ((ValaCCodeBaseModule*) self)->gobject_type);
3748
 
                if (!_tmp32_) {
3749
 
                        result = FALSE;
3750
 
                        _vala_code_node_unref0 (iface);
3751
 
                        _vala_code_node_unref0 (d);
3752
 
                        _vala_code_node_unref0 (st);
3753
 
                        _vala_code_node_unref0 (type_sym);
3754
 
                        return result;
3755
 
                }
3756
 
                _vala_code_node_unref0 (iface);
 
3731
                _tmp31_ = vala_property_get_base_interface_property (prop);
 
3732
                _tmp32_ = vala_ccode_base_module_is_gobject_property ((ValaCCodeBaseModule*) self, _tmp31_);
 
3733
                _tmp28_ = !_tmp32_;
 
3734
        } else {
 
3735
                _tmp28_ = FALSE;
 
3736
        }
 
3737
        if (_tmp28_) {
 
3738
                result = FALSE;
 
3739
                _vala_code_node_unref0 (d);
 
3740
                _vala_code_node_unref0 (st);
 
3741
                _vala_code_node_unref0 (type_sym);
 
3742
                return result;
3757
3743
        }
3758
3744
        _tmp33_ = vala_symbol_get_name ((ValaSymbol*) prop);
3759
3745
        _tmp34_ = string_get (_tmp33_, (glong) 0);
3765
3751
                _vala_code_node_unref0 (type_sym);
3766
3752
                return result;
3767
3753
        }
 
3754
        if (VALA_IS_INTERFACE (type_sym)) {
 
3755
                ValaAttribute* _tmp37_ = NULL;
 
3756
                ValaAttribute* _tmp38_;
 
3757
                _tmp37_ = vala_code_node_get_attribute ((ValaCodeNode*) type_sym, "DBus");
 
3758
                _tmp38_ = _tmp37_;
 
3759
                _tmp36_ = _tmp38_ != NULL;
 
3760
                _vala_code_node_unref0 (_tmp38_);
 
3761
        } else {
 
3762
                _tmp36_ = FALSE;
 
3763
        }
 
3764
        if (_tmp36_) {
 
3765
                result = FALSE;
 
3766
                _vala_code_node_unref0 (d);
 
3767
                _vala_code_node_unref0 (st);
 
3768
                _vala_code_node_unref0 (type_sym);
 
3769
                return result;
 
3770
        }
3768
3771
        result = TRUE;
3769
3772
        _vala_code_node_unref0 (d);
3770
3773
        _vala_code_node_unref0 (st);