summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java94
1 files changed, 71 insertions, 23 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java b/src/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java
index 12e9b685..9c691bc9 100644
--- a/src/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java
+++ b/src/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.database.ids.integer;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2013
+ Copyright (C) 2014
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -23,14 +23,16 @@ package de.lmu.ifi.dbs.elki.database.ids.integer;
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+import de.lmu.ifi.dbs.elki.database.ids.DBIDIter;
import de.lmu.ifi.dbs.elki.database.ids.DBIDPair;
+import de.lmu.ifi.dbs.elki.database.ids.DBIDRef;
/**
* DBID pair using two ints for storage.
*
* @author Erich Schubert
*/
-public class IntegerDBIDPair implements DBIDPair {
+class IntegerDBIDPair implements DBIDPair, IntegerDBIDs {
/**
* First value in pair
*/
@@ -47,7 +49,7 @@ public class IntegerDBIDPair implements DBIDPair {
* @param first first parameter
* @param second second parameter
*/
- public IntegerDBIDPair(int first, int second) {
+ protected IntegerDBIDPair(int first, int second) {
this.first = first;
this.second = second;
}
@@ -60,36 +62,18 @@ public class IntegerDBIDPair implements DBIDPair {
return "Pair(" + first + ", " + second + ")";
}
- /**
- * Getter for first
- *
- * @return first element in pair
- */
+ @Deprecated
@Override
public final IntegerDBID getFirst() {
return new IntegerDBID(first);
}
- /**
- * Getter for second element in pair
- *
- * @return second element in pair
- */
+ @Deprecated
@Override
public final IntegerDBID getSecond() {
return new IntegerDBID(second);
}
- /**
- * Simple equals statement.
- *
- * This Pair equals another Object if they are identical or if the other
- * Object is also a Pair and the {@link #first} and {@link #second} element of
- * this Pair equal the {@link #first} and {@link #second} element,
- * respectively, of the other Pair.
- *
- * @param obj Object to compare to
- */
@Override
public boolean equals(Object obj) {
if(this == obj) {
@@ -118,4 +102,68 @@ public class IntegerDBIDPair implements DBIDPair {
result = prime * result + second;
return (int) result;
}
+
+ @Override
+ public int size() {
+ return 2;
+ }
+
+ @Override
+ public boolean contains(DBIDRef o) {
+ final int i = o.internalGetIndex();
+ return (i == first) || (i == second);
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public IntegerDBIDIter iter() {
+ return new Itr(first, second);
+ }
+
+ /**
+ * Iterator.
+ *
+ * @author Erich Schubert
+ *
+ * @apiviz.exclude
+ */
+ private static class Itr implements IntegerDBIDIter {
+ /**
+ * State
+ */
+ int first, second, pos;
+
+ /**
+ * Constructor.
+ *
+ * @param first First ID
+ * @param second Second ID
+ */
+ public Itr(int first, int second) {
+ super();
+ this.first = first;
+ this.second = second;
+ this.pos = 0;
+ }
+
+ @Override
+ public boolean valid() {
+ return pos < 2;
+ }
+
+ @Override
+ public DBIDIter advance() {
+ ++pos;
+ return this;
+ }
+
+ @Override
+ public int internalGetIndex() {
+ return (pos == 0) ? first : second;
+ }
+ }
} \ No newline at end of file