001    /**
002     * Implements the CFML Function ArrayReverse
003     */
004    package railo.runtime.functions.arrays;
005    
006    import railo.runtime.PageContext;
007    import railo.runtime.exp.ExpressionException;
008    import railo.runtime.exp.PageException;
009    import railo.runtime.functions.BIF;
010    import railo.runtime.op.Caster;
011    import railo.runtime.type.Array;
012    import railo.runtime.type.ArrayImpl;
013    
014    
015    public final class ArrayReverse extends BIF {
016    
017            private static final long serialVersionUID = 5418304787535992180L;
018    
019            public static Array call(PageContext pc , Array array) throws ExpressionException {
020                    Array rev=new ArrayImpl(array.getDimension());
021                    int len=array.size();
022                    for(int i=0;i<len;i++) {
023                            try {
024                                    rev.setE(len-i,array.getE(i+1));
025                            } catch (PageException e) {
026                            }
027                    }
028                    return rev;
029            }       
030            
031            @Override
032            public Object invoke(PageContext pc, Object[] args) throws PageException {
033                    return call(pc,Caster.toArray(args[0]));
034            }
035    }