diff options
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.java | 78 |
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()); |