summaryrefslogtreecommitdiff
path: root/vala/valagirparser.vala
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2021-01-30 21:17:25 +0100
committerRico Tzschichholz <ricotz@ubuntu.com>2021-01-30 21:17:25 +0100
commit3626df869d911fec13263c03b16bbb6d0162f70a (patch)
tree4b87defbdb5b9e23249570a48ce3fd259c5765cc /vala/valagirparser.vala
parenta758f2ab76e5d16627c7c4c8f824a5357267ad2d (diff)
downloadvala-3626df869d911fec13263c03b16bbb6d0162f70a.tar.gz
girparser: Apply "type_get_function" metadata for classes and inferfaces
Diffstat (limited to 'vala/valagirparser.vala')
-rw-r--r--vala/valagirparser.vala8
1 files changed, 8 insertions, 0 deletions
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index ca25d5508..fa6773f81 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -86,6 +86,7 @@ public class Vala.GirParser : CodeVisitor {
FEATURE_TEST_MACRO,
FLOATING,
TYPE_ID,
+ TYPE_GET_FUNCTION,
RETURN_VOID,
RETURNS_MODIFIED_POINTER,
DELEGATE_TARGET_CNAME,
@@ -2947,6 +2948,9 @@ public class Vala.GirParser : CodeVisitor {
cl = new Class (current.name, current.source_reference);
cl.is_abstract = metadata.get_bool (ArgumentType.ABSTRACT, reader.get_attribute ("abstract") == "1");
cl.is_sealed = metadata.get_bool (ArgumentType.SEALED, false);
+ if (metadata.has_argument (ArgumentType.TYPE_GET_FUNCTION)) {
+ cl.set_attribute_string ("CCode", "type_get_function", metadata.get_string (ArgumentType.TYPE_GET_FUNCTION));
+ }
if (parent != null) {
cl.add_base_type (parse_type_from_gir_name (parent));
@@ -3029,6 +3033,10 @@ public class Vala.GirParser : CodeVisitor {
Interface iface;
if (current.new_symbol) {
iface = new Interface (current.name, current.source_reference);
+ if (metadata.has_argument (ArgumentType.TYPE_GET_FUNCTION)){
+ iface.set_attribute_string ("CCode", "type_get_function", metadata.get_string (ArgumentType.TYPE_GET_FUNCTION));
+ }
+
current.symbol = iface;
} else {
iface = (Interface) current.symbol;