/* 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 AFileBody extends PFileBody
{
private TLBrace _lBrace_;
private final LinkedList _member_ = new TypedLinkedList(new Member_Cast());
private TRBrace _rBrace_;
public AFileBody()
{
}
public AFileBody(
TLBrace _lBrace_,
List _member_,
TRBrace _rBrace_)
{
setLBrace(_lBrace_);
{
this._member_.clear();
this._member_.addAll(_member_);
}
setRBrace(_rBrace_);
}
public AFileBody(
TLBrace _lBrace_,
XPMember _member_,
TRBrace _rBrace_)
{
setLBrace(_lBrace_);
if(_member_ != null)
{
while(_member_ instanceof X1PMember)
{
this._member_.addFirst(((X1PMember) _member_).getPMember());
_member_ = ((X1PMember) _member_).getXPMember();
}
this._member_.addFirst(((X2PMember) _member_).getPMember());
}
setRBrace(_rBrace_);
}
public Object clone()
{
return new AFileBody(
(TLBrace) cloneNode(_lBrace_),
cloneList(_member_),
(TRBrace) cloneNode(_rBrace_));
}
public void apply(Switch sw)
{
((Analysis) sw).caseAFileBody(this);
}
public TLBrace getLBrace()
{
return _lBrace_;
}
public void setLBrace(TLBrace node)
{
if(_lBrace_ != null)
{
_lBrace_.parent(null);
}
if(node != null)
{
if(node.parent() != null)
{
node.parent().removeChild(node);
}
node.parent(this);
}
_lBrace_ = node;
}
public LinkedList getMember()
{
return _member_;
}
public void setMember(List list)
{
_member_.clear();
_member_.addAll(list);
}
public TRBrace getRBrace()
{
return _rBrace_;
}
public void setRBrace(TRBrace node)
{
if(_rBrace_ != null)
{
_rBrace_.parent(null);
}
if(node != null)
{
if(node.parent() != null)
{
node.parent().removeChild(node);
}
node.parent(this);
}
_rBrace_ = node;
}
public String toString()
{
return ""
+ toString(_lBrace_)
+ toString(_member_)
+ toString(_rBrace_);
}
void removeChild(Node child)
{
if(_lBrace_ == child)
{
_lBrace_ = null;
return;
}
if(_member_.remove(child))
{
return;
}
if(_rBrace_ == child)
{
_rBrace_ = null;
return;
}
}
void replaceChild(Node oldChild, Node newChild)
{
if(_lBrace_ == oldChild)
{
setLBrace((TLBrace) newChild);
return;
}
for(ListIterator i = _member_.listIterator(); i.hasNext();)
{
if(i.next() == oldChild)
{
if(newChild != null)
{
i.set(newChild);
oldChild.parent(null);
return;
}
i.remove();
oldChild.parent(null);
return;
}
}
if(_rBrace_ == oldChild)
{
setRBrace((TRBrace) newChild);
return;
}
}
private class Member_Cast implements Cast
{
public Object cast(Object o)
{
PMember node = (PMember) o;
if((node.parent() != null) &&
(node.parent() != AFileBody.this))
{
node.parent().removeChild(node);
}
if((node.parent() == null) ||
(node.parent() != AFileBody.this))
{
node.parent(AFileBody.this);
}
return node;
}
}
}