1 package edu.berkeley.fleet.api;
3 /** possible predicate field values */
4 public enum Predicate {
5 Default, FlagA, NotFlagA, FlagB, NotFlagB, FlagC, NotFlagC, IgnoreOLC, OLCZero;
6 public String toString() {
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);
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) {
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);