001    package railo.transformer.cfml.evaluator;
002    
003    import railo.runtime.config.Config;
004    import railo.runtime.exp.TemplateException;
005    import railo.transformer.bytecode.statement.tag.Tag;
006    import railo.transformer.library.function.FunctionLib;
007    import railo.transformer.library.tag.TagLib;
008    import railo.transformer.library.tag.TagLibTag;
009    import railo.transformer.util.CFMLString;
010    
011    /**
012     * Jede Klasse die als Evaluator verwendet werden soll, 
013     * muss das Interface Evaluator implementieren. 
014     * Das Interface Evaluator definiert also die gemeinsame 
015     * Schnittstelle fuer alle Evaluatoren. 
016     */
017    public interface Evaluator {
018    
019            /**
020             * Die Methode evaluate wird aufgerufen, wenn der Context eines Tags geprueft werden soll.
021             * @param config 
022             * @param cfxdTag Das konkrete Tag innerhalb der kompletten CFXD.
023             * @param libTag Die Definition des Tag aus der TLD.
024             * @param flibs Saemtliche Function Library Deskriptoren des aktuellen Tag Libray Deskriptors.
025             * @param cfml
026             * @return changed talib
027             * @throws TemplateException
028            */
029            public TagLib execute(Config config,Tag tag, TagLibTag libTag, FunctionLib[] flibs,CFMLString cfml) throws TemplateException;
030    
031            /**
032             * Die Methode evaluate wird aufgerufen, wenn der Context eines Tags geprueft werden soll,
033             * nachdem die komplette Seite uebersetzt wurde.
034             * @param cfxdTag Das konkrete Tag innerhalb der kompletten CFXD.
035             * @param libTag Die Definition des Tag aus der TLD.
036             * @param flibs Saemtliche Function Library Deskriptoren des aktuellen Tag Libray Deskriptors.
037             * @throws EvaluatorException
038            */
039            public void evaluate(Tag tag, TagLibTag libTag, FunctionLib[] flibs) throws EvaluatorException;
040            
041            
042    }