package org.scribble.ast;
import org.antlr.runtime.tree.CommonTree;
import org.scribble.ast.name.qualified.DataTypeNode;
import org.scribble.ast.name.qualified.MemberNameNode;
import org.scribble.del.ScribDel;
import org.scribble.sesstype.kind.DataTypeKind;
import org.scribble.sesstype.name.DataType;
import org.scribble.sesstype.name.ModuleName;
public class DataTypeDecl extends NonProtocolDecl<DataTypeKind>
{
public DataTypeDecl(CommonTree source, String schema, String extName, String extSource, DataTypeNode name)
{
super(source, schema, extName, extSource, name);
}
@Override
protected ScribNodeBase copy()
{
return new DataTypeDecl(this.source, this.schema, this.extName, this.extSource, getNameNode());
}
@Override
public DataTypeDecl clone()
{
DataTypeNode name = (DataTypeNode) this.name.clone();
return AstFactoryImpl.FACTORY.DataTypeDecl(this.source, this.schema, this.extName, this.extSource, name);
}
@Override
public DataTypeDecl reconstruct(String schema, String extName, String extSource, MemberNameNode<DataTypeKind> name)
{
ScribDel del = del();
DataTypeDecl dtd = new DataTypeDecl(this.source, schema, extName, extSource, (DataTypeNode) name);
dtd = (DataTypeDecl) dtd.del(del);
return dtd;
}
@Override
public boolean isDataTypeDecl()
{
return true;
}
@Override
public DataTypeNode getNameNode()
{
return (DataTypeNode) super.getNameNode();
}
@Override
public DataType getDeclName()
{
return (DataType) super.getDeclName();
}
@Override
public DataType getFullMemberName(Module mod)
{
ModuleName fullmodname = mod.getFullModuleName();
return new DataType(fullmodname, getDeclName());
}
@Override
public String toString()
{
return Constants.TYPE_KW + " <" + this.schema + "> " + this.extName
+ " " + Constants.FROM_KW + " " + this.extSource + " "
+ Constants.AS_KW + " " + this.name + ";";
}
}