/* This file was generated by SableCC (http://www.sablecc.org/). */ package soot.jimple.parser.node; import java.util.*; import soot.jimple.parser.analysis.*; public final class ABaseNonvoidType extends PNonvoidType { private PBaseTypeNoName _baseTypeNoName_; private final LinkedList _arrayBrackets_ = new TypedLinkedList(new ArrayBrackets_Cast()); public ABaseNonvoidType() { } public ABaseNonvoidType( PBaseTypeNoName _baseTypeNoName_, List _arrayBrackets_) { setBaseTypeNoName(_baseTypeNoName_); { this._arrayBrackets_.clear(); this._arrayBrackets_.addAll(_arrayBrackets_); } } public ABaseNonvoidType( PBaseTypeNoName _baseTypeNoName_, XPArrayBrackets _arrayBrackets_) { setBaseTypeNoName(_baseTypeNoName_); if(_arrayBrackets_ != null) { while(_arrayBrackets_ instanceof X1PArrayBrackets) { this._arrayBrackets_.addFirst(((X1PArrayBrackets) _arrayBrackets_).getPArrayBrackets()); _arrayBrackets_ = ((X1PArrayBrackets) _arrayBrackets_).getXPArrayBrackets(); } this._arrayBrackets_.addFirst(((X2PArrayBrackets) _arrayBrackets_).getPArrayBrackets()); } } public Object clone() { return new ABaseNonvoidType( (PBaseTypeNoName) cloneNode(_baseTypeNoName_), cloneList(_arrayBrackets_)); } public void apply(Switch sw) { ((Analysis) sw).caseABaseNonvoidType(this); } public PBaseTypeNoName getBaseTypeNoName() { return _baseTypeNoName_; } public void setBaseTypeNoName(PBaseTypeNoName node) { if(_baseTypeNoName_ != null) { _baseTypeNoName_.parent(null); } if(node != null) { if(node.parent() != null) { node.parent().removeChild(node); } node.parent(this); } _baseTypeNoName_ = node; } public LinkedList getArrayBrackets() { return _arrayBrackets_; } public void setArrayBrackets(List list) { _arrayBrackets_.clear(); _arrayBrackets_.addAll(list); } public String toString() { return "" + toString(_baseTypeNoName_) + toString(_arrayBrackets_); } void removeChild(Node child) { if(_baseTypeNoName_ == child) { _baseTypeNoName_ = null; return; } if(_arrayBrackets_.remove(child)) { return; } } void replaceChild(Node oldChild, Node newChild) { if(_baseTypeNoName_ == oldChild) { setBaseTypeNoName((PBaseTypeNoName) newChild); return; } for(ListIterator i = _arrayBrackets_.listIterator(); i.hasNext();) { if(i.next() == oldChild) { if(newChild != null) { i.set(newChild); oldChild.parent(null); return; } i.remove(); oldChild.parent(null); return; } } } private class ArrayBrackets_Cast implements Cast { public Object cast(Object o) { PArrayBrackets node = (PArrayBrackets) o; if((node.parent() != null) && (node.parent() != ABaseNonvoidType.this)) { node.parent().removeChild(node); } if((node.parent() == null) || (node.parent() != ABaseNonvoidType.this)) { node.parent(ABaseNonvoidType.this); } return node; } } }