package uk.ac.imperial.lsds.seep.api.data; import java.nio.ByteBuffer; public class Array extends Type { private final Type type; public Array(Type type) { this.type = type; } public Type type(){ return type; } @Override public String toString() { return "@["+type.toString()+"]"; // for example: @[INT] } @Override public void write(ByteBuffer buffer, Object o) { Object[] objs = (Object[]) o; int size = objs.length; buffer.putInt(size); for (int i = 0; i < size; i++) type.write(buffer, objs[i]); } @Override public Object[] read(ByteBuffer buffer) { int size = buffer.getInt(); Object[] objs = new Object[size]; for (int i = 0; i < size; i++) objs[i] = type.read(buffer); return objs; } @Override public int sizeOf(Object o) { Object[] objs = (Object[]) o; int size = Integer.BYTES; for (int i = 0; i < objs.length; i++) size += type.sizeOf(objs[i]); return size; } @Override public boolean isVariableSize() { return type.isVariableSize(); } @Override public Object defaultValue() { return new Object[1]; } @Override public Object randomValue() { return new Object[1]; } }