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 CollectionKeyArray extends ExpressionBase {
014    
015            private String[] arr;
016    
017            public CollectionKeyArray(String[] arr){
018                    super(null,null);
019                    this.arr=arr;
020            }
021            public CollectionKeyArray(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.COLLECTION_KEY,arr.length);
030            for(int y=0;y<arr.length;y++){
031                            av.visitBeginItem(adapter, y);
032                                    new CollectionKey(arr[y])._writeOut(bc, mode);
033                                    //adapter.push(arr[y]);
034                            av.visitEndItem(bc.getAdapter());
035            }
036            av.visitEnd();
037            return Types.COLLECTION_KEY_ARRAY;
038            }
039    }