package org.basex.query.item; import static org.basex.query.QueryText.*; import java.io.IOException; import org.basex.io.serial.Serializer; import org.basex.query.QueryContext; import org.basex.query.iter.ValueIter; import org.basex.util.InputInfo; import org.basex.util.Token; import org.basex.util.Util; /** * Empty sequence. * * @author BaseX Team 2005-12, BSD License * @author Christian Gruen */ public final class Empty extends Value { /** Single instance. */ public static final Empty SEQ = new Empty(); /** Empty iterator. */ public static final ValueIter ITER = new ValueIter() { @Override public Item next() { return null; } @Override public Item get(final long i) { return null; } @Override public Value value() { return SEQ; } @Override public long size() { return 0; } @Override public boolean reset() { return true; } }; /** * Private constructor. */ private Empty() { super(AtomType.EMP); } @Override public boolean isEmpty() { return true; } @Override public boolean isVacuous() { return true; } @Override public long size() { return 0; } @Override public Object toJava() { return new Object[0]; } @Override public ValueIter iter() { return ITER; } @Override public Item item(final QueryContext ctx, final InputInfo ii) { return null; } @Override public Item ebv(final QueryContext ctx, final InputInfo ii) { return Bln.FALSE; } @Override public Item test(final QueryContext ctx, final InputInfo ii) { return null; } @Override public SeqType type() { return SeqType.EMP; } @Override public boolean iterable() { return true; } @Override public void plan(final Serializer ser) throws IOException { ser.emptyElement(AtomType.SEQ.string(), SIZE, Token.ZERO); } @Override public int hash(final InputInfo ii) { return 0; } @Override public String toString() { return "()"; } @Override public int writeTo(final Item[] arr, final int start) { return 0; } @Override public Item itemAt(final long pos) { throw Util.notexpected(); } @Override public boolean homogenous() { return true; } }