-
Notifications
You must be signed in to change notification settings - Fork 34
/
Copy pathIBoolR.java
92 lines (67 loc) · 3.15 KB
/
IBoolR.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*---
iGeo - http://igeo.jp
Copyright (c) 2002-2013 Satoru Sugihara
This file is part of iGeo.
iGeo is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation, version 3.
iGeo is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with iGeo. If not, see <http://www.gnu.org/licenses/>.
---*/
package igeo;
/**
Reference class of boolean to be used as IParameterObject.
@author Satoru Sugihara
*/
public class IBoolR extends IParameterObject implements IBoolI, IReferenceParameter{
protected IBoolOp op;
public IBoolR(IBoolOp v){ op=v; }
public IBoolR(boolean v){ op = new IBool(v); }
public IBoolR(IServerI s, IBoolOp v){ super(s); op=v; }
public IBoolR(IServerI s, boolean v){ super(s); op = new IBool(v); }
public boolean x(){ return op.get().x; }
public IBool get(){ return op.get(); }
public IBoolR getX(){ return this; }
public IBoolR dup(){ return new IBoolR(op); }
public IBoolR cp(){ return dup(); }
public IBoolOp operator(){ return op; } // for viewer
public IBoolR set(IBoolI v){ op=v; return this; }
public IBoolR set(boolean v){ op=new IBool(v); return this; }
public IBoolR and(IBoolI v){ op = new And(op,v); return this; }
public IBoolR and(boolean v){ op = new And(op,new IBool(v)); return this; }
public IBoolR or(IBoolI v){ op = new Or(op,v); return this; }
public IBoolR or(boolean v){ op = new Or(op,new IBool(v)); return this; }
public IBoolR not(){ op = new Not(op); return this; }
public boolean eq(IBoolI v){ return x()==v.x(); }
//public IBoolR eqR(IBoolI v){ return new IBoolR(new Eq(op,v)); }
public boolean eq(ISwitchE e, IBoolI v){ return eq(v); }
public IBoolR eq(ISwitchR r, IBoolI v){ return new IBoolR(new Eq(op,v)); }
static public class And extends IParameterObject implements IBoolOp{
public IBoolOp v1, v2;
And(IBoolOp v1, IBoolOp v2){ this.v1=v1; this.v2=v2; }
public boolean x(){ return v1.x()&v2.x(); }
public IBool get(){ return v1.get().and(v2.get()); }
}
static public class Or extends IParameterObject implements IBoolOp{
public IBoolOp v1, v2;
Or(IBoolOp v1, IBoolOp v2){ this.v1=v1; this.v2=v2; }
public boolean x(){ return v1.x()|v2.x(); }
public IBool get(){ return v1.get().or(v2.get()); }
}
static public class Not extends IParameterObject implements IBoolOp{
public IBoolOp v;
Not(IBoolOp v){ this.v=v; }
public boolean x(){ return !v.x(); }
public IBool get(){ return v.get().not(); }
}
static public class Eq extends IParameterObject implements IBoolOp{
public IBoolOp v1, v2;
Eq(IBoolOp v1, IBoolOp v2){ this.v1=v1; this.v2=v2; }
public boolean x(){ return v1.x()==v2.x(); }
public IBool get(){ return v1.get().eq((Ir)null,v2.get()); }
}
}