package org.scribble.ast;
import org.antlr.runtime.tree.CommonTree;
import org.scribble.ast.name.simple.RoleNode;
import org.scribble.del.ScribDel;
import org.scribble.sesstype.kind.RoleKind;
import org.scribble.sesstype.name.Role;
public class RoleArg extends DoArg<RoleNode>
{
public RoleArg(CommonTree source, RoleNode arg)
{
super(source, arg);
}
@Override
protected ScribNodeBase copy()
{
return new RoleArg(this.source, getVal());
}
@Override
public RoleArg clone()
{
RoleNode role = getVal().clone();
return AstFactoryImpl.FACTORY.RoleArg(this.source, role);
}
@Override
public RoleArg reconstruct(RoleNode arg)
{
ScribDel del = del();
RoleArg ri = new RoleArg(this.source, arg);
ri = (RoleArg) ri.del(del);
return ri;
}
@Override
public RoleNode getVal()
{
return (RoleNode) super.getVal();
}
// FIXME: move to delegate?
@Override
public RoleArg project(Role self)
{
RoleNode rn = (RoleNode) AstFactoryImpl.FACTORY.SimpleNameNode(this.val.source, RoleKind.KIND, this.val.toName().toString());
return AstFactoryImpl.FACTORY.RoleArg(this.source, rn);
}
}