]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Small refactoring for generic type parameters
authorJürg Billeter <j@bitron.ch>
Mon, 1 Aug 2011 20:32:46 +0000 (22:32 +0200)
committerJürg Billeter <j@bitron.ch>
Wed, 3 Aug 2011 11:54:16 +0000 (13:54 +0200)
codegen/valaccodebasemodule.vala
codegen/valaccodemethodcallmodule.vala

index 0feed1b65db9823c27d4dca44544672f77603cb0..e5c11b1b92981cf048ea3a2bdea4decb5fac828a 100644 (file)
@@ -1822,17 +1822,12 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
 
                                if (current_method != null) {
                                        // allow capturing generic type parameters
+                                       var suffices = new string[] {"type", "dup_func", "destroy_func"};
                                        foreach (var type_param in current_method.get_type_parameters ()) {
-                                               string func_name;
-
-                                               func_name = "%s_type".printf (type_param.name.down ());
-                                               ccode.add_assignment (new CCodeMemberAccess.pointer (get_variable_cexpression ("_data%d_".printf (block_id)), func_name), get_variable_cexpression (func_name));
-
-                                               func_name = "%s_dup_func".printf (type_param.name.down ());
-                                               ccode.add_assignment (new CCodeMemberAccess.pointer (get_variable_cexpression ("_data%d_".printf (block_id)), func_name), get_variable_cexpression (func_name));
-
-                                               func_name = "%s_destroy_func".printf (type_param.name.down ());
-                                               ccode.add_assignment (new CCodeMemberAccess.pointer (get_variable_cexpression ("_data%d_".printf (block_id)), func_name), get_variable_cexpression (func_name));
+                                               foreach (string suffix in suffices) {
+                                                       string func_name = "%s_%s".printf (type_param.name.down (), suffix);
+                                                       ccode.add_assignment (new CCodeMemberAccess.pointer (get_variable_cexpression ("_data%d_".printf (block_id)), func_name), get_variable_cexpression (func_name));
+                                               }
                                        }
                                }
                        }
index e9a647662ec28b71bdf59d06d9cad9a687ee7210..67104a7d178ae9b92b5d00a1289c22c4f1f4c05f 100644 (file)
@@ -290,19 +290,14 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
 
                        if (!current_class.is_compact && current_class.get_type_parameters ().size > 0) {
                                /* type, dup func, and destroy func fields for generic types */
+                               var suffices = new string[] {"type", "dup_func", "destroy_func"};
                                foreach (TypeParameter type_param in current_class.get_type_parameters ()) {
-                                       CCodeIdentifier param_name;
-
                                        var priv_access = new CCodeMemberAccess.pointer (new CCodeIdentifier ("self"), "priv");
 
-                                       param_name = new CCodeIdentifier ("%s_type".printf (type_param.name.down ()));
-                                       ccode.add_assignment (new CCodeMemberAccess.pointer (priv_access, param_name.name), param_name);
-
-                                       param_name = new CCodeIdentifier ("%s_dup_func".printf (type_param.name.down ()));
-                                       ccode.add_assignment (new CCodeMemberAccess.pointer (priv_access, param_name.name), param_name);
-
-                                       param_name = new CCodeIdentifier ("%s_destroy_func".printf (type_param.name.down ()));
-                                       ccode.add_assignment (new CCodeMemberAccess.pointer (priv_access, param_name.name), param_name);
+                                       foreach (string suffix in suffices) {
+                                               var param_name = new CCodeIdentifier ("%s_%s".printf (type_param.name.down (), suffix));
+                                               ccode.add_assignment (new CCodeMemberAccess.pointer (priv_access, param_name.name), param_name);
+                                       }
                                }
                        }
                        // object chainup can't be used as expression