[vala] vapigen: Support pointer type for type arguments and field types
- From: Jürg Billeter <juergbi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] vapigen: Support pointer type for type arguments and field types
- Date: Sat, 27 Mar 2010 08:34:37 +0000 (UTC)
commit 31b2e0e6eb6496e2960369318f11bbc5d8920cd0
Author: Jürg Billeter <j bitron ch>
Date: Sat Mar 27 09:33:35 2010 +0100
vapigen: Support pointer type for type arguments and field types
vapigen/valagidlparser.vala | 22 +++++++++++++++-------
1 files changed, 15 insertions(+), 7 deletions(-)
---
diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala
index 34a3637..d083112 100644
--- a/vapigen/valagidlparser.vala
+++ b/vapigen/valagidlparser.vala
@@ -1472,11 +1472,15 @@ public class Vala.GIdlParser : CodeVisitor {
return type;
}
- public UnresolvedType? get_type_from_string (string type_arg) {
+ public DataType get_type_from_string (string type_arg) {
bool is_unowned = false;
UnresolvedSymbol? sym = null;
- if ( type_arg.has_prefix ("unowned ") ) {
+ if (type_arg == "pointer") {
+ return new PointerType (new VoidType ());
+ }
+
+ if (type_arg.has_prefix ("unowned ")) {
type_arg = type_arg.offset ("unowned ".len ());
is_unowned = true;
}
@@ -1489,7 +1493,7 @@ public class Vala.GIdlParser : CodeVisitor {
arg_type.value_owned = !is_unowned;
return arg_type;
- }
+ }
private Method? create_method (string name, string symbol, IdlNodeParam? res, GLib.List<IdlNodeParam>? parameters, bool is_constructor, bool is_interface) {
DataType return_type = null;
@@ -2046,11 +2050,15 @@ public class Vala.GIdlParser : CodeVisitor {
type.value_owned = true;
}
} else if (nv[0] == "type_name") {
- var unresolved_sym = new UnresolvedSymbol (null, eval (nv[1]));
- if (type is ArrayType) {
- ((UnresolvedType) ((ArrayType) type).element_type).unresolved_symbol = unresolved_sym;
+ if (eval (nv[1]) == "pointer") {
+ type = new PointerType (new VoidType ());
} else {
- ((UnresolvedType) type).unresolved_symbol = unresolved_sym;
+ var unresolved_sym = new UnresolvedSymbol (null, eval (nv[1]));
+ if (type is ArrayType) {
+ ((UnresolvedType) ((ArrayType) type).element_type).unresolved_symbol = unresolved_sym;
+ } else {
+ ((UnresolvedType) type).unresolved_symbol = unresolved_sym;
+ }
}
} else if (nv[0] == "type_arguments") {
var type_args = eval (nv[1]).split (",");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]