[vala] girparser: Remove all type arguments when using type_arguments metadata.
- From: Luca Bruno <lucabru src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] girparser: Remove all type arguments when using type_arguments metadata.
- Date: Mon, 4 Apr 2011 14:15:29 +0000 (UTC)
commit 89c27665c9d93b4e2cfc5732e189cb66f8f98558
Author: Luca Bruno <lucabru src gnome org>
Date: Tue Nov 9 11:53:48 2010 +0100
girparser: Remove all type arguments when using type_arguments metadata.
vala/valagirparser.vala | 29 ++++++++++++-----------------
1 files changed, 12 insertions(+), 17 deletions(-)
---
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index 4a59d88..e26fbc1 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -1146,37 +1146,32 @@ public class Vala.GirParser : CodeVisitor {
return str;
}
+ /*
+ * The changed is a faster way to check whether the type has changed and it may affect the C declaration.
+ * If type arguments change, the C declaration is not affected.
+ */
DataType? element_get_type (DataType orig_type, bool owned_by_default, out bool changed = null) {
- if (&changed != null) {
- changed = false;
- }
-
+ changed = false;
var type = orig_type;
if (metadata.has_argument (ArgumentType.TYPE)) {
var new_type = parse_type_from_string (metadata.get_string (ArgumentType.TYPE), owned_by_default, metadata.get_source_reference (ArgumentType.TYPE));
- if (&changed != null) {
- changed = true;
- }
+ changed = true;
return new_type;
}
- if (metadata.has_argument (ArgumentType.TYPE_ARGUMENTS)) {
- parse_type_arguments_from_string (type, metadata.get_string (ArgumentType.TYPE_ARGUMENTS), metadata.get_source_reference (ArgumentType.TYPE_ARGUMENTS));
- if (&changed != null) {
- changed = true;
- }
- }
-
if (type is VoidType) {
return type;
}
+ if (metadata.has_argument (ArgumentType.TYPE_ARGUMENTS)) {
+ type.remove_all_type_arguments ();
+ parse_type_arguments_from_string (type, metadata.get_string (ArgumentType.TYPE_ARGUMENTS), metadata.get_source_reference (ArgumentType.TYPE_ARGUMENTS));
+ }
+
if (metadata.get_bool (ArgumentType.ARRAY)) {
type = new ArrayType (type, 1, type.source_reference);
- if (&changed != null) {
- changed = true;
- }
+ changed = true;
}
if (owned_by_default) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]