package eis.iilang; import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; /** * A list of parameters. * * @author tristanbehrens * */ public class ParameterList extends Parameter implements Iterable<Parameter> { /** * */ private static final long serialVersionUID = 5330751271570276475L; /** The list of parameters. */ private LinkedList<Parameter> list = null; /** * Constructs an empty list of parameters. */ public ParameterList() { this.list = new LinkedList<Parameter>(); } /** * Contructs a list of parameters from an array. * * @param parameters */ public ParameterList(Parameter... parameters) { this(); for (Parameter param : parameters) list.addLast(param); } /** * Constructs a list of parameters from a collection. * * @param parameters */ public ParameterList(Collection<Parameter> parameters) { this(); for (Parameter param : parameters) list.addLast(param); } /** * Returns an iterator. */ public Iterator<Parameter> iterator() { return list.iterator(); } /** * Returns the index of an element. */ public int indexOf(Parameter p) { return list.indexOf(p); } /** * Returns the size of the list. * * @return */ public int size() { return list.size(); } /** * get the ith parameter of the list. * * @param i * element number, starting at 0. * @return ith parameter in the list. */ public Parameter get(int i) { return list.get(i); } /** * Checks for emptyness. * * @return true if empty, false otherwise */ public boolean isEmpty() { return list.isEmpty(); } @Override protected String toXML(int depth) { String xml = ""; xml += indent(depth) + "<parameterList>" + "\n"; for (Parameter p : list) { xml += p.toXML(depth + 1); } xml += indent(depth) + "</parameterList>" + "\n"; return xml; } public void add(Parameter parameter) { list.add(parameter); } @Override public String toProlog() { String ret = ""; ret += "["; if (list.isEmpty() == false) { ret += list.getFirst().toProlog(); for (int a = 1; a < list.size(); a++) ret += "," + list.get(a).toProlog(); } ret += "]"; return ret; } @Override public Object clone() { ParameterList ret = new ParameterList(); for (Parameter p : list) { ret.add((Parameter) p.clone()); } return ret; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((list == null) ? 0 : list.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (!(obj instanceof ParameterList)) return false; ParameterList other = (ParameterList) obj; if (list == null) { if (other.list != null) return false; } else if (!list.equals(other.list)) return false; return true; } @Override public Object accept(IILObjectVisitor visitor, Object object) { return visitor.visit(this, object); } @Override public void accept(IILVisitor visitor) { visitor.visit(this); } }