1 2 3 package soot.jimple.parser.node; 4 5 import java.util.*; 6 import soot.jimple.parser.analysis.*; 7 8 public final class AFileBody extends PFileBody 9 { 10 private TLBrace _lBrace_; 11 private final LinkedList _member_ = new TypedLinkedList(new Member_Cast()); 12 private TRBrace _rBrace_; 13 14 public AFileBody() 15 { 16 } 17 18 public AFileBody( 19 TLBrace _lBrace_, 20 List _member_, 21 TRBrace _rBrace_) 22 { 23 setLBrace(_lBrace_); 24 25 { 26 this._member_.clear(); 27 this._member_.addAll(_member_); 28 } 29 30 setRBrace(_rBrace_); 31 32 } 33 34 public AFileBody( 35 TLBrace _lBrace_, 36 XPMember _member_, 37 TRBrace _rBrace_) 38 { 39 setLBrace(_lBrace_); 40 41 if(_member_ != null) 42 { 43 while(_member_ instanceof X1PMember) 44 { 45 this._member_.addFirst(((X1PMember) _member_).getPMember()); 46 _member_ = ((X1PMember) _member_).getXPMember(); 47 } 48 this._member_.addFirst(((X2PMember) _member_).getPMember()); 49 } 50 51 setRBrace(_rBrace_); 52 53 } 54 public Object clone() 55 { 56 return new AFileBody( 57 (TLBrace) cloneNode(_lBrace_), 58 cloneList(_member_), 59 (TRBrace) cloneNode(_rBrace_)); 60 } 61 62 public void apply(Switch sw) 63 { 64 ((Analysis) sw).caseAFileBody(this); 65 } 66 67 public TLBrace getLBrace() 68 { 69 return _lBrace_; 70 } 71 72 public void setLBrace(TLBrace node) 73 { 74 if(_lBrace_ != null) 75 { 76 _lBrace_.parent(null); 77 } 78 79 if(node != null) 80 { 81 if(node.parent() != null) 82 { 83 node.parent().removeChild(node); 84 } 85 86 node.parent(this); 87 } 88 89 _lBrace_ = node; 90 } 91 92 public LinkedList getMember() 93 { 94 return _member_; 95 } 96 97 public void setMember(List list) 98 { 99 _member_.clear(); 100 _member_.addAll(list); 101 } 102 103 public TRBrace getRBrace() 104 { 105 return _rBrace_; 106 } 107 108 public void setRBrace(TRBrace node) 109 { 110 if(_rBrace_ != null) 111 { 112 _rBrace_.parent(null); 113 } 114 115 if(node != null) 116 { 117 if(node.parent() != null) 118 { 119 node.parent().removeChild(node); 120 } 121 122 node.parent(this); 123 } 124 125 _rBrace_ = node; 126 } 127 128 public String toString() 129 { 130 return "" 131 + toString(_lBrace_) 132 + toString(_member_) 133 + toString(_rBrace_); 134 } 135 136 void removeChild(Node child) 137 { 138 if(_lBrace_ == child) 139 { 140 _lBrace_ = null; 141 return; 142 } 143 144 if(_member_.remove(child)) 145 { 146 return; 147 } 148 149 if(_rBrace_ == child) 150 { 151 _rBrace_ = null; 152 return; 153 } 154 155 } 156 157 void replaceChild(Node oldChild, Node newChild) 158 { 159 if(_lBrace_ == oldChild) 160 { 161 setLBrace((TLBrace) newChild); 162 return; 163 } 164 165 for(ListIterator i = _member_.listIterator(); i.hasNext();) 166 { 167 if(i.next() == oldChild) 168 { 169 if(newChild != null) 170 { 171 i.set(newChild); 172 oldChild.parent(null); 173 return; 174 } 175 176 i.remove(); 177 oldChild.parent(null); 178 return; 179 } 180 } 181 182 if(_rBrace_ == oldChild) 183 { 184 setRBrace((TRBrace) newChild); 185 return; 186 } 187 188 } 189 190 private class Member_Cast implements Cast 191 { 192 public Object cast(Object o) 193 { 194 PMember node = (PMember) o; 195 196 if((node.parent() != null) && 197 (node.parent() != AFileBody.this)) 198 { 199 node.parent().removeChild(node); 200 } 201 202 if((node.parent() == null) || 203 (node.parent() != AFileBody.this)) 204 { 205 node.parent(AFileBody.this); 206 } 207 208 return node; 209 } 210 } 211 } 212 | Popular Tags |