package de.lmu.ifi.dbs.elki.database.ids;
/*
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
Copyright (C) 2012
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
import java.util.Iterator;
import java.util.NoSuchElementException;
import de.lmu.ifi.dbs.elki.utilities.iterator.EmptyIterator;
/**
* Empty DBID collection.
*
* @author Erich Schubert
*/
public class EmptyDBIDs implements ArrayStaticDBIDs, SetDBIDs {
/**
* Empty DBID iterator
*/
public static final EmptyDBIDIterator EMPTY_ITERATOR = new EmptyDBIDIterator();
/**
* Constructor.
*/
protected EmptyDBIDs() {
super();
}
@Override
public boolean contains(DBID o) {
return false;
}
@Override
public Iterator iterator() {
return EmptyIterator.STATIC();
}
@Override
public int size() {
return 0;
}
@Override
public boolean isEmpty() {
return true;
}
@Override
public DBID get(int i) {
throw new ArrayIndexOutOfBoundsException();
}
@Override
public DBIDIter iter() {
return EMPTY_ITERATOR;
}
@Override
public int binarySearch(DBID key) {
return -1; // Not found
}
/**
* Iterator for empty DBIDs
*
* @author Erich Schubert
*/
protected static class EmptyDBIDIterator implements DBIDIter {
@Override
public boolean valid() {
return false;
}
@Override
public void advance() {
assert (false) : "Misplaced call to advance()";
}
@Override
public int getIntegerID() {
throw new NoSuchElementException();
}
@Override
public DBID getDBID() {
throw new NoSuchElementException();
}
}
}