package edu.stanford.nlp.sempre.tables.lambdadcs; import java.util.*; import edu.stanford.nlp.sempre.*; /** * Unary denotation: a list of values. * * @author ppasupat */ public abstract class UnaryDenotation implements Unarylike, Collection<Value> { @Override public String toString() { return toLispTree().toString(); } @Override public String getDomainVar() { return null; } public static final UnaryDenotation EMPTY = new ExplicitUnaryDenotation(); public static final UnaryDenotation NULL = new ExplicitUnaryDenotation((Value) null); public static final UnaryDenotation ZERO = new ExplicitUnaryDenotation(new NumberValue(0)); public static final UnaryDenotation ONE = new ExplicitUnaryDenotation(new NumberValue(1)); @Override public UnaryDenotation get(Value key) { // Any assignment yields the same answer. return this; } @Override public UnaryDenotation inverseGet(Value value) { return NULL; } @Override public UnaryDenotation domain() { return NULL; } @Override public UnaryDenotation range() { return this; } public abstract UnaryDenotation merge(UnaryDenotation that, MergeFormula.Mode mode); @Override public abstract UnaryDenotation aggregate(AggregateFormula.Mode mode); @Override public UnaryDenotation filter(UnaryDenotation upperBound, UnaryDenotation domainUpperBound) { // domainUpperBound information is not used return filter(upperBound); } public abstract UnaryDenotation filter(UnaryDenotation upperBound); // ============================================================ // Collection interface // ============================================================ // Don't support mutation @Override public boolean add(Value e) { throw new UnsupportedOperationException("unsupported"); } @Override public boolean addAll(Collection<? extends Value> c) { throw new UnsupportedOperationException("unsupported"); } @Override public void clear() { throw new UnsupportedOperationException("unsupported"); } @Override public boolean remove(Object o) { throw new UnsupportedOperationException("unsupported"); } @Override public boolean removeAll(Collection<?> c) { throw new UnsupportedOperationException("unsupported"); } @Override public boolean retainAll(Collection<?> c) { throw new UnsupportedOperationException("unsupported"); } @Override public abstract boolean contains(Object o); @Override public abstract boolean containsAll(Collection<?> c); @Override public abstract Iterator<Value> iterator(); @Override public abstract Object[] toArray(); @Override public abstract <T> T[] toArray(T[] a); @Override public abstract int size(); @Override public boolean isEmpty() { return size() == 0; } }