package org.mapdb.serializer; import org.mapdb.DataIO; import org.mapdb.DataInput2; import org.mapdb.DataOutput2; import java.io.IOException; import java.util.Arrays; import java.util.Comparator; /** * Created by jan on 2/29/16. */ public abstract class GroupSerializerObjectArray<A> implements GroupSerializer<A> { @Override public void valueArraySerialize(DataOutput2 out, Object vals) throws IOException { for(Object o:(Object[])vals){ serialize(out, (A) o); } } @Override public Object[] valueArrayDeserialize(DataInput2 in, int size) throws IOException { Object[] ret = new Object[size]; for(int i=0;i<size;i++){ ret[i] = deserialize(in,-1); } return ret; } @Override public A valueArrayGet(Object vals, int pos){ return (A) ((Object[])vals)[pos]; } @Override public int valueArraySize(Object vals){ return ((Object[])vals).length; } @Override public Object[] valueArrayEmpty(){ return new Object[0]; } @Override public Object[] valueArrayPut(Object vals, int pos, A newValue) { return DataIO.arrayPut((Object[])vals, pos, newValue); } @Override public Object[] valueArrayUpdateVal(Object vals, int pos, A newValue) { Object[] vals2 = (Object[]) vals; vals2 = vals2.clone(); vals2[pos] = newValue; return vals2; } @Override public Object[] valueArrayFromArray(Object[] objects) { return objects; } @Override public Object[] valueArrayCopyOfRange(Object vals, int from, int to) { return Arrays.copyOfRange((Object[])vals, from, to); } @Override public Object[] valueArrayDeleteValue(Object vals, int pos) { return DataIO.arrayDelete((Object[])vals, pos, 1); } @Override public int valueArraySearch(Object keys, A key){ return Arrays.binarySearch((Object[])keys, key, (Comparator<Object>)this); } @Override public Object[] valueArrayToArray(Object vals){ return (Object[]) vals; } @Override public int valueArraySearch(Object keys, A key, Comparator comparator){ if(comparator==this) return valueArraySearch(keys, key); return Arrays.binarySearch((Object[])keys, key, comparator); } }