add BitVector.equalsZeroExtended()
[fleet.git] / src / edu / berkeley / fleet / api / Predicate.java
1 package edu.berkeley.fleet.api;
2
3 /** possible predicate field values */
4 public enum Predicate {
5     Default, FlagA, NotFlagA, FlagB, NotFlagB, FlagC, NotFlagC, IgnoreOLC, OLCZero;
6     public String toString() {
7         switch(this) {
8             case Default:    return "";
9             case FlagA:      return "a";
10             case FlagB:      return "b";
11             case FlagC:      return "c";
12             case NotFlagA:   return "!a";
13             case NotFlagB:   return "!b";
14             case NotFlagC:   return "!c";
15             case IgnoreOLC:  return "*";
16             case OLCZero:    return "olc=0";
17             default:         throw new Error("unknown predicate " + this);
18         }
19     }
20
21     /** evaluates this predicate for a given set of flags and olc */
22     public boolean evaluate(boolean flag_a, boolean flag_b, boolean flag_c, boolean olc_zero) {
23         switch(this) {
24             case Default:    return !olc_zero;
25             case FlagA:      return !olc_zero && flag_a;
26             case FlagB:      return !olc_zero && flag_b;
27             case FlagC:      return !olc_zero && flag_c;
28             case NotFlagA:   return !olc_zero && !flag_a;
29             case NotFlagB:   return !olc_zero && !flag_b;
30             case NotFlagC:   return !olc_zero && !flag_c;
31             case IgnoreOLC:  return true;
32             case OLCZero:    return olc_zero;
33             default:         throw new Error("unknown predicate " + this);
34         }
35     }
36
37 }