[vala] vapigen: Add support for base types and ranks in structs



commit 115c6c59f5fea078d2b3000e1eef035b5f47bfcd
Author: Evan Nemerson <evan coeus-group com>
Date:   Sat Dec 19 21:58:36 2009 -0800

    vapigen: Add support for base types and ranks in structs
    
    Fixes bug 605039.

 vala/valastruct.vala        |    9 +++++++++
 vapigen/valagidlparser.vala |    4 ++++
 2 files changed, 13 insertions(+), 0 deletions(-)
---
diff --git a/vala/valastruct.vala b/vala/valastruct.vala
index 49177f2..63b8b85 100644
--- a/vala/valastruct.vala
+++ b/vala/valastruct.vala
@@ -403,6 +403,15 @@ public class Vala.Struct : TypeSymbol {
 		return rank;
 	}
 
+	/**
+	 * Sets the rank of this integer or floating point type.
+	 *
+	 * @return the rank if this is an integer or floating point type
+	 */
+	public void set_rank (int rank) {
+		this.rank = rank;
+	}
+
 	private void process_ccode_attribute (Attribute a) {
 		if (a.has_argument ("const_cname")) {
 			set_const_cname (a.get_string ("const_cname"));
diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala
index 010c82f..246dd18 100644
--- a/vapigen/valagidlparser.vala
+++ b/vapigen/valagidlparser.vala
@@ -425,6 +425,10 @@ public class Vala.GIdlParser : CodeVisitor {
 							if (eval (nv[1]) == "1") {
 								return;
 							}
+						} else if (nv[0] == "base_type") {
+							st.base_type = parse_type_string (eval (nv[1]));
+						} else if (nv[0] == "rank") {
+							st.set_rank (eval (nv[1]).to_int ());
 						} else if (nv[0] == "simple_type") {
 							if (eval (nv[1]) == "1") {
 								st.set_simple_type (true);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]