package org.scribble.ast; import java.util.List; import java.util.stream.Collectors; import org.antlr.runtime.tree.CommonTree; import org.scribble.del.ScribDel; import org.scribble.sesstype.name.Role; import org.scribble.util.ScribUtil; public class RoleArgList extends DoArgList<RoleArg> { public RoleArgList(CommonTree source, List<RoleArg> roles) { super(source, roles); } @Override protected RoleArgList copy() { return new RoleArgList(this.source, getDoArgs()); } @Override public RoleArgList clone() { List<RoleArg> roles = ScribUtil.cloneList(getDoArgs()); return AstFactoryImpl.FACTORY.RoleArgList(this.source, roles); } @Override public RoleArgList reconstruct(List<RoleArg> roles) { ScribDel del = del(); RoleArgList rl = new RoleArgList(this.source, roles); rl = (RoleArgList) rl.del(del); return rl; } // Move to delegate? @Override public RoleArgList project(Role self) { List<RoleArg> instans = getDoArgs().stream().map((ri) -> ri.project(self)).collect(Collectors.toList()); return AstFactoryImpl.FACTORY.RoleArgList(this.source, instans); } // The role arguments public List<Role> getRoles() { return getDoArgs().stream().map((ri) -> ri.val.toName()).collect(Collectors.toList()); } @Override public String toString() { return "(" + super.toString() + ")"; } }