package marmot.util;
import marmot.core.Feature;
public class ExactFeatureTable implements FeatureTable {
private static final long serialVersionUID = 1L;
private SymbolTable<Feature> table_;
private transient Feature feature_;
public ExactFeatureTable() {
table_ = new SymbolTable<>();
}
@Override
public int size() {
return table_.size();
}
@Override
public int getFeatureIndex(Encoder encoder, boolean insert) {
if (feature_ == null) {
feature_ = new Feature(encoder.getCapacity());
}
encoder.copyToFeature(feature_);
int index = table_.toIndex(feature_, -1, false);
if (index >= 0)
return index;
if (insert) {
index = table_.toIndex(feature_, true);
feature_ = null;
}
return index;
}
}