package org.khelekore.prtree;
/** Information needed to be able to figure out how an
* element of the tree is currently used.
*/
class NodeUsage<T> {
/** The actual data of the node. */
private T data;
/** The leaf node builder user id (split id). */
private int usage = 1;
public NodeUsage (T data) {
this.data = data;
}
public T getData () {
return data;
}
public void use () {
if (usage >= 0)
usage = -usage;
else
throw new RuntimeException ("using already used node");
}
public boolean isUsed () {
return usage < 0;
}
public void setUser (int id) {
if (id < 0)
throw new IllegalArgumentException ("id must be positive");
usage = id;
}
public int getUser () {
return Math.abs (usage);
}
@Override public String toString () {
return getClass ().getSimpleName () + "{data: " + data +
", used: " + isUsed () + ", user: " + getUser () + "}";
}
}