@Override public int bytesRequired(ITupleReference tuple, int startField, int numFields) { int bytes = getNullFlagsBytes(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(numFields); // write null indicator bits for (int i = 0; i < nullFlagsBytes; i++) { targetBuf[runner++] = (byte) 0; } // write field slots for variable length fields for (int i = startField; i < startField + numFields; i++) { if (!typeTraits[i].isFixedLength()) { runner += VarLenIntEncoderDecoder.encode(tuple.getFieldLength(i), targetBuf, runner); } } for (int i = startField; i < startField + numFields; i++) { System.arraycopy(tuple.getFieldData(i), tuple.getFieldStart(i), targetBuf, runner, tuple.getFieldLength(i)); runner += tuple.getFieldLength(i); } return runner - targetOff; }
@Override public int writeTuple(ITupleReference tuple, byte[] targetBuf, int targetOff) { int runner = targetOff; int nullFlagsBytes = getNullFlagsBytes(tuple); // write null indicator bits for (int i = 0; i < nullFlagsBytes; i++) { targetBuf[runner++] = (byte) 0; } // write field slots for variable length fields for (int i = 0; i < tuple.getFieldCount(); i++) { if (!typeTraits[i].isFixedLength()) { runner += VarLenIntEncoderDecoder.encode(tuple.getFieldLength(i), targetBuf, runner); } } // write data fields for (int i = 0; i < tuple.getFieldCount(); i++) { System.arraycopy(tuple.getFieldData(i), tuple.getFieldStart(i), targetBuf, runner, tuple.getFieldLength(i)); runner += tuple.getFieldLength(i); } return runner - targetOff; }