/******************************************************************************* * 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.FloatBinding; 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.FloatType; import org.simantics.databoard.type.NumberType; import org.simantics.databoard.util.IdentityPair; /** * Binds Float[] Type to float[] class. */ public final class FloatArrayBinding extends ArrayBinding { public static FloatArrayBinding createFrom(ArrayType type) { return new FloatArrayBinding(type, new FloatBindingDefault( (FloatType) type.componentType )); } public FloatArrayBinding(ArrayType type, Binding componentBinding) { super(type, componentBinding); } @Override public Object create() { return new float[0]; } @Override public Object create(int length, Iterator values) { float[] array = new float[length]; for(int i=0;i hashedObjects) throws BindingException { int result = 1; float[] array = (float[]) value; for (int i=0; i>> 32)); result = 31*result + elementHash; } return result; } @Override public int deepCompare(Object o1, Object o2, Set> compareHistory) throws BindingException { float[] a1 = (float[]) o1; float[] a2 = (float[]) 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