summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java78
1 files changed, 54 insertions, 24 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java b/src/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java
index 9120c0d7..c5dfb9b6 100644
--- a/src/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java
+++ b/src/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.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
@@ -25,6 +25,7 @@ package de.lmu.ifi.dbs.elki.database.ids.integer;
import de.lmu.ifi.dbs.elki.database.ids.ArrayDBIDs;
import de.lmu.ifi.dbs.elki.database.ids.DBID;
+import de.lmu.ifi.dbs.elki.database.ids.DBIDPair;
import de.lmu.ifi.dbs.elki.database.ids.DBIDRef;
import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil;
import de.lmu.ifi.dbs.elki.database.ids.DBIDVar;
@@ -49,7 +50,7 @@ class IntegerDBIDVar implements DBIDVar, IntegerDBIDs {
* Constructor.
*/
protected IntegerDBIDVar() {
- this.id = -1;
+ this.id = Integer.MIN_VALUE;
}
/**
@@ -81,8 +82,21 @@ class IntegerDBIDVar implements DBIDVar, IntegerDBIDs {
}
@Override
+ public void setFirst(DBIDPair pair) {
+ assert pair instanceof IntegerDBIDPair;
+ id = ((IntegerDBIDPair) pair).first;
+ }
+
+ @Override
+ public void setSecond(DBIDPair pair) {
+ assert pair instanceof IntegerDBIDPair;
+ id = ((IntegerDBIDPair) pair).second;
+ }
+
+ @Override
+ @Deprecated
public DBID get(int i) {
- if (i != 0) {
+ if(i != 0) {
throw new ArrayIndexOutOfBoundsException();
}
return new IntegerDBID(i);
@@ -90,12 +104,22 @@ class IntegerDBIDVar implements DBIDVar, IntegerDBIDs {
@Override
public int size() {
- return 1;
+ return id < 0 ? 0 : 1;
}
@Override
public boolean isEmpty() {
- return false;
+ return id < 0;
+ }
+
+ @Override
+ public void unset() {
+ id = Integer.MIN_VALUE;
+ }
+
+ @Override
+ public boolean isSet() {
+ return id > 0;
}
@Override
@@ -111,9 +135,10 @@ class IntegerDBIDVar implements DBIDVar, IntegerDBIDs {
@Override
public void assignVar(int i, DBIDVar var) {
- if (var instanceof IntegerDBIDVar) {
+ if(var instanceof IntegerDBIDVar) {
((IntegerDBIDVar) var).internalSetIndex(i);
- } else {
+ }
+ else {
// Much less efficient:
var.set(get(i));
}
@@ -121,9 +146,10 @@ class IntegerDBIDVar implements DBIDVar, IntegerDBIDs {
@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;
}
}
@@ -150,56 +176,60 @@ class IntegerDBIDVar implements DBIDVar, IntegerDBIDs {
* Iterator position: We use an integer so we can support retract().
*/
int pos = 0;
-
+
@Override
- public void advance() {
+ public Itr advance() {
pos++;
+ return this;
}
-
+
@Override
- public void advance(int count) {
+ public Itr advance(int count) {
pos += count;
+ return this;
}
-
+
@Override
- public void retract() {
+ public Itr retract() {
pos--;
+ return this;
}
-
+
@Override
- public void seek(int off) {
+ public Itr seek(int off) {
pos = off;
+ return this;
}
-
+
@Override
public int getOffset() {
return pos;
}
-
+
@Override
public int internalGetIndex() {
return IntegerDBIDVar.this.id;
}
-
+
@Override
public boolean valid() {
return (pos == 0);
}
-
+
@Override
public int hashCode() {
// Override, because we also are overriding equals.
return super.hashCode();
}
-
+
@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);
}
-
+
@Override
public String toString() {
return Integer.toString(internalGetIndex());