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 }