]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Add get_ccode_no_wrapper() and use it
authorRico Tzschichholz <ricotz@ubuntu.com>
Mon, 1 Feb 2021 07:18:38 +0000 (08:18 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Mon, 1 Feb 2021 07:18:38 +0000 (08:18 +0100)
codegen/valaccode.vala
codegen/valaccodememberaccessmodule.vala
codegen/valaccodemethodcallmodule.vala
codegen/valaccodemethodmodule.vala
codegen/valagasyncmodule.vala
codegen/valagirwriter.vala

index 175cd99ea6b67651a4b921e15159272f6e9c4408..7671b2c50ecb7d67b9d5e9dde2132eb27d37adbe 100644 (file)
@@ -466,6 +466,10 @@ namespace Vala {
                return m.get_attribute_double ("CCode", "generic_type_pos");
        }
 
+       public static bool get_ccode_no_wrapper (Method m) {
+               return m.get_attribute ("NoWrapper") != null;
+       }
+
        public static string get_ccode_sentinel (Method m) {
                return get_ccode_attribute(m).sentinel;
        }
index bdd34d9e9382b37a5255bc8a7d8a72e45ca67cf2..05e5541f8ecf2c309bc0c1afc658dc587b3e4305 100644 (file)
@@ -65,7 +65,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
                        }
 
                        if (m.base_method != null) {
-                               if (m.base_method.get_attribute ("NoWrapper") != null) {
+                               if (get_ccode_no_wrapper (m.base_method)) {
                                        var base_class = (Class) m.base_method.parent_symbol;
                                        if (!base_class.is_compact) {
                                                CCodeFunctionCall vclass;
@@ -86,7 +86,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
                                        set_cvalue (expr, new CCodeIdentifier (get_ccode_name (m.base_method)));
                                }
                        } else if (m.base_interface_method != null) {
-                               if (m.base_interface_method.get_attribute ("NoWrapper") != null) {
+                               if (get_ccode_no_wrapper (m.base_interface_method)) {
                                        var base_iface = (Interface) m.base_interface_method.parent_symbol;
                                        CCodeFunctionCall vclass;
                                        if (base_iface.external_package) {
index 407a30685ccc1382f55b1bfbd7e61c6302a1b63a..11a5b7046fa12c06e45d1c62a08057fa43d9f8cc 100644 (file)
@@ -108,7 +108,7 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
                                        async_call.call = new CCodeMemberAccess.pointer (vcast, get_ccode_vfunc_name (m));
                                        finish_call.call = new CCodeMemberAccess.pointer (vcast, get_ccode_finish_vfunc_name (m));
                                }
-                       } else if (m != null && m.get_attribute ("NoWrapper") != null && m.binding == MemberBinding.INSTANCE && !(m is CreationMethod)) {
+                       } else if (m != null && get_ccode_no_wrapper (m) && m.binding == MemberBinding.INSTANCE && !(m is CreationMethod)) {
                                var instance_value = ma.inner.target_value;
                                if ((ma.member_name == "begin" || ma.member_name == "end") && ma.inner.symbol_reference == ma.symbol_reference) {
                                        var inner_ma = (MemberAccess) ma.inner;
index ff81b2dd9cf3dfa74aeda82175c39548daab5949..ec18f786c17faa25cfed3a1136c75c19e885c157 100644 (file)
@@ -153,7 +153,7 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule {
                if (m.is_async_callback) {
                        return false;
                }
-               if ((m.is_abstract || m.is_virtual) && m.get_attribute ("NoWrapper") != null) {
+               if ((m.is_abstract || m.is_virtual) && get_ccode_no_wrapper (m)) {
                        return false;
                }
                if (add_symbol_declaration (decl_space, m, get_ccode_name (m))) {
@@ -812,7 +812,7 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule {
                pop_context ();
 
                if ((m.is_abstract || m.is_virtual) && !m.coroutine
-                   && m.get_attribute ("NoWrapper") == null
+                   && !get_ccode_no_wrapper (m)
                    // If the method is a signal handler, the declaration is not needed.
                    // the name should be reserved for the emitter!
                    && m.signal_reference == null) {
index 36270edc3a77de390143bf750951075593a80ff9..6c59c7fe479f82375ac03a7df1ebdae638549065 100644 (file)
@@ -339,7 +339,7 @@ public class Vala.GAsyncModule : GtkModule {
 
        public override bool generate_method_declaration (Method m, CCodeFile decl_space) {
                if (m.coroutine) {
-                       if ((m.is_abstract || m.is_virtual) && m.get_attribute ("NoWrapper") != null) {
+                       if ((m.is_abstract || m.is_virtual) && get_ccode_no_wrapper (m)) {
                                return false;
                        }
                        if (add_symbol_declaration (decl_space, m, get_ccode_name (m))) {
@@ -453,7 +453,7 @@ public class Vala.GAsyncModule : GtkModule {
                                }
                        }
 
-                       if ((m.is_abstract || m.is_virtual) && m.get_attribute ("NoWrapper") == null) {
+                       if ((m.is_abstract || m.is_virtual) && !get_ccode_no_wrapper (m)) {
                                // generate virtual function wrappers
                                var cparam_map = new HashMap<int,CCodeParameter> (direct_hash, direct_equal);
                                var carg_map = new HashMap<int,CCodeExpression> (direct_hash, direct_equal);
index afcab6ea96ed0f10310e9af9d6dd25aa0a96f412..6ba2a0e5cdf594986a009afc4f236747a4e06206 100644 (file)
@@ -1276,7 +1276,7 @@ public class Vala.GIRWriter : CodeVisitor {
                        tag_name = "function";
                }
 
-               if (m.get_attribute ("NoWrapper") == null) {
+               if (!get_ccode_no_wrapper (m)) {
                        write_signature (m, tag_name, true);
                }
 
@@ -1345,7 +1345,7 @@ public class Vala.GIRWriter : CodeVisitor {
                write_indent ();
                buffer.append_printf ("<%s name=\"%s\"", tag_name, name);
                if (tag_name == "virtual-method") {
-                       if (m.get_attribute ("NoWrapper") == null) {
+                       if (!get_ccode_no_wrapper (m)) {
                                buffer.append_printf (" invoker=\"%s\"", name);
                        }
                } else if (tag_name == "callback") {