[vala] girparser: Add vfunc_name, abstract and virtual arguments
- From: Evan Nemerson <evann src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] girparser: Add vfunc_name, abstract and virtual arguments
- Date: Mon, 8 Nov 2010 10:04:10 +0000 (UTC)
commit af188cfd67e5e5cd7287751756bf3147764a6d4f
Author: Luca Bruno <lucabru src gnome org>
Date: Mon Aug 30 00:59:04 2010 +0200
girparser: Add vfunc_name, abstract and virtual arguments
vala/valagirparser.vala | 21 +++++++++++++++++++--
1 files changed, 19 insertions(+), 2 deletions(-)
---
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index 9659dbb..3c346ae 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -65,7 +65,10 @@ public class Vala.GirParser : CodeVisitor {
ARRAY_LENGTH_POS,
DEFAULT,
OUT,
- REF;
+ REF,
+ VFUNC_NAME,
+ VIRTUAL,
+ ABSTRACT;
public static ArgumentType? from_string (string name) {
var enum_class = (EnumClass) typeof(ArgumentType).class_ref ();
@@ -324,6 +327,8 @@ public class Vala.GirParser : CodeVisitor {
case TokenType.DEFAULT:
case TokenType.OUT:
case TokenType.REF:
+ case TokenType.VIRTUAL:
+ case TokenType.ABSTRACT:
str = get_string ();
break;
}
@@ -2185,7 +2190,7 @@ public class Vala.GirParser : CodeVisitor {
if (element_name == "virtual-method" || element_name == "callback") {
if (s is Method) {
((Method) s).is_virtual = true;
- if (invoker == null) {
+ if (invoker == null && !metadata.has_argument (ArgumentType.VFUNC_NAME)) {
s.attributes.append (new Attribute ("NoWrapper", s.source_reference));
}
}
@@ -2197,6 +2202,18 @@ public class Vala.GirParser : CodeVisitor {
((Method) s).binding = MemberBinding.STATIC;
}
+ if (s is Method) {
+ var method = (Method) s;
+ if (metadata.has_argument (ArgumentType.VIRTUAL)) {
+ method.is_virtual = metadata.get_bool (ArgumentType.VIRTUAL);
+ method.is_abstract = false;
+ } else if (metadata.has_argument (ArgumentType.ABSTRACT)) {
+ method.is_abstract = metadata.get_bool (ArgumentType.ABSTRACT);
+ method.is_virtual = false;
+ }
+ method.vfunc_name = metadata.get_string (ArgumentType.VFUNC_NAME);
+ }
+
var parameters = new ArrayList<MethodInfo> ();
var array_length_parameters = new ArrayList<int> ();
var closure_parameters = new ArrayList<int> ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]