package edu.berkeley.nlp.lm.map; import java.util.List; import edu.berkeley.nlp.lm.array.CustomWidthArray; import edu.berkeley.nlp.lm.util.Annotations.OutputParameter; import edu.berkeley.nlp.lm.values.ValueContainer; public interface NgramMap<V> { public long put(int[] ngram, int startPos, int endPos, V val); public void handleNgramsFinished(int justFinishedOrder); public void trim(); public void initWithLengths(List<Long> numNGrams); public ValueContainer<V> getValues(); public long getValueAndOffset(final long contextOffset, final int contextOrder, int word, @OutputParameter V currProbVal); public int getMaxNgramOrder(); public long getNumNgrams(int ngramOrder); public Iterable<Entry<V>> getNgramsForOrder(final int ngramOrder); public CustomWidthArray getValueStoringArray(final int ngramOrder); public static class Entry<T> { /** * @param key * @param value */ public Entry(final int[] key, final T value) { super(); this.key = key; this.value = value; } public int[] key; public T value; } public boolean contains(int[] ngram, int startPos, int endPos); public V get(int[] ngram, int startPos, int endPos); public void clearStorage(); }