001 package railo.transformer.bytecode.expression; 002 003 import org.objectweb.asm.Type; 004 005 import railo.runtime.exp.TemplateException; 006 import railo.transformer.bytecode.BytecodeContext; 007 import railo.transformer.bytecode.BytecodeException; 008 import railo.transformer.bytecode.Position; 009 010 011 /** 012 * A Expression (Operation, Literal aso.) 013 */ 014 public interface Expression { 015 016 /** 017 * Field <code>MODE_REF</code> 018 */ 019 public static final int MODE_REF=0; 020 /** 021 * Field <code>MODE_VALUE</code> 022 */ 023 public static final int MODE_VALUE=1; 024 025 /** 026 * write out the stament to adapter 027 * @param adapter 028 * @param mode 029 * @return return Type of expression 030 * @throws TemplateException 031 */ 032 public Type writeOut(BytecodeContext bc, int mode) throws BytecodeException; 033 034 public Position getStart(); 035 036 public Position getEnd(); 037 038 public void setStart(Position start); 039 040 public void setEnd(Position end); 041 }