// Path: src/main/java/edu/berkeley/nlp/lm/map/NgramMap.java
// 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();
// 
// }


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import edu.berkeley.nlp.lm.map.NgramMap;
package edu.berkeley.nlp.lm.io;



/**
 * Reader callback which adds n-grams to an NgramMap
 * 
 * @author adampauls
 * 
 * @param <V>
 *            Value type
 */
public final class NgramMapAddingCallback<V> implements ArpaLmReaderCallback<V>
{

// Path: src/main/java/edu/berkeley/nlp/lm/map/NgramMap.java
// 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();
// 
// }


// Path: src/main/java/edu/berkeley/nlp/lm/io/NgramMapAddingCallback.java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import edu.berkeley.nlp.lm.map.NgramMap;

package edu.berkeley.nlp.lm.io;



/**
 * Reader callback which adds n-grams to an NgramMap
 * 
 * @author adampauls
 * 
 * @param <V>
 *            Value type
 */
public final class NgramMapAddingCallback<V> implements ArpaLmReaderCallback<V>
{

	private final NgramMap<V> map;