summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2016-09-18 15:36:06 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2016-09-18 15:36:06 +0200
commita38fdd253569d3459204a08364d3ba8a831f32eb (patch)
treea92da641e3c52b739cddc83cdf83d938a9e63b97
parentb24f85a6ac56328a30dfa04e3daeed85fe7fc4af (diff)
downloadvala-a38fdd253569d3459204a08364d3ba8a831f32eb.tar.gz
codegen: Add support for finish_vfunc_name in CCode
-rw-r--r--codegen/valaccodeattribute.vala7
-rw-r--r--vala/valagirparser.vala7
-rw-r--r--vapigen/valagidlparser.vala2
3 files changed, 14 insertions, 2 deletions
diff --git a/codegen/valaccodeattribute.vala b/codegen/valaccodeattribute.vala
index 38d2ebfc1..0383fe3d4 100644
--- a/codegen/valaccodeattribute.vala
+++ b/codegen/valaccodeattribute.vala
@@ -439,7 +439,12 @@ public class Vala.CCodeAttribute : AttributeCache {
public string finish_vfunc_name {
get {
if (_finish_vfunc_name == null) {
- _finish_vfunc_name = get_finish_name_for_basename (vfunc_name);
+ if (ccode != null) {
+ _finish_vfunc_name = ccode.get_string ("finish_vfunc_name");
+ }
+ if (_finish_vfunc_name == null) {
+ _finish_vfunc_name = get_finish_name_for_basename (vfunc_name);
+ }
}
return _finish_vfunc_name;
}
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index 159ce9fdc..b4530698f 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -81,7 +81,8 @@ public class Vala.GirParser : CodeVisitor {
FLOATING,
TYPE_ID,
RETURN_VOID,
- DELEGATE_TARGET_CNAME;
+ DELEGATE_TARGET_CNAME,
+ FINISH_VFUNC_NAME;
public static ArgumentType? from_string (string name) {
var enum_class = (EnumClass) typeof(ArgumentType).class_ref ();
@@ -3081,6 +3082,10 @@ public class Vala.GirParser : CodeVisitor {
method.set_attribute_string ("CCode", "vfunc_name", metadata.get_string (ArgumentType.VFUNC_NAME));
method.is_virtual = true;
}
+ if (metadata.has_argument (ArgumentType.FINISH_VFUNC_NAME)) {
+ method.set_attribute_string ("CCode", "finish_vfunc_name", metadata.get_string (ArgumentType.FINISH_VFUNC_NAME));
+ method.is_virtual = true;
+ }
}
if (!(metadata.get_expression (ArgumentType.THROWS) is NullLiteral)) {
diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala
index 380fb0aeb..543b68657 100644
--- a/vapigen/valagidlparser.vala
+++ b/vapigen/valagidlparser.vala
@@ -2349,6 +2349,8 @@ public class Vala.GIdlParser : CodeVisitor {
}
} else if (nv[0] == "vfunc_name") {
m.set_attribute_string ("CCode", "vfunc_name", eval (nv[1]));
+ } else if (nv[0] == "finish_vfunc_name") {
+ m.set_attribute_string ("CCode", "finish_vfunc_name", eval (nv[1]));
} else if (nv[0] == "finish_name") {
m.set_attribute_string ("CCode", "finish_name", eval (nv[1]));
} else if (nv[0] == "async") {