]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Support abstract/virtual delegate properties with target
authorLuca Bruno <lethalman88@gmail.com>
Fri, 20 Aug 2010 07:56:01 +0000 (09:56 +0200)
committerJürg Billeter <j@bitron.ch>
Fri, 20 Aug 2010 08:17:36 +0000 (10:17 +0200)
Fixes bug 623888.

codegen/valaccodebasemodule.vala
codegen/valagtypemodule.vala

index 0356c540a91d5131f7497c87ec469fea18c33534..c3ac32850c85c72ac9861e1cb47f3c4fc3f3cbcd 100644 (file)
@@ -1521,6 +1521,8 @@ public class Vala.CCodeBaseModule : CodeGenerator {
                                                        var len_expr = new CCodeIdentifier (get_array_length_cname ("result", dim));
                                                        vcall.add_argument (len_expr);
                                                }
+                                       } else if ((acc.value_type is DelegateType) && ((DelegateType) acc.value_type).delegate_symbol.has_target) {
+                                               vcall.add_argument (new CCodeIdentifier (get_delegate_target_cname ("result")));
                                        }
 
                                        block.add_statement (new CCodeReturnStatement (vcall));
@@ -1537,6 +1539,8 @@ public class Vala.CCodeBaseModule : CodeGenerator {
                                                var len_expr = new CCodeIdentifier (get_array_length_cname ("value", dim));
                                                vcall.add_argument (len_expr);
                                        }
+                               } else if ((acc.value_type is DelegateType) && ((DelegateType) acc.value_type).delegate_symbol.has_target) {
+                                       vcall.add_argument (new CCodeIdentifier (get_delegate_target_cname ("value")));
                                }
 
                                block.add_statement (new CCodeExpressionStatement (vcall));
index c989a392339741ed9d988c98e4570194dbebceef..054fdef7650c565946add3acfa88f6d7644da67c 100644 (file)
@@ -266,6 +266,8 @@ public class Vala.GTypeModule : GErrorModule {
                                        for (int dim = 1; dim <= array_type.rank; dim++) {
                                                vdeclarator.add_parameter (new CCodeFormalParameter (get_array_length_cname ("result", dim), "int*"));
                                        }
+                               } else if ((prop.property_type is DelegateType) && ((DelegateType) prop.property_type).delegate_symbol.has_target) {
+                                       vdeclarator.add_parameter (new CCodeFormalParameter (get_delegate_target_cname ("result"), "gpointer*"));
                                }
 
                                var vdecl = new CCodeDeclaration (creturn_type);
@@ -289,6 +291,8 @@ public class Vala.GTypeModule : GErrorModule {
                                        for (int dim = 1; dim <= array_type.rank; dim++) {
                                                vdeclarator.add_parameter (new CCodeFormalParameter (get_array_length_cname ("value", dim), "int"));
                                        }
+                               } else if ((prop.property_type is DelegateType) && ((DelegateType) prop.property_type).delegate_symbol.has_target) {
+                                       vdeclarator.add_parameter (new CCodeFormalParameter (get_delegate_target_cname ("value"), "gpointer"));
                                }
 
                                var vdecl = new CCodeDeclaration ("void");