@Override public int getMemory(Object obj) { switchType(obj); return last.getMemory(obj); }
@Override public int compare(Object a, Object b) { switchType(a); return last.compare(a, b); }
/** * Write a list of objects. * * @param buff the target buffer * @param obj the objects * @param len the number of objects to write */ default void write(DataBuffer buff, Object[] obj, int len) { for (int i = 0; i < len; i++) { write(buff, obj[i]); } }
@Override public boolean areValuesEqual(Object a, Object b) { if (a == b) { return true; } else if (a == null || b == null) { return false; } return valueType.compare(a, b) == 0; }
/** * Read a list of objects. * * @param buff the target buffer * @param obj the objects * @param len the number of objects to read */ default void read(ByteBuffer buff, Object[] obj, int len) { for (int i = 0; i < len; i++) { obj[i] = read(buff); } }
@Override public int getMemory(Object obj, int columnIndex) { TransactionalValue v = (TransactionalValue) obj; return valueType.getMemory(v.value, columnIndex); } }
/** * Switch the last remembered type to match the type of the given object. * * @param obj the object * @return the auto-detected type used */ StorageDataTypeBase switchType(Object obj) { int typeId = getTypeId(obj); StorageDataTypeBase l = last; if (typeId != l.getType()) { last = l = newType(typeId); } return l; }
@Override public void write(DataBuffer buff, Object obj) { switchType(obj); last.write(buff, obj); }
@Override public void writeColumn(DataBuffer buff, Object obj, int columnIndex) { TransactionalValue v = (TransactionalValue) obj; valueType.writeColumn(buff, v.value, columnIndex); }
@Override public void readColumn(ByteBuffer buff, Object obj, int columnIndex) { TransactionalValue v = (TransactionalValue) obj; valueType.readColumn(buff, v.value, columnIndex); }
@Override public int getColumnCount() { return valueType.getColumnCount(); }
@Override public void writeValue(DataBuffer buff, Value v) { throw newInternalError(); }
@Override public void writeValue(DataBuffer buff, Value v) { throw newInternalError(); }
@Override public void writeValue(DataBuffer buff, Value v) { throw newInternalError(); }
@Override public void writeValue(DataBuffer buff, Value v) { throw newInternalError(); }
default void writeColumn(DataBuffer buff, Object obj, int columnIndex) { write(buff, obj); }
@Override public int compare(K k1, K k2) { return keyType.compare(k1, k2); } }
@Override public boolean areValuesEqual(Object a, Object b) { if (a == b) { return true; } else if (a == null || b == null) { return false; } return valueType.compare(a, b) == 0; }