00001 package edu.ksu.cis.bandera.abstraction.options.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
00037
00038 import java.util.*;
00039 import edu.ksu.cis.bandera.abstraction.options.analysis.*;
00040
00041 public final class AParamsParams extends PParams
00042 {
00043 private PParams _params_;
00044 private TComma _comma_;
00045 private PName _name_;
00046 private final LinkedList _dim_ = new TypedLinkedList(new Dim_Cast());
00047
00048 private class Dim_Cast implements Cast
00049 {
00050 public Object cast(Object o)
00051 {
00052 TDim node = (TDim) o;
00053
00054 if((node.parent() != null) &&
00055 (node.parent() != AParamsParams.this))
00056 {
00057 node.parent().removeChild(node);
00058 }
00059
00060 if((node.parent() == null) ||
00061 (node.parent() != AParamsParams.this))
00062 {
00063 node.parent(AParamsParams.this);
00064 }
00065
00066 return node;
00067 }
00068 }
00069 public AParamsParams()
00070 {
00071 }
00072 public AParamsParams(
00073 PParams _params_,
00074 TComma _comma_,
00075 PName _name_,
00076 XTDim _dim_)
00077 {
00078 setParams(_params_);
00079
00080 setComma(_comma_);
00081
00082 setName(_name_);
00083
00084 if(_dim_ != null)
00085 {
00086 while(_dim_ instanceof X1TDim)
00087 {
00088 this._dim_.addFirst(((X1TDim) _dim_).getTDim());
00089 _dim_ = ((X1TDim) _dim_).getXTDim();
00090 }
00091 this._dim_.addFirst(((X2TDim) _dim_).getTDim());
00092 }
00093
00094 }
00095 public AParamsParams(
00096 PParams _params_,
00097 TComma _comma_,
00098 PName _name_,
00099 List _dim_)
00100 {
00101 setParams(_params_);
00102
00103 setComma(_comma_);
00104
00105 setName(_name_);
00106
00107 {
00108 Object temp[] = _dim_.toArray();
00109 for(int i = 0; i < temp.length; i++)
00110 {
00111 this._dim_.add(temp[i]);
00112 }
00113 }
00114
00115 }
00116 public void apply(Switch sw)
00117 {
00118 ((Analysis) sw).caseAParamsParams(this);
00119 }
00120 public Object clone()
00121 {
00122 return new AParamsParams(
00123 (PParams) cloneNode(_params_),
00124 (TComma) cloneNode(_comma_),
00125 (PName) cloneNode(_name_),
00126 cloneList(_dim_));
00127 }
00128 public TComma getComma()
00129 {
00130 return _comma_;
00131 }
00132 public LinkedList getDim()
00133 {
00134 return _dim_;
00135 }
00136 public PName getName()
00137 {
00138 return _name_;
00139 }
00140 public PParams getParams()
00141 {
00142 return _params_;
00143 }
00144 void removeChild(Node child)
00145 {
00146 if(_params_ == child)
00147 {
00148 _params_ = null;
00149 return;
00150 }
00151
00152 if(_comma_ == child)
00153 {
00154 _comma_ = null;
00155 return;
00156 }
00157
00158 if(_name_ == child)
00159 {
00160 _name_ = null;
00161 return;
00162 }
00163
00164 if(_dim_.remove(child))
00165 {
00166 return;
00167 }
00168
00169 }
00170 void replaceChild(Node oldChild, Node newChild)
00171 {
00172 if(_params_ == oldChild)
00173 {
00174 setParams((PParams) newChild);
00175 return;
00176 }
00177
00178 if(_comma_ == oldChild)
00179 {
00180 setComma((TComma) newChild);
00181 return;
00182 }
00183
00184 if(_name_ == oldChild)
00185 {
00186 setName((PName) newChild);
00187 return;
00188 }
00189
00190 for(ListIterator i = _dim_.listIterator(); i.hasNext();)
00191 {
00192 if(i.next() == oldChild)
00193 {
00194 if(newChild != null)
00195 {
00196 i.set(newChild);
00197 oldChild.parent(null);
00198 return;
00199 }
00200
00201 i.remove();
00202 oldChild.parent(null);
00203 return;
00204 }
00205 }
00206
00207 }
00208 public void setComma(TComma node)
00209 {
00210 if(_comma_ != null)
00211 {
00212 _comma_.parent(null);
00213 }
00214
00215 if(node != null)
00216 {
00217 if(node.parent() != null)
00218 {
00219 node.parent().removeChild(node);
00220 }
00221
00222 node.parent(this);
00223 }
00224
00225 _comma_ = node;
00226 }
00227 public void setDim(List list)
00228 {
00229 Object temp[] = list.toArray();
00230 for(int i = 0; i < temp.length; i++)
00231 {
00232 _dim_.add(temp[i]);
00233 }
00234 }
00235 public void setName(PName node)
00236 {
00237 if(_name_ != null)
00238 {
00239 _name_.parent(null);
00240 }
00241
00242 if(node != null)
00243 {
00244 if(node.parent() != null)
00245 {
00246 node.parent().removeChild(node);
00247 }
00248
00249 node.parent(this);
00250 }
00251
00252 _name_ = node;
00253 }
00254 public void setParams(PParams node)
00255 {
00256 if(_params_ != null)
00257 {
00258 _params_.parent(null);
00259 }
00260
00261 if(node != null)
00262 {
00263 if(node.parent() != null)
00264 {
00265 node.parent().removeChild(node);
00266 }
00267
00268 node.parent(this);
00269 }
00270
00271 _params_ = node;
00272 }
00273 public String toString()
00274 {
00275 return ""
00276 + toString(_params_)
00277 + toString(_comma_)
00278 + toString(_name_)
00279 + toString(_dim_);
00280 }
00281 }