package com.google.gwt.reflect.test.annotations; import java.util.Arrays; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.UnsafeNativeLong; public class SourceVisitor { protected boolean arraysEqualPrimitive(Object v1, Object v2) { // Fast at runtime; correct at test time. assert v1 != null : new NullPointerException(); assert v1.getClass().getComponentType().isPrimitive() : "Non primitive array sent as first arg to arrayEqualPrimitive in "+getClass()+": "+v1; assert v2 != null : new NullPointerException(); assert v2.getClass().getComponentType().isPrimitive() : "Non primitive array sent as second arg to arrayEqualPrimitive in "+getClass()+": "+v2; return nativePrimitivesEqual(v1, v2); } protected native boolean nativePrimitivesEqual(Object v1, Object v2) /*-{ var i = v1.length; // v1 never null if (v2 == null || v2.length != i) return false; for (; i-- > 0;) { if (v1[i] != v2[i]) {// we're only sending non-long primitives here return false; } } return true; }-*/; protected boolean arraysEqualLong(Object zero, Object one) { assert zero instanceof long[] : "Non-long array as first argument to arraysEqualLong in "+getClass() +":\n"+zero; assert one instanceof long[] : "Non-long array as second argument to arraysEqualLong in "+getClass() +":\n"+one; return Arrays.equals((long[])zero, (long[])one); } protected boolean arraysEqualObject(Object zero, Object one) { assert zero instanceof Object[] : "Non-Object array as first argument to arraysEqualObject in "+getClass() +":\n"+zero+" "+zero.getClass(); assert one instanceof Object[] : "Non-Object array as second argument to arraysEqualObject in "+getClass() +":\n"+one+" "+one.getClass(); return Arrays.equals((Object[])zero, (Object[])one); } @UnsafeNativeLong protected static native long getLong(JavaScriptObject object, String member) /*-{ return object[member]; }-*/; }