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 final class AArrayTypespec extends PTypespec
00040 {
00041 private TArray _array_;
00042 private TLbrack _lbrack_;
00043 private PConst _const_;
00044 private TRbrack _rbrack_;
00045 private TOf _of_;
00046 private PType _type_;
00047
00048 public AArrayTypespec()
00049 {
00050 }
00051 public AArrayTypespec(
00052 TArray _array_,
00053 TLbrack _lbrack_,
00054 PConst _const_,
00055 TRbrack _rbrack_,
00056 TOf _of_,
00057 PType _type_)
00058 {
00059 setArray(_array_);
00060
00061 setLbrack(_lbrack_);
00062
00063 setConst(_const_);
00064
00065 setRbrack(_rbrack_);
00066
00067 setOf(_of_);
00068
00069 setType(_type_);
00070
00071 }
00072 public void apply(Switch sw)
00073 {
00074 ((Analysis) sw).caseAArrayTypespec(this);
00075 }
00076 public Object clone()
00077 {
00078 return new AArrayTypespec(
00079 (TArray) cloneNode(_array_),
00080 (TLbrack) cloneNode(_lbrack_),
00081 (PConst) cloneNode(_const_),
00082 (TRbrack) cloneNode(_rbrack_),
00083 (TOf) cloneNode(_of_),
00084 (PType) cloneNode(_type_));
00085 }
00086 public TArray getArray()
00087 {
00088 return _array_;
00089 }
00090 public PConst getConst()
00091 {
00092 return _const_;
00093 }
00094 public TLbrack getLbrack()
00095 {
00096 return _lbrack_;
00097 }
00098 public TOf getOf()
00099 {
00100 return _of_;
00101 }
00102 public TRbrack getRbrack()
00103 {
00104 return _rbrack_;
00105 }
00106 public PType getType()
00107 {
00108 return _type_;
00109 }
00110 void removeChild(Node child)
00111 {
00112 if(_array_ == child)
00113 {
00114 _array_ = null;
00115 return;
00116 }
00117
00118 if(_lbrack_ == child)
00119 {
00120 _lbrack_ = null;
00121 return;
00122 }
00123
00124 if(_const_ == child)
00125 {
00126 _const_ = null;
00127 return;
00128 }
00129
00130 if(_rbrack_ == child)
00131 {
00132 _rbrack_ = null;
00133 return;
00134 }
00135
00136 if(_of_ == child)
00137 {
00138 _of_ = null;
00139 return;
00140 }
00141
00142 if(_type_ == child)
00143 {
00144 _type_ = null;
00145 return;
00146 }
00147
00148 }
00149 void replaceChild(Node oldChild, Node newChild)
00150 {
00151 if(_array_ == oldChild)
00152 {
00153 setArray((TArray) newChild);
00154 return;
00155 }
00156
00157 if(_lbrack_ == oldChild)
00158 {
00159 setLbrack((TLbrack) newChild);
00160 return;
00161 }
00162
00163 if(_const_ == oldChild)
00164 {
00165 setConst((PConst) newChild);
00166 return;
00167 }
00168
00169 if(_rbrack_ == oldChild)
00170 {
00171 setRbrack((TRbrack) newChild);
00172 return;
00173 }
00174
00175 if(_of_ == oldChild)
00176 {
00177 setOf((TOf) newChild);
00178 return;
00179 }
00180
00181 if(_type_ == oldChild)
00182 {
00183 setType((PType) newChild);
00184 return;
00185 }
00186
00187 }
00188 public void setArray(TArray node)
00189 {
00190 if(_array_ != null)
00191 {
00192 _array_.parent(null);
00193 }
00194
00195 if(node != null)
00196 {
00197 if(node.parent() != null)
00198 {
00199 node.parent().removeChild(node);
00200 }
00201
00202 node.parent(this);
00203 }
00204
00205 _array_ = node;
00206 }
00207 public void setConst(PConst node)
00208 {
00209 if(_const_ != null)
00210 {
00211 _const_.parent(null);
00212 }
00213
00214 if(node != null)
00215 {
00216 if(node.parent() != null)
00217 {
00218 node.parent().removeChild(node);
00219 }
00220
00221 node.parent(this);
00222 }
00223
00224 _const_ = node;
00225 }
00226 public void setLbrack(TLbrack node)
00227 {
00228 if(_lbrack_ != null)
00229 {
00230 _lbrack_.parent(null);
00231 }
00232
00233 if(node != null)
00234 {
00235 if(node.parent() != null)
00236 {
00237 node.parent().removeChild(node);
00238 }
00239
00240 node.parent(this);
00241 }
00242
00243 _lbrack_ = node;
00244 }
00245 public void setOf(TOf node)
00246 {
00247 if(_of_ != null)
00248 {
00249 _of_.parent(null);
00250 }
00251
00252 if(node != null)
00253 {
00254 if(node.parent() != null)
00255 {
00256 node.parent().removeChild(node);
00257 }
00258
00259 node.parent(this);
00260 }
00261
00262 _of_ = node;
00263 }
00264 public void setRbrack(TRbrack node)
00265 {
00266 if(_rbrack_ != null)
00267 {
00268 _rbrack_.parent(null);
00269 }
00270
00271 if(node != null)
00272 {
00273 if(node.parent() != null)
00274 {
00275 node.parent().removeChild(node);
00276 }
00277
00278 node.parent(this);
00279 }
00280
00281 _rbrack_ = node;
00282 }
00283 public void setType(PType node)
00284 {
00285 if(_type_ != null)
00286 {
00287 _type_.parent(null);
00288 }
00289
00290 if(node != null)
00291 {
00292 if(node.parent() != null)
00293 {
00294 node.parent().removeChild(node);
00295 }
00296
00297 node.parent(this);
00298 }
00299
00300 _type_ = node;
00301 }
00302 public String toString()
00303 {
00304 return ""
00305 + toString(_array_)
00306 + toString(_lbrack_)
00307 + toString(_const_)
00308 + toString(_rbrack_)
00309 + toString(_of_)
00310 + toString(_type_);
00311 }
00312 }