00001 package edu.ksu.cis.bandera.jjjc.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.jjjc.analysis.*;
00038
00039 public final class AInterfaceBody extends PInterfaceBody
00040 {
00041 private TLBrace _lBrace_;
00042 private final LinkedList _interfaceMemberDeclaration_ = new TypedLinkedList(new InterfaceMemberDeclaration_Cast());
00043 private TRBrace _rBrace_;
00044
00045 private class InterfaceMemberDeclaration_Cast implements Cast
00046 {
00047 public Object cast(Object o)
00048 {
00049 PInterfaceMemberDeclaration node = (PInterfaceMemberDeclaration) o;
00050
00051 if((node.parent() != null) &&
00052 (node.parent() != AInterfaceBody.this))
00053 {
00054 node.parent().removeChild(node);
00055 }
00056
00057 if((node.parent() == null) ||
00058 (node.parent() != AInterfaceBody.this))
00059 {
00060 node.parent(AInterfaceBody.this);
00061 }
00062
00063 return node;
00064 }
00065 }
00066 public AInterfaceBody()
00067 {
00068 }
00069 public AInterfaceBody(
00070 TLBrace _lBrace_,
00071 List _interfaceMemberDeclaration_,
00072 TRBrace _rBrace_)
00073 {
00074 setLBrace(_lBrace_);
00075
00076 {
00077 Object temp[] = _interfaceMemberDeclaration_.toArray();
00078 for(int i = 0; i < temp.length; i++)
00079 {
00080 this._interfaceMemberDeclaration_.add(temp[i]);
00081 }
00082 }
00083
00084 setRBrace(_rBrace_);
00085
00086 }
00087 public AInterfaceBody(
00088 TLBrace _lBrace_,
00089 XPInterfaceMemberDeclaration _interfaceMemberDeclaration_,
00090 TRBrace _rBrace_)
00091 {
00092 setLBrace(_lBrace_);
00093
00094 if(_interfaceMemberDeclaration_ != null)
00095 {
00096 while(_interfaceMemberDeclaration_ instanceof X1PInterfaceMemberDeclaration)
00097 {
00098 this._interfaceMemberDeclaration_.addFirst(((X1PInterfaceMemberDeclaration) _interfaceMemberDeclaration_).getPInterfaceMemberDeclaration());
00099 _interfaceMemberDeclaration_ = ((X1PInterfaceMemberDeclaration) _interfaceMemberDeclaration_).getXPInterfaceMemberDeclaration();
00100 }
00101 this._interfaceMemberDeclaration_.addFirst(((X2PInterfaceMemberDeclaration) _interfaceMemberDeclaration_).getPInterfaceMemberDeclaration());
00102 }
00103
00104 setRBrace(_rBrace_);
00105
00106 }
00107 public void apply(Switch sw)
00108 {
00109 ((Analysis) sw).caseAInterfaceBody(this);
00110 }
00111 public Object clone()
00112 {
00113 return new AInterfaceBody(
00114 (TLBrace) cloneNode(_lBrace_),
00115 cloneList(_interfaceMemberDeclaration_),
00116 (TRBrace) cloneNode(_rBrace_));
00117 }
00118 public LinkedList getInterfaceMemberDeclaration()
00119 {
00120 return _interfaceMemberDeclaration_;
00121 }
00122 public TLBrace getLBrace()
00123 {
00124 return _lBrace_;
00125 }
00126 public TRBrace getRBrace()
00127 {
00128 return _rBrace_;
00129 }
00130 void removeChild(Node child)
00131 {
00132 if(_lBrace_ == child)
00133 {
00134 _lBrace_ = null;
00135 return;
00136 }
00137
00138 if(_interfaceMemberDeclaration_.remove(child))
00139 {
00140 return;
00141 }
00142
00143 if(_rBrace_ == child)
00144 {
00145 _rBrace_ = null;
00146 return;
00147 }
00148
00149 }
00150 void replaceChild(Node oldChild, Node newChild)
00151 {
00152 if(_lBrace_ == oldChild)
00153 {
00154 setLBrace((TLBrace) newChild);
00155 return;
00156 }
00157
00158 for(ListIterator i = _interfaceMemberDeclaration_.listIterator(); i.hasNext();)
00159 {
00160 if(i.next() == oldChild)
00161 {
00162 if(newChild != null)
00163 {
00164 i.set(newChild);
00165 oldChild.parent(null);
00166 return;
00167 }
00168
00169 i.remove();
00170 oldChild.parent(null);
00171 return;
00172 }
00173 }
00174
00175 if(_rBrace_ == oldChild)
00176 {
00177 setRBrace((TRBrace) newChild);
00178 return;
00179 }
00180
00181 }
00182 public void setInterfaceMemberDeclaration(List list)
00183 {
00184 Object temp[] = list.toArray();
00185 for(int i = 0; i < temp.length; i++)
00186 {
00187 _interfaceMemberDeclaration_.add(temp[i]);
00188 }
00189 }
00190 public void setLBrace(TLBrace node)
00191 {
00192 if(_lBrace_ != null)
00193 {
00194 _lBrace_.parent(null);
00195 }
00196
00197 if(node != null)
00198 {
00199 if(node.parent() != null)
00200 {
00201 node.parent().removeChild(node);
00202 }
00203
00204 node.parent(this);
00205 }
00206
00207 _lBrace_ = node;
00208 }
00209 public void setRBrace(TRBrace node)
00210 {
00211 if(_rBrace_ != null)
00212 {
00213 _rBrace_.parent(null);
00214 }
00215
00216 if(node != null)
00217 {
00218 if(node.parent() != null)
00219 {
00220 node.parent().removeChild(node);
00221 }
00222
00223 node.parent(this);
00224 }
00225
00226 _rBrace_ = node;
00227 }
00228 public String toString()
00229 {
00230 return ""
00231 + toString(_lBrace_)
00232 + toString(_interfaceMemberDeclaration_)
00233 + toString(_rBrace_);
00234 }
00235 }