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 }