[vala/staging] vala: Transform Struct.*_rank() methods into "rank" property
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/staging] vala: Transform Struct.*_rank() methods into "rank" property
- Date: Thu, 26 Apr 2018 08:41:21 +0000 (UTC)
commit 3158ae7a0f990b44f114d51498636e669609af0d
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Thu Apr 26 09:33:58 2018 +0200
vala: Transform Struct.*_rank() methods into "rank" property
vala/valadatatype.vala | 2 +-
vala/valasemanticanalyzer.vala | 2 +-
vala/valastruct.vala | 66 +++++++++++++++++++--------------------
vapigen/valagidlparser.vala | 2 +-
4 files changed, 35 insertions(+), 37 deletions(-)
---
diff --git a/vala/valadatatype.vala b/vala/valadatatype.vala
index 1bbbc82..e25e5a4 100644
--- a/vala/valadatatype.vala
+++ b/vala/valadatatype.vala
@@ -336,7 +336,7 @@ public abstract class Vala.DataType : CodeNode {
if ((expr_struct.is_integer_type () && expect_struct.is_integer_type ()) ||
(expr_struct.is_floating_type () && expect_struct.is_floating_type ())) {
- if (expr_struct.get_rank () <= expect_struct.get_rank ()) {
+ if (expr_struct.rank <= expect_struct.rank) {
return true;
}
}
diff --git a/vala/valasemanticanalyzer.vala b/vala/valasemanticanalyzer.vala
index 73b0b61..8f4335b 100644
--- a/vala/valasemanticanalyzer.vala
+++ b/vala/valasemanticanalyzer.vala
@@ -991,7 +991,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
if (left.is_floating_type () == right.is_floating_type ()) {
// both operands integer or floating type
- if (left.get_rank () >= right.get_rank ()) {
+ if (left.rank >= right.rank) {
return left_type;
} else {
return right_type;
diff --git a/vala/valastruct.vala b/vala/valastruct.vala
index 972b4bd..23c0053 100644
--- a/vala/valastruct.vala
+++ b/vala/valastruct.vala
@@ -38,7 +38,7 @@ public class Vala.Struct : TypeSymbol {
private bool? floating_type;
private bool? decimal_floating_type;
private bool? simple_type;
- private int? rank;
+ private int? _rank;
private int? _width;
private bool? _signed;
private bool? _is_immutable;
@@ -125,6 +125,37 @@ public class Vala.Struct : TypeSymbol {
}
/**
+ * Specifies the rank of this integer or floating point type.
+ */
+ public int rank {
+ get {
+ if (_rank == null) {
+ if (is_integer_type () && has_attribute_argument ("IntegerType", "rank")) {
+ _rank = get_attribute_integer ("IntegerType", "rank");
+ } else if (has_attribute_argument ("FloatingType", "rank")) {
+ _rank = get_attribute_integer ("FloatingType", "rank");
+ } else {
+ var st = base_struct;
+ if (st != null) {
+ _rank = st.rank;
+ } else {
+ Report.error (source_reference, "internal error: struct has
no rank");
+ }
+ }
+ }
+ return _rank;
+ }
+ set {
+ _rank = value;
+ if (is_integer_type ()) {
+ set_attribute_integer ("IntegerType", "rank", _rank);
+ } else {
+ set_attribute_integer ("FloatingType", "rank", _rank);
+ }
+ }
+ }
+
+ /**
* Creates a new struct.
*
* @param name type name
@@ -353,39 +384,6 @@ public class Vala.Struct : TypeSymbol {
return decimal_floating_type;
}
- /**
- * Returns the rank of this integer or floating point type.
- *
- * @return the rank if this is an integer or floating point type
- */
- public int get_rank () {
- if (rank == null) {
- if (is_integer_type () && has_attribute_argument ("IntegerType", "rank")) {
- rank = get_attribute_integer ("IntegerType", "rank");
- } else if (has_attribute_argument ("FloatingType", "rank")) {
- rank = get_attribute_integer ("FloatingType", "rank");
- } else {
- var st = base_struct;
- if (st != null) {
- rank = st.get_rank ();
- }
- }
- }
- return rank;
- }
-
- /**
- * Sets the rank of this integer or floating point type.
- */
- public void set_rank (int rank) {
- this.rank = rank;
- if (is_integer_type ()) {
- set_attribute_integer ("IntegerType", "rank", rank);
- } else {
- set_attribute_integer ("FloatingType", "rank", rank);
- }
- }
-
public override int get_type_parameter_index (string name) {
int i = 0;
diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala
index bb3c4bb..e0ffca5 100644
--- a/vapigen/valagidlparser.vala
+++ b/vapigen/valagidlparser.vala
@@ -799,7 +799,7 @@ public class Vala.GIdlParser : CodeVisitor {
} else if (nv[0] == "base_type") {
st.base_type = parse_type_string (eval (nv[1]));
} else if (nv[0] == "rank") {
- st.set_rank (int.parse (eval (nv[1])));
+ st.rank = int.parse (eval (nv[1]));
} 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]