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;
}
}
+ /**
+ * 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.
*
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;
} 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);