01: /*
02: This source file is part of Smyle, a database library.
03: For up-to-date information, see http://www.drjava.de/smyle
04: Copyright (C) 2001 Stefan Reich (doc@drjava.de)
05:
06: This library is free software; you can redistribute it and/or
07: modify it under the terms of the GNU Lesser General Public
08: License as published by the Free Software Foundation; either
09: version 2.1 of the License, or (at your option) any later version.
10:
11: This library is distributed in the hope that it will be useful,
12: but WITHOUT ANY WARRANTY; without even the implied warranty of
13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: Lesser General Public License for more details.
15:
16: You should have received a copy of the GNU Lesser General Public
17: License along with this library; if not, write to the Free Software
18: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19:
20: For full license text, see doc/license/lgpl.txt in this distribution
21: */
22:
23: package drjava.smyle.meta;
24:
25: import org.artsProject.mcop.*;
26: import drjava.smyle.core.*;
27:
28: public class Cascade<A, B, C> implements Function<A, C>, Marshallable {
29: private final Function<A, B> f;
30: private final Function<B, C> g;
31:
32: public Cascade(Function<A, B> f, Function<B, C> g) {
33: this .f = f;
34: this .g = g;
35: }
36:
37: public C of(A a) {
38: return g.of(f.of(a));
39: }
40:
41: public Function<A, B> f() {
42: return f;
43: }
44:
45: public Function<B, C> g() {
46: return g;
47: }
48:
49: public boolean equals(Object o) {
50: if (!(o instanceof Cascade))
51: return false;
52: Cascade c = (Cascade) o;
53: return f.equals(c.f) && g.equals(c.g);
54: }
55:
56: public int hashCode() {
57: return f.hashCode() + g.hashCode();
58: }
59:
60: public void marshal(Buffer b) {
61: FunctionMarDemar.marshalCascade(b, f, g);
62: }
63:
64: public String toString() {
65: return "Cascade(" + f + "," + g + ")";
66: }
67: }
|