]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Add [CCode (destroy_notify_pos = ...)] attribute for simple generics
authorJürg Billeter <j@bitron.ch>
Sun, 28 Mar 2010 16:10:53 +0000 (18:10 +0200)
committerJürg Billeter <j@bitron.ch>
Sun, 28 Mar 2010 16:10:53 +0000 (18:10 +0200)
codegen/valaccodemethodcallmodule.vala
vala/valadelegate.vala
vala/valaformalparameter.vala
vala/valamethod.vala
vala/valasignal.vala

index 9545c4e84f8ddf0fe03d2dee88341c362f505c8b..7b91e79cadbfd7e6e029cd8118b6d30697444833 100644 (file)
@@ -376,9 +376,9 @@ internal class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
                                                        int type_param_index = m.get_type_parameter_index (generic_type.type_parameter.name);
                                                        var type_arg = ma.get_type_arguments ().get (type_param_index);
                                                        if (requires_copy (type_arg)) {
-                                                               carg_map.set (get_param_pos (param.cparameter_position + 0.1), get_destroy_func_expression (type_arg));
+                                                               carg_map.set (get_param_pos (param.cdestroy_notify_parameter_position), get_destroy_func_expression (type_arg));
                                                        } else {
-                                                               carg_map.set (get_param_pos (param.cparameter_position + 0.1), new CCodeConstant ("NULL"));
+                                                               carg_map.set (get_param_pos (param.cdestroy_notify_parameter_position), new CCodeConstant ("NULL"));
                                                        }
                                                }
                                        }
index d152714ac9a81e5925298722d2597c14fbe4f87b..afedd3b8221811a3dfdf6efdd23b97fad37bcd3d 100644 (file)
@@ -1,6 +1,6 @@
 /* valadelegate.vala
  *
- * Copyright (C) 2006-2009  Jürg Billeter
+ * Copyright (C) 2006-2010  Jürg Billeter
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -119,6 +119,7 @@ public class Vala.Delegate : TypeSymbol {
                param.cparameter_position = parameters.size + 1;
                param.carray_length_parameter_position = param.cparameter_position + 0.1;
                param.cdelegate_target_parameter_position = param.cparameter_position + 0.1;
+               param.cdestroy_notify_parameter_position = param.cparameter_position + 0.1;
 
                parameters.add (param);
                scope.add (param.name, param);
index 2dfa557b5170e87891d7e142e782462aeb035e3b..5c7ca211f4d491479531c3d3893b2ac69342530b 100644 (file)
@@ -1,6 +1,6 @@
 /* valaformalparameter.vala
  *
- * Copyright (C) 2006-2009  Jürg Billeter
+ * Copyright (C) 2006-2010  Jürg Billeter
  * Copyright (C) 2006-2008  Raffaele Sandrini
  *
  * This library is free software; you can redistribute it and/or
@@ -95,6 +95,8 @@ public class Vala.FormalParameter : Symbol {
         */
        public double cdelegate_target_parameter_position { get; set; }
 
+       public double cdestroy_notify_parameter_position { get; set; }
+
        /**
         * Specifies the type of the parameter in the C function.
         */
@@ -176,6 +178,9 @@ public class Vala.FormalParameter : Symbol {
                if (a.has_argument ("delegate_target_pos")) {
                        cdelegate_target_parameter_position = a.get_double ("delegate_target_pos");
                }
+               if (a.has_argument ("destroy_notify_pos")) {
+                       cdestroy_notify_parameter_position = a.get_double ("destroy_notify_pos");
+               }
        }
 
        /**
index 979dcad1e60f28a85b44a67232faa4e67fe1ea52..4b35a47ff280ccf03c1e4ed0ae09821d7698c7ca 100644 (file)
@@ -275,6 +275,7 @@ public class Vala.Method : Member {
                param.cparameter_position = parameters.size + 1;
                param.carray_length_parameter_position = param.cparameter_position + 0.1;
                param.cdelegate_target_parameter_position = param.cparameter_position + 0.1;
+               param.cdestroy_notify_parameter_position = param.cparameter_position + 0.1;
 
                parameters.add (param);
                if (!param.ellipsis) {
index 9212389e7cad4778e6139eb60068212ecc1ba4a6..f4859d5cb53c46b9c523712aa3ccaf779bab9bae 100644 (file)
@@ -1,6 +1,6 @@
 /* valasignal.vala
  *
- * Copyright (C) 2006-2009  Jürg Billeter
+ * Copyright (C) 2006-2010  Jürg Billeter
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -107,6 +107,7 @@ public class Vala.Signal : Member, Lockable {
                param.cparameter_position = parameters.size + 1;
                param.carray_length_parameter_position = param.cparameter_position + 0.1;
                param.cdelegate_target_parameter_position = param.cparameter_position + 0.1;
+               param.cdestroy_notify_parameter_position = param.cparameter_position + 0.1;
 
                parameters.add (param);
                scope.add (param.name, param);