package edu.cmu.sphinx.frontend.util;
import edu.cmu.sphinx.frontend.DataProcessor;
import edu.cmu.sphinx.frontend.FrontEnd;
/**
* Some little helper methods to ease the handling of frontend-processor chains.
*
* @author Holger Brandl
*/
public class FrontEndUtils {
/** Returns a the next <code>DataProcessor</code> of type <code>predecClass</code> which precedes <code>dp</code>
*
* @param dp data processor
* @param <T> predecessor class type
* @param predecClass predecessor class
*
* @return frontend processor
**/
public static <T extends DataProcessor> T getFrontEndProcessor(DataProcessor dp, Class<T> predecClass) {
while (!predecClass.isInstance(dp)) {
if (dp instanceof FrontEnd)
dp = ((FrontEnd) dp).getLastDataProcessor();
else
dp = dp.getPredecessor();
if (dp == null)
return null;
}
return predecClass.cast(dp);
}
}