]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
vala: Add CodeNode.copy_attribute_*() helper methods
authorRico Tzschichholz <ricotz@ubuntu.com>
Thu, 8 Nov 2018 11:45:24 +0000 (12:45 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Mon, 26 Nov 2018 08:30:28 +0000 (09:30 +0100)
Provides an easy way to copy a specific attribute argument from another
code node if the source has it set.

vala/valacodenode.vala

index e8ab35725c3d542ad3ba081fa343b998fa6471cb..e0320d02f4028ba9afbed220974fa0f377c04fa8 100644 (file)
@@ -328,6 +328,70 @@ public abstract class Vala.CodeNode {
                a.add_argument (argument, value.to_string ());
        }
 
+       /**
+        * Copy the string value of the specified attribute argument if available.
+        *
+        * @param source    codenode to copy from
+        * @param attribute attribute name
+        * @param argument  argument name
+        * @return          true if successful
+        */
+       public bool copy_attribute_string (CodeNode source, string attribute, string argument) {
+               if (source.has_attribute_argument (attribute, argument)) {
+                       set_attribute_string (attribute, argument, source.get_attribute_string (attribute, argument));
+                       return true;
+               }
+               return false;
+       }
+
+       /**
+        * Copy the integer value of the specified attribute argument if available.
+        *
+        * @param source    codenode to copy from
+        * @param attribute attribute name
+        * @param argument  argument name
+        * @return          true if successful
+        */
+       public bool copy_attribute_integer (CodeNode source, string attribute, string argument) {
+               if (source.has_attribute_argument (attribute, argument)) {
+                       set_attribute_integer (attribute, argument, source.get_attribute_integer (attribute, argument));
+                       return true;
+               }
+               return false;
+       }
+
+       /**
+        * Copy the double value of the specified attribute argument if available.
+        *
+        * @param source    codenode to copy from
+        * @param attribute attribute name
+        * @param argument  argument name
+        * @return          true if successful
+        */
+       public bool copy_attribute_double (CodeNode source, string attribute, string argument) {
+               if (source.has_attribute_argument (attribute, argument)) {
+                       set_attribute_double (attribute, argument, source.get_attribute_double (attribute, argument));
+                       return true;
+               }
+               return false;
+       }
+
+       /**
+        * Copy the boolean value of the specified attribute argument if available.
+        *
+        * @param source    codenode to copy from
+        * @param attribute attribute name
+        * @param argument  argument name
+        * @return          true if successful
+        */
+       public bool copy_attribute_bool (CodeNode source, string attribute, string argument) {
+               if (source.has_attribute_argument (attribute, argument)) {
+                       set_attribute_bool (attribute, argument, source.get_attribute_bool (attribute, argument));
+                       return true;
+               }
+               return false;
+       }
+
        /**
         * Returns the attribute cache at the specified index.
         *