1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package zeus.concepts.fn;
25
26 import java.util.*;
27 import zeus.util.*;
28 import zeus.concepts.*;
29
30 public class BoolFn extends LogicalFn implements PrimitiveFn {
31 protected boolean arg;
32 public static final BoolFn trueFn = new BoolFn("true");
33 public static final BoolFn falseFn = new BoolFn("false");
34
35 public static final BoolFn newBoolFn(boolean arg) {
36 return ( arg ) ? trueFn : falseFn;
37 }
38 public static final BoolFn newBoolFn(String arg) {
39 if ( arg.equals("true") ) return trueFn;
40 else if ( arg.equals("false") ) return falseFn;
41 else
42 throw new IllegalArgumentException("Unknown operand \'" + arg +
43 "\' in boolean function");
44 }
45
46 public ValueFunction mirror() {
47 return new BoolFn(toString());
48 }
49
50 private BoolFn(String arg) {
51 super(BOOL,10);
52 this.arg = (Boolean.valueOf(arg)).booleanValue();
53 }
54 public String toString() {
55 return (new Boolean(arg)).toString();
56 }
57 Object getArg(int position) {
58 if ( position != 0 )
59 throw new ArrayIndexOutOfBoundsException(position);
60 return new Boolean(arg);
61 }
62 public boolean getValue() {
63 return arg;
64 }
65 public boolean isDeterminate() {
66 return true;
67 }
68 public int evaluate() {
69 return arg ? TRUE : FALSE;
70 }
71 public boolean equals(Object any) {
72 if ( !(any instanceof BoolFn) ) return false;
73 BoolFn fn = (BoolFn)any;
74 return arg == fn.getValue();
75 }
76 public boolean less(Object fn) {
77 return false;
78 }
79 public boolean references(ValueFunction var) {
80 return false;
81 }
82 }