/* 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 AMultiNewExpr extends PNewExpr { private TNewmultiarray _newmultiarray_; private TLParen _lParen_; private PBaseType _baseType_; private TRParen _rParen_; private final LinkedList _arrayDescriptor_ = new TypedLinkedList(new ArrayDescriptor_Cast()); public AMultiNewExpr() { } public AMultiNewExpr( TNewmultiarray _newmultiarray_, TLParen _lParen_, PBaseType _baseType_, TRParen _rParen_, List _arrayDescriptor_) { setNewmultiarray(_newmultiarray_); setLParen(_lParen_); setBaseType(_baseType_); setRParen(_rParen_); { this._arrayDescriptor_.clear(); this._arrayDescriptor_.addAll(_arrayDescriptor_); } } public AMultiNewExpr( TNewmultiarray _newmultiarray_, TLParen _lParen_, PBaseType _baseType_, TRParen _rParen_, XPArrayDescriptor _arrayDescriptor_) { setNewmultiarray(_newmultiarray_); setLParen(_lParen_); setBaseType(_baseType_); setRParen(_rParen_); if(_arrayDescriptor_ != null) { while(_arrayDescriptor_ instanceof X1PArrayDescriptor) { this._arrayDescriptor_.addFirst(((X1PArrayDescriptor) _arrayDescriptor_).getPArrayDescriptor()); _arrayDescriptor_ = ((X1PArrayDescriptor) _arrayDescriptor_).getXPArrayDescriptor(); } this._arrayDescriptor_.addFirst(((X2PArrayDescriptor) _arrayDescriptor_).getPArrayDescriptor()); } } public Object clone() { return new AMultiNewExpr( (TNewmultiarray) cloneNode(_newmultiarray_), (TLParen) cloneNode(_lParen_), (PBaseType) cloneNode(_baseType_), (TRParen) cloneNode(_rParen_), cloneList(_arrayDescriptor_)); } public void apply(Switch sw) { ((Analysis) sw).caseAMultiNewExpr(this); } public TNewmultiarray getNewmultiarray() { return _newmultiarray_; } public void setNewmultiarray(TNewmultiarray node) { if(_newmultiarray_ != null) { _newmultiarray_.parent(null); } if(node != null) { if(node.parent() != null) { node.parent().removeChild(node); } node.parent(this); } _newmultiarray_ = node; } public TLParen getLParen() { return _lParen_; } public void setLParen(TLParen node) { if(_lParen_ != null) { _lParen_.parent(null); } if(node != null) { if(node.parent() != null) { node.parent().removeChild(node); } node.parent(this); } _lParen_ = node; } public PBaseType getBaseType() { return _baseType_; } public void setBaseType(PBaseType node) { if(_baseType_ != null) { _baseType_.parent(null); } if(node != null) { if(node.parent() != null) { node.parent().removeChild(node); } node.parent(this); } _baseType_ = node; } public TRParen getRParen() { return _rParen_; } public void setRParen(TRParen node) { if(_rParen_ != null) { _rParen_.parent(null); } if(node != null) { if(node.parent() != null) { node.parent().removeChild(node); } node.parent(this); } _rParen_ = node; } public LinkedList getArrayDescriptor() { return _arrayDescriptor_; } public void setArrayDescriptor(List list) { _arrayDescriptor_.clear(); _arrayDescriptor_.addAll(list); } public String toString() { return "" + toString(_newmultiarray_) + toString(_lParen_) + toString(_baseType_) + toString(_rParen_) + toString(_arrayDescriptor_); } void removeChild(Node child) { if(_newmultiarray_ == child) { _newmultiarray_ = null; return; } if(_lParen_ == child) { _lParen_ = null; return; } if(_baseType_ == child) { _baseType_ = null; return; } if(_rParen_ == child) { _rParen_ = null; return; } if(_arrayDescriptor_.remove(child)) { return; } } void replaceChild(Node oldChild, Node newChild) { if(_newmultiarray_ == oldChild) { setNewmultiarray((TNewmultiarray) newChild); return; } if(_lParen_ == oldChild) { setLParen((TLParen) newChild); return; } if(_baseType_ == oldChild) { setBaseType((PBaseType) newChild); return; } if(_rParen_ == oldChild) { setRParen((TRParen) newChild); return; } for(ListIterator i = _arrayDescriptor_.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 ArrayDescriptor_Cast implements Cast { public Object cast(Object o) { PArrayDescriptor node = (PArrayDescriptor) o; if((node.parent() != null) && (node.parent() != AMultiNewExpr.this)) { node.parent().removeChild(node); } if((node.parent() == null) || (node.parent() != AMultiNewExpr.this)) { node.parent(AMultiNewExpr.this); } return node; } } }