package edu.berkeley.cs.nlp.ocular.lm;
/**
* @author Taylor Berg-Kirkpatrick (tberg@eecs.berkeley.edu)
*/
public class NgramWrapper {
public int[] ngram;
public int start;
public int end;
private NgramWrapper() {
this.ngram = null;
this.start = -1;
this.end = -1;
}
public static NgramWrapper getNew(int[] ngram, int start, int end) {
NgramWrapper next = new NgramWrapper();
next.changeNgramWrapper(ngram, start, end);
return next;
}
private void changeNgramWrapper(int[] ngram, int start, int end) {
this.ngram = ngram;
this.start = start;
this.end = end;
}
public int getOrder() {
return end - start;
}
public NgramWrapper getLowerOrder() {
return getNew(ngram, start + 1, end);
}
public NgramWrapper getLowerOrder(int order) {
return getNew(ngram, end - order, end);
}
public NgramWrapper getHistory() {
return getNew(ngram, start, end - 1);
}
public long getLongRep() {
return Ngram.convertToLong(ngram, start, end);
}
public long[] getLongerRep() {
return LongNgram.convertToLong(ngram, start, end);
}
public String toString() {
String str = "[";
for (int i = start; i < end; i++) {
str += ngram[i] + ", ";
}
if (str.length() == 1) {
return str + "]";
} else {
return str.substring(0, str.length() - 2) + "]";
}
}
}