summaryrefslogtreecommitdiff
path: root/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids
diff options
context:
space:
mode:
Diffstat (limited to 'elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids')
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayModifiableDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayStaticDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBID.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayMIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDFactory.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDMIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDPair.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRange.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRef.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java127
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDVar.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListMIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDPair.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/EmptyDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetModifiableDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDBIDs.java31
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDoubleDBIDList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/SetDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/StaticDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/KNNSubList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableArrayDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/AbstractIntegerDBIDFactory.java4
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayModifiableIntegerDBIDs.java4
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayStaticIntegerDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListKNNHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListMIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPair.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairKNNListHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayStaticDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBID.java20
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayMIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayQuickSort.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNSubList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDMIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRange.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRef.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java3
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ReusingDBIDFactory.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/SimpleDBIDFactory.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TrivialDBIDFactory.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TroveHashSetModifiableDBIDs.java9
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerArrayDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerDBIDs.java1
65 files changed, 165 insertions, 91 deletions
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayDBIDs.java
index c48e575d..8fc27ff3 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayDBIDs.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* Interface for array based DBIDs.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.has DBIDArrayIter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayModifiableDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayModifiableDBIDs.java
index 498d090a..c879ae95 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayModifiableDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayModifiableDBIDs.java
@@ -28,6 +28,7 @@ import java.util.Comparator;
* Array-oriented implementation of a modifiable DBID collection.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.has DBIDArrayMIter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayStaticDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayStaticDBIDs.java
index 7331edce..623b102d 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayStaticDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayStaticDBIDs.java
@@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* Unmodifiable, indexed DBIDs.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public interface ArrayStaticDBIDs extends ArrayDBIDs, StaticDBIDs {
// empty.
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBID.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBID.java
index 3fb4cc93..66001a7a 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBID.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBID.java
@@ -34,6 +34,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* consistent across multiple results/databases.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.landmark
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayIter.java
index 9168e7c6..0f638fe0 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayIter.java
@@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.ArrayIter;
* Array iterators that can also go backwards and seek.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public interface DBIDArrayIter extends DBIDIter, ArrayIter {
@Override
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayMIter.java
index e4bca297..5da6b6ae 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayMIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayMIter.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* Modifiable array iterator.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public interface DBIDArrayMIter extends DBIDArrayIter, DBIDMIter {
// Nothing new, see {@link DBIDArrayIter} and {@link DBIDMIter}
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDFactory.java
index dc424b71..6ac06aab 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDFactory.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDFactory.java
@@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.io.FixedSizeByteBufferSerializer;
* instance to use.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.stereotype factory
* @apiviz.uses DBID oneway - - «create»
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDIter.java
index d2c816a2..f9e9e381 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDIter.java
@@ -54,6 +54,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.Iter;
* </ul>
*
* @author Erich Schubert
+ * @since 0.5.0
*
* @apiviz.landmark
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDMIter.java
index d52e87ed..7dc3dca6 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDMIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDMIter.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.MIter;
* Modifiable DBID iterator.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public interface DBIDMIter extends DBIDIter, MIter {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDPair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDPair.java
index 29d993ea..675f8810 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDPair.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDPair.java
@@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* using {@link de.lmu.ifi.dbs.elki.utilities.pairs.Pair}
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.composedOf de.lmu.ifi.dbs.elki.database.ids.DBID
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRange.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRange.java
index 710ec3c6..1e515893 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRange.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRange.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.datastore.DataStoreIDMap;
* Static DBID range.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public interface DBIDRange extends ArrayStaticDBIDs, DataStoreIDMap {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRef.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRef.java
index 80b69a1e..7f051e35 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRef.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRef.java
@@ -31,6 +31,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* are a good example how the DBIDRef may change.
*
* @author Erich Schubert
+ * @since 0.5.0
*
* @apiviz.landmark
*
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java
index ae85fa12..c9f2c1f1 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java
@@ -41,11 +41,12 @@ import de.lmu.ifi.dbs.elki.utilities.io.ByteBufferSerializer;
/**
* DBID Utility functions.
- *
+ *
* @author Erich Schubert
- *
+ * @since 0.4.0
+ *
* @apiviz.landmark
- *
+ *
* @apiviz.has DBIDs
* @apiviz.has DBIDRef
* @apiviz.composedOf DBIDFactory
@@ -65,7 +66,7 @@ public final class DBIDUtil {
/**
* Get the invalid special ID.
- *
+ *
* @return invalid ID value
*/
public static DBIDRef invalid() {
@@ -74,9 +75,9 @@ public final class DBIDUtil {
/**
* Import and integer as DBID.
- *
+ *
* Note: this may not be possible for some factories!
- *
+ *
* @param id Integer ID to import
* @return DBID
*/
@@ -86,9 +87,9 @@ public final class DBIDUtil {
/**
* Export a DBID as int.
- *
+ *
* Note: this may not be possible for some factories!
- *
+ *
* @param id DBID to export
* @return integer value
*/
@@ -98,7 +99,7 @@ public final class DBIDUtil {
/**
* Compare two DBIDs.
- *
+ *
* @param id1 First ID
* @param id2 Second ID
* @return Comparison result
@@ -109,7 +110,7 @@ public final class DBIDUtil {
/**
* Test two DBIDs for equality.
- *
+ *
* @param id1 First ID
* @param id2 Second ID
* @return Comparison result
@@ -120,7 +121,7 @@ public final class DBIDUtil {
/**
* Dereference a DBID reference.
- *
+ *
* @param ref DBID reference
* @return DBID
*/
@@ -133,7 +134,7 @@ public final class DBIDUtil {
/**
* Format a DBID as string.
- *
+ *
* @param id DBID
* @return String representation
*/
@@ -143,7 +144,7 @@ public final class DBIDUtil {
/**
* Format a DBID as string.
- *
+ *
* @param ids DBIDs
* @return String representation
*/
@@ -163,7 +164,7 @@ public final class DBIDUtil {
/**
* Get a serializer for DBIDs.
- *
+ *
* @return DBID serializer
*/
public static ByteBufferSerializer<DBID> getDBIDSerializer() {
@@ -172,7 +173,7 @@ public final class DBIDUtil {
/**
* Get a serializer for DBIDs with static size.
- *
+ *
* @return DBID serializer
*/
public static ByteBufferSerializer<DBID> getDBIDSerializerStatic() {
@@ -181,7 +182,7 @@ public final class DBIDUtil {
/**
* Generate a single DBID.
- *
+ *
* @return A single DBID
*/
public static DBID generateSingleDBID() {
@@ -190,7 +191,7 @@ public final class DBIDUtil {
/**
* Return a single DBID for reuse.
- *
+ *
* @param id DBID to deallocate
*/
public static void deallocateSingleDBID(DBID id) {
@@ -199,7 +200,7 @@ public final class DBIDUtil {
/**
* Generate a static DBID range.
- *
+ *
* @param size Requested size
* @return DBID range
*/
@@ -209,7 +210,7 @@ public final class DBIDUtil {
/**
* Deallocate a static DBID range.
- *
+ *
* @param range Range to deallocate
*/
public static void deallocateDBIDRange(DBIDRange range) {
@@ -218,7 +219,7 @@ public final class DBIDUtil {
/**
* Make a new DBID variable.
- *
+ *
* @param val Initial value.
* @return Variable
*/
@@ -228,7 +229,7 @@ public final class DBIDUtil {
/**
* Make a new DBID variable.
- *
+ *
* @return Variable
*/
public static DBIDVar newVar() {
@@ -237,7 +238,7 @@ public final class DBIDUtil {
/**
* Make a new (modifiable) array of DBIDs.
- *
+ *
* @return New array
*/
public static ArrayModifiableDBIDs newArray() {
@@ -246,7 +247,7 @@ public final class DBIDUtil {
/**
* Make a new (modifiable) hash set of DBIDs.
- *
+ *
* @return New hash set
*/
public static HashSetModifiableDBIDs newHashSet() {
@@ -255,7 +256,7 @@ public final class DBIDUtil {
/**
* Make a new (modifiable) array of DBIDs.
- *
+ *
* @param size Size hint
* @return New array
*/
@@ -265,7 +266,7 @@ public final class DBIDUtil {
/**
* Make a new (modifiable) hash set of DBIDs.
- *
+ *
* @param size Size hint
* @return New hash set
*/
@@ -275,7 +276,7 @@ public final class DBIDUtil {
/**
* Make a new (modifiable) array of DBIDs.
- *
+ *
* @param existing Existing DBIDs
* @return New array
*/
@@ -285,7 +286,7 @@ public final class DBIDUtil {
/**
* Make a new (modifiable) hash set of DBIDs.
- *
+ *
* @param existing Existing DBIDs
* @return New hash set
*/
@@ -295,7 +296,7 @@ public final class DBIDUtil {
/**
* Compute the set intersection of two sets.
- *
+ *
* @param first First set
* @param second Second set
* @return result.
@@ -316,7 +317,7 @@ public final class DBIDUtil {
/**
* Compute the set intersection size of two sets.
- *
+ *
* @param first First set
* @param second Second set
* @return size
@@ -345,7 +346,7 @@ public final class DBIDUtil {
/**
* Compute the set intersection size of two sets.
- *
+ *
* @param first First set
* @param second Second set
* @return size
@@ -362,7 +363,7 @@ public final class DBIDUtil {
/**
* Compute the set symmetric intersection of two sets.
- *
+ *
* @param first First set
* @param second Second set
* @param firstonly OUTPUT: elements only in first. MUST BE EMPTY
@@ -393,7 +394,7 @@ public final class DBIDUtil {
/**
* Returns the union of the two specified collection of IDs.
- *
+ *
* @param ids1 the first collection
* @param ids2 the second collection
* @return the union of ids1 and ids2 without duplicates
@@ -407,7 +408,7 @@ public final class DBIDUtil {
/**
* Returns the difference of the two specified collection of IDs.
- *
+ *
* @param ids1 the first collection
* @param ids2 the second collection
* @return the difference of ids1 minus ids2
@@ -420,7 +421,7 @@ public final class DBIDUtil {
/**
* Wrap an existing DBIDs collection to be unmodifiable.
- *
+ *
* @param existing Existing collection
* @return Unmodifiable collection
*/
@@ -442,7 +443,7 @@ public final class DBIDUtil {
/**
* Ensure that the given DBIDs are array-indexable.
- *
+ *
* @param ids IDs
* @return Array DBIDs.
*/
@@ -457,7 +458,7 @@ public final class DBIDUtil {
/**
* Ensure that the given DBIDs support fast "contains" operations.
- *
+ *
* @param ids IDs
* @return Set DBIDs.
*/
@@ -472,7 +473,7 @@ public final class DBIDUtil {
/**
* Ensure modifiable.
- *
+ *
* @param ids IDs
* @return Modifiable DBIDs.
*/
@@ -493,10 +494,10 @@ public final class DBIDUtil {
/**
* Make a DBID pair.
- *
+ *
* @param id1 first ID
* @param id2 second ID
- *
+ *
* @return DBID pair
*/
public static DBIDPair newPair(DBIDRef id1, DBIDRef id2) {
@@ -505,7 +506,7 @@ public final class DBIDUtil {
/**
* Make a DoubleDBIDPair.
- *
+ *
* @param val double value
* @param id ID
* @return new pair
@@ -516,9 +517,9 @@ public final class DBIDUtil {
/**
* Create an appropriate heap for the distance type.
- *
+ *
* This will use a double heap if appropriate.
- *
+ *
* @param k K value
* @return New heap of size k, appropriate for this distance type.
*/
@@ -528,7 +529,7 @@ public final class DBIDUtil {
/**
* Build a new heap from a given list.
- *
+ *
* @param exist Existing result
* @return New heap
*/
@@ -538,7 +539,7 @@ public final class DBIDUtil {
/**
* Produce a random shuffling of the given DBID array.
- *
+ *
* @param ids Original DBIDs
* @param rnd Random generator
*/
@@ -548,7 +549,7 @@ public final class DBIDUtil {
/**
* Produce a random shuffling of the given DBID array.
- *
+ *
* @param ids Original DBIDs
* @param random Random generator
*/
@@ -558,22 +559,24 @@ public final class DBIDUtil {
/**
* Produce a random shuffling of the given DBID array.
- *
- * Only the first {@code limit} elements will be randomized.
- *
+ *
+ * Only the first {@code limit} elements will be fully randomized, but the
+ * remaining objects will also be changed.
+ *
* @param ids Original DBIDs
* @param random Random generator
* @param limit Shuffling limit.
*/
public static void randomShuffle(ArrayModifiableDBIDs ids, Random random, final int limit) {
+ final int end = ids.size();
for(int i = 1; i < limit; i++) {
- ids.swap(i - 1, i + random.nextInt(limit - i));
+ ids.swap(i - 1, i + random.nextInt(end - i));
}
}
/**
* Produce a random sample of the given DBIDs.
- *
+ *
* @param source Original DBIDs
* @param k k Parameter
* @param seed Random generator seed
@@ -585,7 +588,7 @@ public final class DBIDUtil {
/**
* Produce a random sample of the given DBIDs.
- *
+ *
* @param source Original DBIDs
* @param k k Parameter
* @param seed Random generator seed
@@ -602,7 +605,7 @@ public final class DBIDUtil {
/**
* Produce a random sample of the given DBIDs.
- *
+ *
* @param source Original DBIDs
* @param k k Parameter
* @param rnd Random generator
@@ -614,7 +617,7 @@ public final class DBIDUtil {
/**
* Produce a random sample of the given DBIDs.
- *
+ *
* @param source Original DBIDs
* @param k k Parameter
* @param random Random generator
@@ -645,7 +648,7 @@ public final class DBIDUtil {
ArrayModifiableDBIDs sample = DBIDUtil.newArray(source);
randomShuffle(sample, random, k);
// Delete trailing elements
- for(int i = sample.size() - 1; i > k; i--) {
+ for(int i = sample.size() - 1; i >= k; i--) {
sample.remove(i);
}
return sample;
@@ -654,7 +657,7 @@ public final class DBIDUtil {
/**
* Produce a random sample of the given DBIDs.
- *
+ *
* @param ids Original ids
* @param rate Sampling rate
* @param random Random generator
@@ -666,7 +669,7 @@ public final class DBIDUtil {
/**
* Produce a random sample of the given DBIDs.
- *
+ *
* @param ids Original ids
* @param rate Sampling rate
* @param random Random generator
@@ -711,7 +714,7 @@ public final class DBIDUtil {
/**
* Randomly split IDs into {@code p} partitions of almost-equal size.
- *
+ *
* @param ids Original DBIDs
* @param p Desired number of partitions.
* @param rnd Random generator
@@ -722,7 +725,7 @@ public final class DBIDUtil {
/**
* Randomly split IDs into {@code p} partitions of almost-equal size.
- *
+ *
* @param oids Original DBIDs
* @param p Desired number of partitions.
* @param random Random generator
@@ -752,7 +755,7 @@ public final class DBIDUtil {
/**
* Get a subset of the KNN result.
- *
+ *
* @param list Existing list
* @param k k
* @return Subset
@@ -769,7 +772,7 @@ public final class DBIDUtil {
/**
* Create a modifiable list to store distance-DBID pairs.
- *
+ *
* @param size Estimated upper list size
* @return Empty list
*/
@@ -779,7 +782,7 @@ public final class DBIDUtil {
/**
* Create a modifiable list to store distance-DBID pairs.
- *
+ *
* @return Empty list
*/
public static ModifiableDoubleDBIDList newDistanceDBIDList() {
@@ -788,7 +791,7 @@ public final class DBIDUtil {
/**
* Assert that the presented ids constitute a continuous {@link DBIDRange}.
- *
+ *
* @param ids ID range.
* @return DBID range.
* @throws AbortException
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDVar.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDVar.java
index adfa9aed..80dfaf53 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDVar.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDVar.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.datastore.DBIDDataStore;
* candidate.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public interface DBIDVar extends DBIDRef, ArrayDBIDs, SetDBIDs {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDs.java
index 47ab6c2b..95a07f80 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDs.java
@@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* Interface for a collection of database references (IDs).
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.landmark
* @apiviz.composedOf DBID
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDList.java
index 4ac19f95..355f9c17 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDList.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDList.java
@@ -50,6 +50,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* </pre>
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.landmark
*
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListIter.java
index 92fe9233..6435a048 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListIter.java
@@ -31,6 +31,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* {@link de.lmu.ifi.dbs.elki.database.ids.DBIDRef}.
*
* @author Erich Schubert
+ * @since 0.3
*
* @apiviz.landmark
*
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListMIter.java
index 0e371ff8..638c32ee 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListMIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListMIter.java
@@ -26,6 +26,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* Modifiable DBIDList iterator.
*
* @author Erich Schubert
+ * @since 0.2
*/
public interface DoubleDBIDListMIter extends DoubleDBIDListIter, DBIDArrayMIter {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDPair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDPair.java
index 725861d6..1a49ad56 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDPair.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDPair.java
@@ -30,6 +30,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* object reference.
*
* @author Erich Schubert
+ * @since 0.2
*/
public interface DoubleDBIDPair extends DBIDRef, Comparable<DoubleDBIDPair> {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/EmptyDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/EmptyDBIDs.java
index 5c1c3e2d..444b632c 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/EmptyDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/EmptyDBIDs.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.logging.LoggingUtil;
* Empty DBID collection.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.composedOf EmptyDBIDIterator
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetDBIDs.java
index c7deb732..e5a3c4d3 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetDBIDs.java
@@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* Hash-organized DBIDs
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public interface HashSetDBIDs extends SetDBIDs {
// Empty marker interface
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetModifiableDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetModifiableDBIDs.java
index e5cde131..f3a43b8b 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetModifiableDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetModifiableDBIDs.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* Set-oriented implementation of a modifiable DBID collection.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public interface HashSetModifiableDBIDs extends HashSetDBIDs, ModifiableDBIDs {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNHeap.java
index f2ae4c0e..73fddbb2 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNHeap.java
@@ -31,6 +31,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* {@link de.lmu.ifi.dbs.elki.database.ids.DBIDUtil#newHeap}!
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.landmark
*
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNList.java
index 94c26a5f..f23e81e2 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNList.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNList.java
@@ -51,6 +51,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* </pre>
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.landmark
*
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDBIDs.java
index fa88c373..f59f1d92 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDBIDs.java
@@ -25,43 +25,46 @@ package de.lmu.ifi.dbs.elki.database.ids;
/**
* Interface for a generic modifiable DBID collection.
- *
+ *
* Note: we had this use the Java Collections API for a long time, however this
* prevented certain optimizations. So it now only mimics the Collections API
* <em>deliberately</em>.
- *
+ *
* @author Erich Schubert
- *
+ * @since 0.4.0
+ *
* @apiviz.has DBIDMIter
*/
public interface ModifiableDBIDs extends DBIDs {
/**
* Add DBIDs to collection.
- *
+ *
* @param ids IDs to add.
- * @return {@code true} when modified
+ * @return {@code true} if the collection changed.
*/
boolean addDBIDs(DBIDs ids);
/**
* Remove DBIDs from collection.
- *
+ *
* @param ids IDs to remove.
- * @return {@code true} when modified
+ * @return {@code true} if the collection changed.
*/
boolean removeDBIDs(DBIDs ids);
/**
* Add a single DBID to the collection.
- *
+ *
* @param id ID to add
+ * @return {@code true} if the collection changed.
*/
boolean add(DBIDRef id);
/**
* Remove a single DBID from the collection.
- *
+ *
* @param id ID to remove
+ * @return {@code true} if the collection changed.
*/
boolean remove(DBIDRef id);
@@ -72,9 +75,9 @@ public interface ModifiableDBIDs extends DBIDs {
/**
* Get a <em>modifiable</em> DBID iterator (a more efficient API).
- *
+ *
* usage example:
- *
+ *
* <pre>
* {@code
* for(DBIDMIter iter = ids.iter(); iter.valid(); iter.advance()) {
@@ -83,7 +86,7 @@ public interface ModifiableDBIDs extends DBIDs {
* }
* }
* </pre>
- *
+ *
* @return modifiable iterator
*/
@Override
@@ -93,6 +96,8 @@ public interface ModifiableDBIDs extends DBIDs {
* Pop (get and remove) one DBID from the set, into a variable.
*
* @param outvar Output variable
+ * @return Always {@code outvar}, for inlining
+ * @throws ArrayIndexOutOfBoundsException when empty.
*/
- void pop(DBIDVar outvar);
+ DBIDVar pop(DBIDVar outvar);
} \ No newline at end of file
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDoubleDBIDList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDoubleDBIDList.java
index 964e18d0..8b4409ee 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDoubleDBIDList.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDoubleDBIDList.java
@@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* Modifiable API for Distance-DBID results
*
* @author Erich Schubert
+ * @since 0.3
*
* @apiviz.composedOf DoubleDBIDPair
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/SetDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/SetDBIDs.java
index bcae4fec..cead3cb6 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/SetDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/SetDBIDs.java
@@ -29,6 +29,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* "contains" lookups.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public interface SetDBIDs extends DBIDs {
// empty marker interface
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/StaticDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/StaticDBIDs.java
index f1b96812..3b4ccc16 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/StaticDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/StaticDBIDs.java
@@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.ids;
* Unmodifiable DBIDs.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public interface StaticDBIDs extends DBIDs {
// Empty marker interface.
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/KNNSubList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/KNNSubList.java
index 1563efd4..770c3792 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/KNNSubList.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/KNNSubList.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.KNNList;
* Sublist of an existing result to contain only the first k elements.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public class KNNSubList implements KNNList {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java
index f71498bd..b61b2a98 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java
@@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.utilities.BitsUtil;
* View on an ArrayDBIDs masked using a BitMask for efficient mask changing.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.uses DBIDs
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableArrayDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableArrayDBIDs.java
index 637ad758..698e63ab 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableArrayDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableArrayDBIDs.java
@@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDVar;
* Unmodifiable wrapper for DBIDs.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.uses ArrayDBIDs
* @apiviz.has UnmodifiableDBIDArrayIter
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableDBIDs.java
index 16ff1f81..7ce291e8 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableDBIDs.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.StaticDBIDs;
* Unmodifiable wrapper for DBIDs.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.uses DBIDs
* @apiviz.has UnmodifiableDBIDIter
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/AbstractIntegerDBIDFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/AbstractIntegerDBIDFactory.java
index cbf29e9c..6ad8c6fe 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/AbstractIntegerDBIDFactory.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/AbstractIntegerDBIDFactory.java
@@ -41,6 +41,7 @@ import de.lmu.ifi.dbs.elki.utilities.io.FixedSizeByteBufferSerializer;
* Abstract base class for DBID factories.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.uses IntegerDBID oneway - - «create»
* @apiviz.uses IntegerDBIDPair oneway - - «create»
@@ -83,7 +84,8 @@ abstract class AbstractIntegerDBIDFactory implements DBIDFactory {
@Override
public String toString(DBIDRef id) {
- return (id != null) ? Integer.toString(id.internalGetIndex()) : "null";
+ return (id != null && id.internalGetIndex() != Integer.MIN_VALUE) //
+ ? Integer.toString(id.internalGetIndex()) : "null";
}
@Override
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayModifiableIntegerDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayModifiableIntegerDBIDs.java
index 835bcd8d..8aa6813c 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayModifiableIntegerDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayModifiableIntegerDBIDs.java
@@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDs;
* Class using a primitive int[] array as storage.
*
* @author Erich Schubert
+ * @since 0.6.0
*/
class ArrayModifiableIntegerDBIDs implements ArrayModifiableDBIDs, IntegerArrayDBIDs {
/**
@@ -271,7 +272,7 @@ class ArrayModifiableIntegerDBIDs implements ArrayModifiableDBIDs, IntegerArrayD
}
@Override
- public void pop(DBIDVar var) {
+ public DBIDVar pop(DBIDVar var) {
if(size == 0) {
throw new ArrayIndexOutOfBoundsException("Cannot pop() from an empty array.");
}
@@ -282,6 +283,7 @@ class ArrayModifiableIntegerDBIDs implements ArrayModifiableDBIDs, IntegerArrayD
// less efficient, involves object creation.
var.set(get(--size));
}
+ return var;
}
@Override
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayStaticIntegerDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayStaticIntegerDBIDs.java
index 210dbb15..fb171416 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayStaticIntegerDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayStaticIntegerDBIDs.java
@@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.logging.LoggingUtil;
* Static (no modifications allowed) set of Database Object IDs.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
class ArrayStaticIntegerDBIDs implements IntegerArrayStaticDBIDs {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNHeap.java
index 7162dbc2..1fe22b71 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNHeap.java
@@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.heap.DoubleIntegerMaxHeap;
* Class to efficiently manage a kNN heap.
*
* @author Erich Schubert
+ * @since 0.6.0
*
* @apiviz.has DoubleIntegerDBIDKNNList
* @apiviz.composedOf DoubleIntegerMaxHeap
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNList.java
index 449497d1..e0e891e3 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNList.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNList.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDListIter;
* the results to be sorted!
*
* @author Erich Schubert
+ * @since 0.6.0
*/
public class DoubleIntegerDBIDKNNList extends DoubleIntegerDBIDList implements IntegerDBIDKNNList {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDList.java
index 6f551189..9c97f779 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDList.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDList.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.arrays.DoubleIntegerArrayQui
* Class to store double distance, integer DBID results.
*
* @author Erich Schubert
+ * @since 0.6.0
*
* @apiviz.uses DoubleIntegerArrayQuickSort
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListIter.java
index 0cd7f33a..f944df03 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListIter.java
@@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDListIter;
* Combination interface of the DoubleDBIDListIter with IntegerDBIDIter.
*
* @author Erich Schubert
+ * @since 0.7.0
*/
public interface DoubleIntegerDBIDListIter extends DoubleDBIDListIter, IntegerDBIDIter {
// No additional methods.
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListKNNHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListKNNHeap.java
index 82c0f184..4ddf7ba3 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListKNNHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListKNNHeap.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.KNNList;
* order.
*
* @author Erich Schubert
+ * @since 0.6.0
*/
class DoubleIntegerDBIDListKNNHeap extends DoubleIntegerDBIDKNNList implements KNNHeap {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListMIter.java
index 59824d85..d46b2952 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListMIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListMIter.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDListMIter;
* Combination interface for modifiable iterators.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
interface DoubleIntegerDBIDListMIter extends DoubleIntegerDBIDListIter, DoubleDBIDListMIter {
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPair.java
index 7cb247ce..f18ab125 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPair.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPair.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDPair;
* Pair containing a double value and an integer DBID.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
class DoubleIntegerDBIDPair implements DoubleDBIDPair, IntegerDBIDRef {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairKNNListHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairKNNListHeap.java
index ee06d7fa..eb2c8267 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairKNNListHeap.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairKNNListHeap.java
@@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.database.ids.KNNList;
* Currently unused, needs benchmarking.
*
* @author Erich Schubert
+ * @since 0.6.0
*
* @apiviz.composedOf DoubleIntegerDBIDPair
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairList.java
index 990e572f..593ba6ed 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairList.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairList.java
@@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.database.ids.ModifiableDoubleDBIDList;
* Currently unused. Needs benchmarking.
*
* @author Erich Schubert
+ * @since 0.6.0
*/
class DoubleIntegerDBIDPairList implements ModifiableDoubleDBIDList, IntegerDBIDs {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayDBIDs.java
index 4afc942a..3f93a4b9 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayDBIDs.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.ArrayDBIDs;
* Trivial combination interface.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
public interface IntegerArrayDBIDs extends IntegerDBIDs, ArrayDBIDs {
@Override
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayStaticDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayStaticDBIDs.java
index fac20bca..c3ba28da 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayStaticDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayStaticDBIDs.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.ArrayStaticDBIDs;
* Combination of {@link ArrayStaticDBIDs} and {@link IntegerDBIDs}.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
interface IntegerArrayStaticDBIDs extends ArrayStaticDBIDs, IntegerArrayDBIDs {
@Override
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBID.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBID.java
index bdc5196b..11cc8c07 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBID.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBID.java
@@ -48,6 +48,7 @@ import de.lmu.ifi.dbs.elki.utilities.io.FixedSizeByteBufferSerializer;
* consistent across multiple results/databases.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.composedOf DynamicSerializer
* @apiviz.composedOf StaticSerializer
@@ -100,7 +101,7 @@ final class IntegerDBID implements DBID, IntegerDBIDRef {
@Override
public String toString() {
- return Integer.toString(id);
+ return (id != Integer.MIN_VALUE) ? Integer.toString(id) : "null";
}
@Override
@@ -111,11 +112,11 @@ final class IntegerDBID implements DBID, IntegerDBIDRef {
@Override
@Deprecated
public boolean equals(Object obj) {
- if (this == obj) {
+ if(this == obj) {
return true;
}
- if (!(obj instanceof IntegerDBID)) {
- if (obj instanceof DBIDRef) {
+ if(!(obj instanceof IntegerDBID)) {
+ if(obj instanceof DBIDRef) {
LoggingUtil.warning("Programming error: DBID.equals(DBIDRef) is not well-defined. Use DBIDUtil.equal() instead!", new Throwable());
}
return false;
@@ -137,7 +138,7 @@ final class IntegerDBID implements DBID, IntegerDBIDRef {
@Override
public DBID get(int i) {
- if (i != 0) {
+ if(i != 0) {
throw new ArrayIndexOutOfBoundsException();
}
return this;
@@ -145,7 +146,7 @@ final class IntegerDBID implements DBID, IntegerDBIDRef {
@Override
public DBIDVar assignVar(int index, DBIDVar var) {
- if (index != 0) {
+ if(index != 0) {
throw new ArrayIndexOutOfBoundsException();
}
var.set(this);
@@ -165,9 +166,10 @@ final class IntegerDBID implements DBID, IntegerDBIDRef {
@Override
public ArrayDBIDs slice(int begin, int end) {
- if (begin == 0 && end == 1) {
+ if(begin == 0 && end == 1) {
return this;
- } else {
+ }
+ else {
return DBIDUtil.EMPTYDBIDS;
}
}
@@ -232,7 +234,7 @@ final class IntegerDBID implements DBID, IntegerDBIDRef {
@Override
public boolean equals(Object other) {
- if (other instanceof DBID) {
+ if(other instanceof DBID) {
LoggingUtil.warning("Programming error detected: DBIDItr.equals(DBID). Use sameDBID()!", new Throwable());
}
return super.equals(other);
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayIter.java
index f0ac9928..4b120c8c 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayIter.java
@@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDArrayIter;
* Modifiable integer array iterator.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
interface IntegerDBIDArrayIter extends IntegerDBIDIter, DBIDArrayIter {
// Empty
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayMIter.java
index c9234060..946484ec 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayMIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayMIter.java
@@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDArrayMIter;
* Modifiable integer array iterator.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
interface IntegerDBIDArrayMIter extends IntegerDBIDArrayIter, IntegerDBIDMIter, DBIDArrayMIter {
// Empty
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayQuickSort.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayQuickSort.java
index bfbde351..7e020554 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayQuickSort.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayQuickSort.java
@@ -41,6 +41,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Reference;
* </p>
*
* @author Erich Schubert
+ * @since 0.5.5
*
* @apiviz.uses IntegerArrayDBIDs
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDIter.java
index 687a64b2..08b7fa01 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDIter.java
@@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDIter;
* Iterator for integer DBIDs.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.landmark
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNList.java
index 3fb0d381..c71253de 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNList.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNList.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.KNNList;
* Combination interface for KNNList and IntegerDBIDs.
*
* @author Erich Schubert
+ * @since 0.7.0
*/
public interface IntegerDBIDKNNList extends KNNList, DoubleDBIDList, IntegerDBIDs {
@Override
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNSubList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNSubList.java
index 4d1095e0..ac050ab9 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNSubList.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNSubList.java
@@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDPair;
* Sublist of an existing result to contain only the first k elements.
*
* @author Erich Schubert
+ * @since 0.5.5
*/
public class IntegerDBIDKNNSubList implements IntegerDBIDKNNList {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDMIter.java
index 6bf1cffd..bf6bfcd8 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDMIter.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDMIter.java
@@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDMIter;
* Modifiable iterator interface for integer DBIDs.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
interface IntegerDBIDMIter extends DBIDMIter, IntegerDBIDIter {
// Empty.
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java
index cd50f00e..5ed718d3 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java
@@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDVar;
* DBID pair using two ints for storage.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
class IntegerDBIDPair implements DBIDPair, IntegerDBIDs {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRange.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRange.java
index 2b790fb5..b7a21419 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRange.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRange.java
@@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.database.ids.SetDBIDs;
* Representing a DBID range allocation.
*
* @author Erich Schubert
+ * @since 0.4.0
*/
final class IntegerDBIDRange implements IntegerDBIDs, DBIDRange, SetDBIDs {
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRef.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRef.java
index da21b007..e2cb0b2e 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRef.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRef.java
@@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef;
* DBID reference that references an integer value.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.landmark
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java
index 12e320e9..b2721a20 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java
@@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.logging.LoggingUtil;
* should come for free!
*
* @author Erich Schubert
+ * @since 0.4.0
*/
class IntegerDBIDVar implements DBIDVar, IntegerDBIDs {
/**
@@ -165,7 +166,7 @@ class IntegerDBIDVar implements DBIDVar, IntegerDBIDs {
@Override
public String toString() {
- return Integer.toString(id);
+ return (id != Integer.MIN_VALUE) ? Integer.toString(id) : "null";
}
@Override
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDs.java
index 3146f829..50c2b950 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDs.java
@@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDs;
* Integer DBID collection.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.has IntegerDBIDIter
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ReusingDBIDFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ReusingDBIDFactory.java
index 02819f0f..ac4715a8 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ReusingDBIDFactory.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ReusingDBIDFactory.java
@@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.logging.Logging;
* TODO: manage fragmentation of ranges?
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.stereotype factory
*/
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/SimpleDBIDFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/SimpleDBIDFactory.java
index b49ab39a..99b96b03 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/SimpleDBIDFactory.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/SimpleDBIDFactory.java
@@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException;
* negative values.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.landmark
* @apiviz.stereotype factory
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TrivialDBIDFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TrivialDBIDFactory.java
index c3e77e99..e9c3b30c 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TrivialDBIDFactory.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TrivialDBIDFactory.java
@@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException;
* sequence. All IDs will be positive.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.landmark
* @apiviz.stereotype factory
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TroveHashSetModifiableDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TroveHashSetModifiableDBIDs.java
index 2fc54afd..912a501b 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TroveHashSetModifiableDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TroveHashSetModifiableDBIDs.java
@@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.Iter;
* Implementation using GNU Trove Int Hash Sets.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.has Itr
*/
@@ -158,7 +159,7 @@ class TroveHashSetModifiableDBIDs implements HashSetModifiableDBIDs, IntegerDBID
}
@Override
- public void pop(DBIDVar outvar) {
+ public DBIDVar pop(DBIDVar outvar) {
if(store.size() == 0) {
throw new ArrayIndexOutOfBoundsException("Cannot pop() from an empty array.");
}
@@ -167,9 +168,8 @@ class TroveHashSetModifiableDBIDs implements HashSetModifiableDBIDs, IntegerDBID
while(i-- > 0 && (states[i] != TPrimitiveHash.FULL)) {
; // Not occupied. Continue
}
- if(i < 0) {
- outvar.unset();
- return;
+ if(i < 0) { // Should never happen because size > 0
+ throw new ArrayIndexOutOfBoundsException("Cannot pop() from an empty array.");
}
final int val = store._set[i];
if(outvar instanceof IntegerDBIDVar) {
@@ -180,6 +180,7 @@ class TroveHashSetModifiableDBIDs implements HashSetModifiableDBIDs, IntegerDBID
}
// Unfortunately, not visible: store.removeAt(i);
store.remove(val);
+ return outvar;
}
/**
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerArrayDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerArrayDBIDs.java
index b7c1fb87..402b780e 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerArrayDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerArrayDBIDs.java
@@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDVar;
* Unmodifiable wrapper for DBIDs.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.uses IntegerArrayDBIDs
* @apiviz.has UnmodifiableDBIDIter
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerDBIDs.java
index 2c4ad2f6..cd48f2b3 100644
--- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerDBIDs.java
+++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerDBIDs.java
@@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.database.ids.StaticDBIDs;
* Unmodifiable wrapper for DBIDs.
*
* @author Erich Schubert
+ * @since 0.4.0
*
* @apiviz.uses IntegerDBIDs
* @apiviz.has UnmodifiableDBIDIter