/* 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 AQuotedNonvoidType extends PNonvoidType
{
private TQuotedName _quotedName_;
private final LinkedList _arrayBrackets_ = new TypedLinkedList(new ArrayBrackets_Cast());
public AQuotedNonvoidType()
{
}
public AQuotedNonvoidType(
TQuotedName _quotedName_,
List _arrayBrackets_)
{
setQuotedName(_quotedName_);
{
this._arrayBrackets_.clear();
this._arrayBrackets_.addAll(_arrayBrackets_);
}
}
public AQuotedNonvoidType(
TQuotedName _quotedName_,
XPArrayBrackets _arrayBrackets_)
{
setQuotedName(_quotedName_);
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 AQuotedNonvoidType(
(TQuotedName) cloneNode(_quotedName_),
cloneList(_arrayBrackets_));
}
public void apply(Switch sw)
{
((Analysis) sw).caseAQuotedNonvoidType(this);
}
public TQuotedName getQuotedName()
{
return _quotedName_;
}
public void setQuotedName(TQuotedName node)
{
if(_quotedName_ != null)
{
_quotedName_.parent(null);
}
if(node != null)
{
if(node.parent() != null)
{
node.parent().removeChild(node);
}
node.parent(this);
}
_quotedName_ = node;
}
public LinkedList getArrayBrackets()
{
return _arrayBrackets_;
}
public void setArrayBrackets(List list)
{
_arrayBrackets_.clear();
_arrayBrackets_.addAll(list);
}
public String toString()
{
return ""
+ toString(_quotedName_)
+ toString(_arrayBrackets_);
}
void removeChild(Node child)
{
if(_quotedName_ == child)
{
_quotedName_ = null;
return;
}
if(_arrayBrackets_.remove(child))
{
return;
}
}
void replaceChild(Node oldChild, Node newChild)
{
if(_quotedName_ == oldChild)
{
setQuotedName((TQuotedName) 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() != AQuotedNonvoidType.this))
{
node.parent().removeChild(node);
}
if((node.parent() == null) ||
(node.parent() != AQuotedNonvoidType.this))
{
node.parent(AQuotedNonvoidType.this);
}
return node;
}
}
}