001    package railo.transformer.bytecode;
002    
003    import railo.runtime.exp.TemplateException;
004    import railo.transformer.bytecode.statement.FlowControlFinal;
005    
006    
007    
008    /**
009     * A single Statement
010     */
011    public interface Statement {
012            
013        /**
014         * sets parent statement to statement
015         * @param parent
016         */
017        public void setParent(Statement parent);
018    
019        public boolean hasFlowController();
020        public void setHasFlowController(boolean has);
021        
022        /**
023         * @return returns the parent statement
024         */
025        public Statement getParent();
026        
027        /**
028         * write out the stament to adapter
029         * @param adapter
030         * @throws TemplateException
031         */
032        public void writeOut(BytecodeContext bc) throws BytecodeException;    
033    
034        
035        /**
036         * sets the line value.
037         * @param line The line to set.
038         */
039        public void setStart(Position startLine);
040    
041        /**
042         * sets the line value.
043         * @param line The line to set.
044         */
045        public void setEnd(Position endLine);
046        
047        /**
048             * @return the startLine
049             */
050            public Position getStart();
051            
052            /**
053             * @return the endLine
054             */
055            public Position getEnd();
056            
057    
058            /**
059             * @return return the label where the finally block of this tags starts, IF there is a finally block, otherwise return null; 
060             */
061            public FlowControlFinal getFlowControlFinal();
062    }