001    /**
002     * Implements the Cold Fusion Function arrayMerge
003     * Merge 2 arrays
004     */
005    package railo.runtime.functions.arrays;
006    
007    import railo.runtime.PageContext;
008    import railo.runtime.exp.PageException;
009    import railo.runtime.ext.function.Function;
010    import railo.runtime.type.Array;
011    import railo.runtime.type.ArrayImpl;
012    
013    
014    public final class ArrayMerge implements Function {
015            public static Array call(PageContext pc , Array arr1, Array arr2) throws PageException {
016                    return call(pc,arr1,arr2,false);
017            }
018            public static Array call(PageContext pc , Array arr1, Array arr2, boolean leaveIndex) throws PageException {
019                    if(leaveIndex) {
020                            Array arr = new ArrayImpl();
021                            set(arr,arr2);
022                            set(arr,arr1);
023                            return arr;                     
024                    }
025                    
026                            Array arr = new ArrayImpl();
027                            append(arr,arr1);
028                            append(arr,arr2);
029                            return arr;
030                    
031            }
032    
033            public static void set(Array target,Array source) throws PageException {
034                    int[] srcKeys=source.intKeys();
035                    for(int i=0;i<srcKeys.length;i++) {
036                            target.setE(srcKeys[i],source.getE(srcKeys[i]));
037                    }
038            }
039            
040            public static void append(Array target,Array source) throws PageException {
041                    int[] srcKeys=source.intKeys();
042                    for(int i=0;i<srcKeys.length;i++) {
043                            target.append(source.getE(srcKeys[i]));
044                    }
045            }
046            
047    }