00001 package edu.ksu.cis.bandera.birp.node;
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 import ca.mcgill.sable.util.*;
00037 import edu.ksu.cis.bandera.birp.analysis.*;
00038
00039 public abstract class Node implements Switchable, Cloneable
00040 {
00041 private Node parent;
00042
00043 public abstract Object clone();
00044 protected List cloneList(List list)
00045 {
00046 List clone = new LinkedList();
00047
00048 for(Iterator i = list.iterator(); i.hasNext();)
00049 {
00050 clone.add(((Node) i.next()).clone());
00051 }
00052
00053 return clone;
00054 }
00055 protected Node cloneNode(Node node)
00056 {
00057 if(node != null)
00058 {
00059 return (Node) node.clone();
00060 }
00061
00062 return null;
00063 }
00064 public Node parent()
00065 {
00066 return parent;
00067 }
00068 void parent(Node parent)
00069 {
00070 this.parent = parent;
00071 }
00072 abstract void removeChild(Node child);
00073 public void replaceBy(Node node)
00074 {
00075 if(parent != null)
00076 {
00077 parent.replaceChild(this, node);
00078 }
00079 }
00080 abstract void replaceChild(Node oldChild, Node newChild);
00081 protected String toString(List list)
00082 {
00083 StringBuffer s = new StringBuffer();
00084
00085 for(Iterator i = list.iterator(); i.hasNext();)
00086 {
00087 s.append(i.next());
00088 }
00089
00090 return s.toString();
00091 }
00092 protected String toString(Node node)
00093 {
00094 if(node != null)
00095 {
00096 return node.toString();
00097 }
00098
00099 return "";
00100 }
00101 }