@Override public int bytesRequired(ITupleReference tuple, int startField, int numFields) { int bytes = getNullFlagsBytes(tuple, startField, numFields) + getFieldSlotsBytes(tuple, startField, numFields); for (int i = startField; i < startField + numFields; i++) { bytes += tuple.getFieldLength(i); } return bytes; }
@Override public int bytesRequired(ITupleReference tuple) { int bytes = getNullFlagsBytes(tuple) + getFieldSlotsBytes(tuple); for (int i = 0; i < tuple.getFieldCount(); i++) { bytes += tuple.getFieldLength(i); } return bytes; }
@Override public int writeTupleFields(ITupleReference tuple, int startField, int numFields, byte[] targetBuf, int targetOff) { int runner = targetOff; int nullFlagsBytes = getNullFlagsBytes(tuple, startField, numFields); for (int i = 0; i < nullFlagsBytes; i++) { targetBuf[runner++] = (byte) 0; } runner += getFieldSlotsBytes(tuple, startField, numFields); int fieldEndOff = 0; int fieldCounter = 0; for (int i = startField; i < startField + numFields; i++) { System.arraycopy(tuple.getFieldData(i), tuple.getFieldStart(i), targetBuf, runner, tuple.getFieldLength(i)); fieldEndOff += tuple.getFieldLength(i); runner += tuple.getFieldLength(i); writeShortL((short) fieldEndOff, targetBuf, targetOff + nullFlagsBytes + fieldCounter * 2); fieldCounter++; } return runner - targetOff; }
@Override public int writeTuple(ITupleReference tuple, byte[] targetBuf, int targetOff) { int runner = targetOff; int nullFlagsBytes = getNullFlagsBytes(tuple); int fieldSlotsBytes = getFieldSlotsBytes(tuple); for (int i = 0; i < nullFlagsBytes; i++) { targetBuf[runner++] = (byte) 0; } runner += fieldSlotsBytes; int fieldEndOff = 0; for (int i = 0; i < tuple.getFieldCount(); i++) { System.arraycopy(tuple.getFieldData(i), tuple.getFieldStart(i), targetBuf, runner, tuple.getFieldLength(i)); fieldEndOff += tuple.getFieldLength(i); runner += tuple.getFieldLength(i); writeShortL((short) fieldEndOff, targetBuf, targetOff + nullFlagsBytes + i * 2); } return runner - targetOff; }