package railo.transformer.cfml.evaluator; import railo.runtime.config.Config; import railo.runtime.exp.TemplateException; import railo.transformer.bytecode.statement.tag.Tag; import railo.transformer.cfml.Data; import railo.transformer.library.function.FunctionLib; import railo.transformer.library.tag.TagLib; import railo.transformer.library.tag.TagLibTag; /** * Jede Klasse die als Evaluator verwendet werden soll, * muss das Interface Evaluator implementieren. * Das Interface Evaluator definiert also die gemeinsame * Schnittstelle fuer alle Evaluatoren. */ public interface Evaluator { /** * Die Methode evaluate wird aufgerufen, wenn der Context eines Tags geprueft werden soll. * @param config * @param cfxdTag Das konkrete Tag innerhalb der kompletten CFXD. * @param libTag Die Definition des Tag aus der TLD. * @param flibs Saemtliche Function Library Deskriptoren des aktuellen Tag Libray Deskriptors. * @param cfml * @return changed talib * @throws TemplateException */ public TagLib execute(Config config,Tag tag, TagLibTag libTag, FunctionLib[] flibs,Data data) throws TemplateException; /** * Die Methode evaluate wird aufgerufen, wenn der Context eines Tags geprueft werden soll, * nachdem die komplette Seite uebersetzt wurde. * @param cfxdTag Das konkrete Tag innerhalb der kompletten CFXD. * @param libTag Die Definition des Tag aus der TLD. * @param flibs Saemtliche Function Library Deskriptoren des aktuellen Tag Libray Deskriptors. * @throws EvaluatorException */ public void evaluate(Tag tag, TagLibTag libTag, FunctionLib[] flibs) throws EvaluatorException; }