com.sleepycat.bind.tuple
public class TupleOutput extends FastOutputStream
OutputStream
with DataOutput
-like methods for
writing tuple fields. It is used by TupleBinding
.
This class has many methods that have the same signatures as methods in the java.io.DataOutput interface. The reason this class does not implement java.io.DataOutput is because it would break the interface contract for those methods because of data format differences.
Signed numbers are stored in the buffer in MSB (most significant byte first) order with their sign bit (high-order bit) inverted to cause negative numbers to be sorted first when comparing values as unsigned byte arrays, as done in a database. Unsigned numbers, including characters, are stored in MSB order with no change to their sign bit.
Strings and character arrays are stored either as a fixed length array of unicode characters, where the length must be known by the application, or as a null-terminated UTF byte array.
Floats and doubles are stored using two different representations: sorted representation and integer-bit (IEEE 754) representation. If you use negative floating point numbers in a key, you should use sorted representation; alternatively you may use integer-bit representation but you will need to implement and configure a custom comparator to get correct numeric ordering for negative numbers.
To use sorted representation use this set of methods:
To use integer-bit representation use this set of methods:
Constructor Summary | |
---|---|
TupleOutput()
Creates a tuple output object for writing a byte array of tuple data. | |
TupleOutput(byte[] buffer)
Creates a tuple output object for writing a byte array of tuple data,
using a given buffer. |
Method Summary | |
---|---|
TupleOutput | writeBoolean(boolean val)
Writes a boolean (one byte) unsigned value to the buffer, writing one
if the value is true and zero if it is false.
|
TupleOutput | writeByte(int val)
Writes an signed byte (one byte) value to the buffer.
|
TupleOutput | writeBytes(String val)
Writes the specified bytes to the buffer, converting each character to
an unsigned byte value.
|
TupleOutput | writeBytes(char[] chars)
Writes the specified bytes to the buffer, converting each character to
an unsigned byte value.
|
TupleOutput | writeChar(int val)
Writes a char (two byte) unsigned value to the buffer.
|
TupleOutput | writeChars(String val)
Writes the specified characters to the buffer, converting each character
to a two byte unsigned value.
|
TupleOutput | writeChars(char[] chars)
Writes the specified characters to the buffer, converting each character
to a two byte unsigned value.
|
TupleOutput | writeDouble(double val)
Writes an signed double (eight byte) value to the buffer.
|
TupleOutput | writeFloat(float val)
Writes an signed float (four byte) value to the buffer.
|
TupleOutput | writeInt(int val)
Writes an signed int (four byte) value to the buffer.
|
TupleOutput | writeLong(long val)
Writes an signed long (eight byte) value to the buffer.
|
void | writePackedInt(int val)
Writes a packed integer. |
TupleOutput | writeShort(int val)
Writes an signed short (two byte) value to the buffer.
|
TupleOutput | writeSortedDouble(double val)
Writes a signed double (eight byte) value to the buffer, with support
for correct default sorting of all values.
|
TupleOutput | writeSortedFloat(float val)
Writes a signed float (four byte) value to the buffer, with support for
correct default sorting of all values.
|
TupleOutput | writeString(String val)
Writes the specified characters to the buffer, converting each character
to UTF format, and adding a null terminator byte.
|
TupleOutput | writeString(char[] chars)
Writes the specified characters to the buffer, converting each character
to UTF format.
|
TupleOutput | writeUnsignedByte(int val)
Writes an unsigned byte (one byte) value to the buffer.
|
TupleOutput | writeUnsignedInt(long val)
Writes an unsigned int (four byte) value to the buffer.
|
TupleOutput | writeUnsignedShort(int val)
Writes an unsigned short (two byte) value to the buffer.
|
Parameters: buffer is the byte array to use as the buffer.
Parameters: val is the value to write to the buffer.
Returns: this tuple output object.
Parameters: val is the value to write to the buffer.
Returns: this tuple output object.
Parameters: val is the string containing the values to be written.
Returns: this tuple output object.
Throws: NullPointerException if the val parameter is null.
Parameters: chars is the array of values to be written.
Returns: this tuple output object.
Throws: NullPointerException if the chars parameter is null.
Parameters: val is the value to write to the buffer.
Returns: this tuple output object.
Parameters: val is the string containing the characters to be written.
Returns: this tuple output object.
Throws: NullPointerException if the val parameter is null.
Parameters: chars is the array of characters to be written.
Returns: this tuple output object.
Throws: NullPointerException if the chars parameter is null.
Double.doubleToLongBits
is used to convert the signed
double value.
Note: This method produces byte array values that by default (without a custom comparator) do not sort correctly for negative values. Only non-negative values are sorted correctly by default. To sort all values correctly by default, use TupleOutput.
Parameters: val is the value to write to the buffer.
Returns: this tuple output object.
Float.floatToIntBits
is used to convert the signed float
value.
Note: This method produces byte array values that by default (without a custom comparator) do not sort correctly for negative values. Only non-negative values are sorted correctly by default. To sort all values correctly by default, use TupleOutput.
Parameters: val is the value to write to the buffer.
Returns: this tuple output object.
Parameters: val is the value to write to the buffer.
Returns: this tuple output object.
Parameters: val is the value to write to the buffer.
Returns: this tuple output object.
See Also: PackedInteger
Parameters: val is the value to write to the buffer.
Returns: this tuple output object.
Float.doubleToLongBits
and the following bit
manipulations are used to convert the signed double value to a
representation that is sorted correctly by default.
long longVal = Double.doubleToLongBits(val); longVal ^= (longVal < 0) ? 0xffffffffffffffffL : 0x8000000000000000L;
Parameters: val is the value to write to the buffer.
Returns: this tuple output object.
Float.floatToIntBits
and the following bit manipulations
are used to convert the signed float value to a representation that is
sorted correctly by default.
int intVal = Float.floatToIntBits(val); intVal ^= (intVal < 0) ? 0xffffffff : 0x80000000;
Parameters: val is the value to write to the buffer.
Returns: this tuple output object.
Parameters: val is the string containing the characters to be written.
Returns: this tuple output object.
(char[])
.
Parameters: chars is the array of characters to be written.
Returns: this tuple output object.
Throws: NullPointerException if the chars parameter is null.
Parameters: val is the value to write to the buffer.
Returns: this tuple output object.
Parameters: val is the value to write to the buffer.
Returns: this tuple output object.
Parameters: val is the value to write to the buffer.
Returns: this tuple output object.