001 package railo.transformer.bytecode.expression.type; 002 003 import org.objectweb.asm.Type; 004 import org.objectweb.asm.commons.GeneratorAdapter; 005 006 import railo.transformer.bytecode.BytecodeContext; 007 import railo.transformer.bytecode.BytecodeException; 008 import railo.transformer.bytecode.Position; 009 import railo.transformer.bytecode.expression.ExpressionBase; 010 import railo.transformer.bytecode.util.Types; 011 import railo.transformer.bytecode.visitor.ArrayVisitor; 012 013 public class LiteralStringArray extends ExpressionBase { 014 015 private String[] arr; 016 017 public LiteralStringArray(String[] arr){ 018 super(null,null); 019 this.arr=arr; 020 } 021 public LiteralStringArray(String[] arr, Position start,Position end){ 022 super(start,end); 023 this.arr=arr; 024 } 025 026 public Type _writeOut(BytecodeContext bc, int mode) throws BytecodeException { 027 GeneratorAdapter adapter = bc.getAdapter(); 028 ArrayVisitor av=new ArrayVisitor(); 029 av.visitBegin(adapter,Types.STRING,arr.length); 030 for(int y=0;y<arr.length;y++){ 031 av.visitBeginItem(adapter, y); 032 adapter.push(arr[y]); 033 av.visitEndItem(bc.getAdapter()); 034 } 035 av.visitEnd(); 036 return Types.STRING_ARRAY; 037 } 038 }