package eis.iilang; import java.util.LinkedList; /** * A percept. * A percept consists of a name and some parameters. * * @author tristanbehrens * */ public class Percept extends DataContainer { /** * */ private static final long serialVersionUID = -5929676291607949546L; /** * Constructs a percept from a name. * * @param name */ public Percept(String name) { super(name); } /** * Contructs a percept from a name and an array of parameters. * * @param name the name. * @param parameters the parameters. */ public Percept(String name, Parameter...parameters) { super(name, parameters); } /** * Contructs a percept from a name and an array of parameters. * * @param name the name. * @param parameters the parameters. */ public Percept(String name, LinkedList<Parameter> parameters) { super(name, parameters); } @Override protected String toXML(int depth) { String xml = ""; xml += indent(depth) + "<percept name=\"" + name + "\">" + "\n"; for( Parameter p : params ) { xml += indent(depth+1) + "<perceptParameter>" + "\n"; xml += p.toXML(depth+2); xml += indent(depth+1) + "</perceptParameter>" + "\n"; } xml += indent(depth) + "</percept>" + "\n"; return xml; } @Override public String toProlog() { String ret = ""; ret+=name; if( params.isEmpty() == false) { ret += "("; ret += params.getFirst().toProlog(); for( int a = 1 ; a < params.size(); a++ ) { Parameter p = params.get(a); ret += "," + p.toProlog(); } ret += ")"; } return ret; } /* public String toProlog() { String ret = "percept"; ret+="("; ret+=name; for( Parameter p : params ) ret += "," + p.toProlog(); ret+=")"; return ret; }*/ @Override public Object clone() { Percept ret = new Percept(this.name, this.getClonedParameters()); ret.source = this.source; return ret; } @Override public boolean equals(Object obj) { if ( obj == null ) return false; if ( obj == this ) return true; if( !(obj instanceof Percept) ) return false; return super.equals(obj); } @Override public Object accept(IILObjectVisitor visitor, Object object) { return visitor.visit(this,object); } @Override public void accept(IILVisitor visitor) { visitor.visit(this); } }