/******************************************************************************* * Copyright (c) 2010 Association for Decentralized Information Management in * Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.databoard.binding.impl; import java.lang.reflect.Array; import java.util.IdentityHashMap; import java.util.Iterator; import java.util.Set; import org.simantics.databoard.binding.ArrayBinding; import org.simantics.databoard.binding.Binding; import org.simantics.databoard.binding.LongBinding; import org.simantics.databoard.binding.error.BindingException; import org.simantics.databoard.binding.error.UnsupportedOperationException; import org.simantics.databoard.type.ArrayType; import org.simantics.databoard.type.LongType; import org.simantics.databoard.type.NumberType; import org.simantics.databoard.util.IdentityPair; /** * Binds Long[] type to long[] class. */ public final class LongArrayBinding extends ArrayBinding { public static LongArrayBinding createFrom(ArrayType type) { return new LongArrayBinding(type, new LongBindingDefault((LongType) type.componentType)); } public LongArrayBinding(ArrayType type, Binding componentBinding) { super(type, componentBinding); } @Override public Object create() { return new long[0]; } @Override public Object create(int length, Iterator values) { long[] array = new long[length]; for(int i=0;i hashedObjects) throws BindingException { int result = 1; long[] array = (long[]) value; for (int i=0; i>> 32)); } return result; } @Override public int deepCompare(Object o1, Object o2, Set> compareHistory) throws BindingException { long[] a1 = (long[]) o1; long[] a2 = (long[]) o2; // Compare Lengths int l1 = a1.length; int l2 = a2.length; int dif = l1 - l2; if (dif!=0) return dif; // Compare elements for (int i=0; i