package edu.stanford.nlp.sequences;
/**
* @author grenager
* Date: Apr 18, 2005
*/
public class FactoredSequenceListener implements SequenceListener {
SequenceListener model1;
SequenceListener model2;
SequenceListener[] models = null;
/**
* Informs this sequence model that the value of the element at position pos has changed.
* This allows this sequence model to update its internal model if desired.
*
*/
public void updateSequenceElement(int[] sequence, int pos, int oldVal) {
if(models != null){
for (SequenceListener model : models) model.updateSequenceElement(sequence, pos, oldVal);
return;
}
model1.updateSequenceElement(sequence, pos, oldVal);
model2.updateSequenceElement(sequence, pos, oldVal);
}
/**
* Informs this sequence model that the value of the whole sequence is initialized to sequence
*
*/
public void setInitialSequence(int[] sequence) {
if(models != null){
for (SequenceListener model : models) model.setInitialSequence(sequence);
return;
}
model1.setInitialSequence(sequence);
model2.setInitialSequence(sequence);
}
public FactoredSequenceListener(SequenceListener model1, SequenceListener model2) {
this.model1 = model1;
this.model2 = model2;
}
public FactoredSequenceListener(SequenceListener[] models){
this.models = models;
}
}