content: package edu.berkeley.nlp.lm;
  
  import java.io.Serializable;
  import java.util.List;
  
  import edu.berkeley.nlp.lm.util.Annotations.OutputParameter;
  
  /**
   * 
   * Default implementation of all ContextEncodedNgramLanguageModel functionality
   * except {@link #getLogProb(long, int, int, LmContextInfo)},
   * {@link #getOffsetForNgram(int[], int, int), and {
   * @link #getNgramForOffset(long, int, int)}.
   * 
   * 
   * @author adampauls
   * 
   * @param <W>
   */
  public abstract class AbstractContextEncodedNgramLanguageModel<W> extends AbstractNgramLanguageModel<W> implements ContextEncodedNgramLanguageModel<W>,
  	Serializable
  {
  
  	/**
  	 * 
  	 */
  	private static final long serialVersionUID = 1L;
  
  	public AbstractContextEncodedNgramLanguageModel(final int lmOrder, final WordIndexer<W> wordIndexer, final float oovWordLogProb) {
  		super(lmOrder, wordIndexer, oovWordLogProb);
  	}
  
  	@Override
  	public float scoreSentence(final List<W> sentence) {
  		return ContextEncodedNgramLanguageModel.DefaultImplementations.scoreSentence(sentence, this);
  	}
  
  	@Override
  	public float getLogProb(final List<W> phrase) {
  		return ContextEncodedNgramLanguageModel.DefaultImplementations.getLogProb(phrase, this);
  	}
  
  	@Override
  	public abstract float getLogProb(long contextOffset, int contextOrder, int word, @OutputParameter LmContextInfo outputContext);
  
  	@Override
  	public abstract LmContextInfo getOffsetForNgram(int[] ngram, int startPos, int endPos);
  
  	@Override
  	public abstract int[] getNgramForOffset(long contextOffset, int contextOrder, int word);
  
  }
  