/vqdr/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/vqdr/trunk

« back to all changes in this revision

Viewing changes to src/libvqdr/variable.vala

  • Committer: Gustav Hartvigsson
  • Date: 2024-12-22 00:42:11 UTC
  • Revision ID: gustav.hartvigsson@gmail.com-20241222004211-eg5i6yqp677vmc2n
[libvee/fast_number.vala] Removed debug code.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
using Vee;
1
2
namespace VQDR.Expression {
2
 
  
3
 
  
4
3
  /**
5
4
   * Represents a variable.
6
5
   */
7
6
  public struct Variable {
8
 
    public int min_val;
9
 
    public int max_val;
10
 
    public int current_val;
 
7
    public FastNumber min_val;
 
8
    public FastNumber max_val;
 
9
    public FastNumber current_val;
11
10
    
12
 
    public Variable (int min = 0, int max = 0, int current = 0) {
13
 
      this.max_val = max;
14
 
      this.min_val = min;
15
 
      this.current_val = current;
 
11
    public Variable (int32 min = 0, int32 max = 0, uint32 current = 0) {
 
12
      this.max_val.number = max;
 
13
      this.min_val.number = min;
 
14
      this.current_val.number = current;
16
15
    }
17
16
    
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);
23
22
    }
24
23
    
25
 
    public int compare (Variable other) {
26
 
      
27
 
      if (this.current_val > other.current_val) {
28
 
        return -1;
29
 
      } else if (this.current_val < other.current_val) {
30
 
        return 1;
31
 
      } else {
32
 
        if (this.max_val > other.max_val) {
33
 
          return -1;
34
 
        } else if (this.max_val < other.max_val) {
35
 
          return 1;
36
 
        } else {
37
 
          if (this.min_val > other.min_val) {
38
 
            return -1;
39
 
          } else if (this.min_val < other.min_val) {
40
 
            return 1;
41
 
          } // End min_val comp.
42
 
        } // End max_val comp
43
 
      } // End current_val Comp
44
 
      return 0; // They are exacly the same.
 
24
    public int64 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);
 
31
      }
 
32
      return 0;
45
33
    }
46
34
    
47
35
    /**
50
38
     * This is the same as @c compare. It is an alias to the same C function.
51
39
     */
52
40
    [CCode (cname = "vqdr_expression_variable_equals")]
53
 
    public static extern int static_compare (Variable a, Variable b);
 
41
    public static extern int32 static_compare (Variable a, Variable b);
54
42
    
55
43
    /**
56
44
     * Is this instance equal to the other?
57
45
     */
58
46
    public bool equals (Variable other) {
59
 
      return equals_values (other.min_val, other.max_val, other.current_val);
 
47
      return !(bool) this.compare (other);
60
48
    }
61
49
    
62
 
    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);
 
50
    public bool equals_values (int32 min, int32 max, int32 current) {
 
51
      return (this.current_val.number == current) &&
 
52
             (this.max_val.number == max) &&
 
53
             (this.min_val.number == min);
66
54
    }
67
55
    
68
56
    
70
58
    public string to_string () {
71
59
      StringBuilder s = new StringBuilder ();
72
60
      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);
 
61
      s.append_printf ("(max_val: %s, ", max_val.to_string (true));
 
62
      s.append_printf ("min_val: %s, ", max_val.to_string (true));
 
63
      s.append_printf ("current_val: %s)", current_val.to_string (true));
76
64
      s.append(")");
77
65
      return s.str;
78
66
    }