01: /*
02: * @(#)DependenceArc.java 1.8 06/10/10
03: *
04: * Copyright 1990-2006 Sun Microsystems, Inc. All Rights Reserved.
05: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
06: *
07: * This program is free software; you can redistribute it and/or
08: * modify it under the terms of the GNU General Public License version
09: * 2 only, as published by the Free Software Foundation.
10: *
11: * This program is distributed in the hope that it will be useful, but
12: * WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * General Public License version 2 for more details (a copy is
15: * included at /legal/license.txt).
16: *
17: * You should have received a copy of the GNU General Public License
18: * version 2 along with this work; if not, write to the Free Software
19: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20: * 02110-1301 USA
21: *
22: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
23: * Clara, CA 95054 or visit www.sun.com if you need additional
24: * information or have any questions.
25: *
26: */
27:
28: package dependenceAnalyzer;
29:
30: /*
31: * A DependenceArc connects two DependenceNode structures.
32: * The "from" node has a dependence on the "to" node.
33: * The "type" of dependence is not defined by us here, but depends
34: * on the type of analysis being done. See the DependenceAnalyzer
35: * classes. An alternative design would be to use subclassing of
36: * DependenceArc to indicate dependence type. Let me know.
37: *
38: * Generally, we will know either the "from" or the "to" from
39: * context (as we're traversing a dependsOn or dependedOn enumeration)
40: * and will only need to look at the other.
41: */
42: public class DependenceArc {
43: public DependenceNode from() {
44: return fromNode;
45: }
46:
47: public DependenceNode to() {
48: return toNode;
49: }
50:
51: public int type() {
52: return arcType;
53: }
54:
55: public DependenceArc(DependenceNode isFrom, DependenceNode isTo,
56: int dependenceType) {
57: fromNode = isFrom;
58: toNode = isTo;
59: arcType = dependenceType;
60: }
61:
62: public boolean equals(Object o) {
63: try {
64: DependenceArc other = (DependenceArc) o;
65: return ((this .fromNode == other.fromNode)
66: && (this .toNode == other.toNode) && (this .arcType == other.arcType));
67: } catch (Throwable t) {
68: return false;
69: }
70: }
71:
72: // state is all private
73: // object is immutable.
74: private DependenceNode fromNode;
75: private DependenceNode toNode;
76: private int arcType;
77: }
|