1
2
namespace VQDR.Expression {
5
4
* Represents a variable.
7
6
public struct Variable {
10
public int current_val;
7
public FastNumber min_val;
8
public FastNumber max_val;
9
public FastNumber current_val;
12
11
public Variable (int min = 0, int max = 0, int current = 0) {
15
this.current_val = current;
12
this.max_val.number = max;
13
this.min_val.number = min;
14
this.current_val.number = current;
18
17
[CCode (cname = "vqdr_expression_variable_copy")]
19
18
public Variable.copy (Variable other) {
20
this.max_val = other.max_val;
21
this.min_val = other.min_val;
22
this.current_val = other.current_val;
19
this.max_val.copy (other.max_val);
20
this.min_val.copy (other.min_val);
21
this.current_val.copy (other.current_val);
25
public int compare (Variable other) {
24
public long compare (Variable other) {
25
if (! this.current_val.equals (other.current_val)) {
26
return this.current_val.compare (other.current_val);
27
} else if (! this.max_val.equals (other.max_val)) {
28
return this.max_val.compare (other.max_val);
29
} else if (! this.min_val.equals (other.min_val)) {
30
return this.min_val.compare (other.min_val);
27
if (this.current_val > other.current_val) {
29
} else if (this.current_val < other.current_val) {
32
if (this.max_val > other.max_val) {
34
} else if (this.max_val < other.max_val) {
37
if (this.min_val > other.min_val) {
39
} else if (this.min_val < other.min_val) {
41
} // End min_val comp.
43
} // End current_val Comp
44
return 0; // They are exacly the same.
34
// // this should be correct.
35
// return (current_val.compare (other.current_val)) +
36
// (max_val.compare (other.max_val)) +
37
// (min_val.compare (other.min_val));
38
// ------------------------------------------
39
// if (this.current_val > other.current_val) {
41
// } else if (this.current_val < other.current_val) {
44
// if (this.max_val > other.max_val) {
46
// } else if (this.max_val < other.max_val) {
49
// if (this.min_val > other.min_val) {
51
// } else if (this.min_val < other.min_val) {
53
// } // End min_val comp.
54
// } // End max_val comp
55
// } // End current_val Comp
56
// return 0; // They are exacly the same.
56
68
* Is this instance equal to the other?
58
70
public bool equals (Variable other) {
59
return equals_values (other.min_val, other.max_val, other.current_val);
71
return !(bool) this.compare (other);
62
74
public bool equals_values (int min, int max, int current) {
63
return (max == this.max_val) &&
64
(min == this.min_val) &&
65
(current == this.current_val);
75
return (this.current_val.number == current) &&
76
(this.max_val.number == max) &&
77
(this.min_val.number == min);
70
82
public string to_string () {
71
83
StringBuilder s = new StringBuilder ();
72
84
s.append("(Variable: ");
73
s.append_printf ("(max_val: %i, ", max_val);
74
s.append_printf ("min_val: %i, ", max_val);
75
s.append_printf ("current_val: %i)", current_val);
85
s.append_printf ("(max_val: %s, ", max_val.to_string (true));
86
s.append_printf ("min_val: %s, ", max_val.to_string (true));
87
s.append_printf ("current_val: %s)", current_val.to_string (true));