00001 package edu.ksu.cis.bandera.jjjc.unicodepreprocessor.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 import ca.mcgill.sable.util.*;
00036 import edu.ksu.cis.bandera.jjjc.unicodepreprocessor.analysis.*;
00037
00038 public abstract class Node implements Switchable, Cloneable
00039 {
00040 private Node parent;
00041
00042 public abstract Object clone();
00043 protected List cloneList(List list)
00044 {
00045 List clone = new LinkedList();
00046
00047 for(Iterator i = list.iterator(); i.hasNext();)
00048 {
00049 clone.add(((Node) i.next()).clone());
00050 }
00051
00052 return clone;
00053 }
00054 protected Node cloneNode(Node node)
00055 {
00056 if(node != null)
00057 {
00058 return (Node) node.clone();
00059 }
00060
00061 return null;
00062 }
00063 public Node parent()
00064 {
00065 return parent;
00066 }
00067 void parent(Node parent)
00068 {
00069 this.parent = parent;
00070 }
00071 abstract void removeChild(Node child);
00072 public void replaceBy(Node node)
00073 {
00074 if(parent != null)
00075 {
00076 parent.replaceChild(this, node);
00077 }
00078 }
00079 abstract void replaceChild(Node oldChild, Node newChild);
00080 protected String toString(List list)
00081 {
00082 StringBuffer s = new StringBuffer();
00083
00084 for(Iterator i = list.iterator(); i.hasNext();)
00085 {
00086 s.append(i.next());
00087 }
00088
00089 return s.toString();
00090 }
00091 protected String toString(Node node)
00092 {
00093 if(node != null)
00094 {
00095 return node.toString();
00096 }
00097
00098 return "";
00099 }
00100 }