org.firebirdsql.gds.ng.jna

## Class LittleEndianDatatypeCoder

- java.lang.Object
- - org.firebirdsql.gds.ng.DefaultDatatypeCoder
  - - org.firebirdsql.gds.ng.jna.LittleEndianDatatypeCoder

All Implemented Interfaces:
  DatatypeCoder

    public final class LittleEndianDatatypeCoder
    extends DefaultDatatypeCoder

Datatype encoder and decoder for little endian platforms, specifically for use with the Firebird client library.

For wire protocol use `DefaultDatatypeCoder`.

Since:
  3.0
Author:
  Mark Rotteveel

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.firebirdsql.gds.ng.DatatypeCoder

`DatatypeCoder.RawDateTimeStruct`

### Field Summary

### Fields inherited from interface org.firebirdsql.gds.ng.DatatypeCoder

`FRACTIONS_PER_HOUR, FRACTIONS_PER_MILLISECOND, FRACTIONS_PER_MINUTE, FRACTIONS_PER_SECOND, NANOSECONDS_PER_FRACTION`

### Constructor Summary

Constructors
Constructor and Description
`LittleEndianDatatypeCoder(IEncodingFactory encodingFactory)` Creates a little-endian datatype coder for native access on little-endian platforms.

### Method Summary

Methods
`Decimal128` `decodeDecimal128(byte[] data)` Decodes a decimal128 from byte array.
`Decimal64` `decodeDecimal64(byte[] data)` Decodes a decimal64 from byte array.
`int` `decodeInt(byte[] byte_int)` Decode a `byte` array into an `int` value.
`int` `decodeInt(byte[] bytes, int fromIndex)` Decode a `byte` array to an `int` value.
`java.math.BigInteger` `decodeInt128(byte[] data)` Decodes a BigInteger from byte array.
`long` `decodeLong(byte[] byte_int)` Decode a `byte` array into a `long` value.
`short` `decodeShort(byte[] byte_int)` Decode a `byte` array into a `short` value.
`short` `decodeShort(byte[] bytes, int fromIndex)` Decode from a `byte` array to a `short` value.
`byte[]` `encodeDecimal128(Decimal128 decimal128)` Encodes a decimal128 to a byte array.
`byte[]` `encodeDecimal64(Decimal64 decimal64)` Encodes a decimal64 to a byte array.
`byte[]` `encodeInt(int value)` Encode an `int` value as a `byte` array.
`void` `encodeInt(int value, byte[] target, int fromIndex)` Encode an `int` value into the `target` byte array starting at index `fromIndex`.
`byte[]` `encodeInt128(java.math.BigInteger bigInteger)` Encodes a BigInteger to a 16-byte byte array.
`byte[]` `encodeLong(long value)` Encode a `long` value as a `byte` array.
`void` `encodeShort(int value, byte[] target, int fromIndex)` Encode a `short` value into the `target` byte array starting at index `fromIndex`.
`byte[]` `encodeShort(short value)` Encode a `short` value as a `byte` array.
`static LittleEndianDatatypeCoder` `forEncodingFactory(IEncodingFactory encodingFactory)` Returns an instance of `LittleEndianDatatypeCoder` for an encoding factory.

### Methods inherited from class org.firebirdsql.gds.ng.DefaultDatatypeCoder

`createReader, createWriter, decodeBoolean, decodeDate, decodeDate, decodeDateCalendar, decodeDateRaw, decodeDouble, decodeFloat, decodeString, decodeTime, decodeTime, decodeTimeCalendar, decodeTimeRaw, decodeTimestamp, decodeTimestamp, decodeTimestamp, decodeTimestampCalendar, decodeTimestampRaw, encodeBoolean, encodeDate, encodeDate, encodeDateCalendar, encodeDateRaw, encodeDouble, encodeFloat, encodeLocalDate, encodeLocalDateTime, encodeLocalTime, encodeShort, encodeString, encodeTime, encodeTime, encodeTimeCalendar, encodeTimeRaw, encodeTimestamp, encodeTimestamp, encodeTimestamp, encodeTimestampCalendar, encodeTimestampRaw, equals, forEncodingDefinition, getEncoding, getEncodingDefinition, getEncodingFactory, hashCode, intToBytes, unwrap`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### LittleEndianDatatypeCoder

    public LittleEndianDatatypeCoder(IEncodingFactory encodingFactory)

Creates a little-endian datatype coder for native access on little-endian platforms.

In almost all cases, it is better to use `forEncodingFactory(IEncodingFactory)`.

Parameters:
  `encodingFactory` - Encoding factory

### Method Detail

#### forEncodingFactory

    public static LittleEndianDatatypeCoder forEncodingFactory(IEncodingFactory encodingFactory)

Returns an instance of `LittleEndianDatatypeCoder` for an encoding factory.

Parameters:
  `encodingFactory` - Encoding factory
Returns:
  Datatype coder, this might be a cached instance

#### encodeShort

    public byte[] encodeShort(short value)

Description copied from interface: `DatatypeCoder`
Encode a `short` value as a `byte` array.

Specified by:
  `encodeShort` in interface `DatatypeCoder`
Overrides:
  `encodeShort` in class `DefaultDatatypeCoder`
Parameters:
  `value` - The value to be encoded
Returns:
  The value of `value` encoded as a `byte` array
See Also:
  `DatatypeCoder.encodeShort(int)`

#### encodeShort

    public void encodeShort(int value,
                   byte[] target,
                   int fromIndex)

Description copied from interface: `DatatypeCoder`
Encode a `short` value into the `target` byte array starting at index `fromIndex`.

Specified by:
  `encodeShort` in interface `DatatypeCoder`
Overrides:
  `encodeShort` in class `DefaultDatatypeCoder`
Parameters:
  `value` - The value to be encoded
  `target` - Target byte array of sufficient size (warning: this may be datatype coder specific)
  `fromIndex` - Index to start writing

#### decodeShort

    public short decodeShort(byte[] byte_int)

Description copied from interface: `DatatypeCoder`
Decode a `byte` array into a `short` value.

Specified by:
  `decodeShort` in interface `DatatypeCoder`
Overrides:
  `decodeShort` in class `DefaultDatatypeCoder`
Parameters:
  `byte_int` - The `byte` array to be decoded
Returns:
  The `short` value of the decoded `byte` array

#### decodeShort

    public short decodeShort(byte[] bytes,
                    int fromIndex)

Description copied from interface: `DatatypeCoder`
Decode from a `byte` array to a `short` value.

Specified by:
  `decodeShort` in interface `DatatypeCoder`
Overrides:
  `decodeShort` in class `DefaultDatatypeCoder`
Parameters:
  `bytes` - The `byte` array to be decoded
  `fromIndex` - The index to start reading
Returns:
  The `short` value of the decoded `byte` array

#### encodeInt

    public byte[] encodeInt(int value)

Description copied from interface: `DatatypeCoder`
Encode an `int` value as a `byte` array.

Specified by:
  `encodeInt` in interface `DatatypeCoder`
Overrides:
  `encodeInt` in class `DefaultDatatypeCoder`
Parameters:
  `value` - The value to be encoded
Returns:
  The value of `value` encoded as a `byte` array

#### encodeInt

    public void encodeInt(int value,
                 byte[] target,
                 int fromIndex)

Description copied from interface: `DatatypeCoder`
Encode an `int` value into the `target` byte array starting at index `fromIndex`.

Specified by:
  `encodeInt` in interface `DatatypeCoder`
Overrides:
  `encodeInt` in class `DefaultDatatypeCoder`
Parameters:
  `value` - The value to be encoded
  `target` - Target byte array of sufficient size
  `fromIndex` - Index to start writing

#### decodeInt

    public int decodeInt(byte[] byte_int)

Description copied from interface: `DatatypeCoder`
Decode a `byte` array into an `int` value.

Specified by:
  `decodeInt` in interface `DatatypeCoder`
Overrides:
  `decodeInt` in class `DefaultDatatypeCoder`
Parameters:
  `byte_int` - The `byte` array to be decoded
Returns:
  The `int` value of the decoded `byte` array

#### decodeInt

    public int decodeInt(byte[] bytes,
                int fromIndex)

Description copied from interface: `DatatypeCoder`
Decode a `byte` array to an `int` value.

Specified by:
  `decodeInt` in interface `DatatypeCoder`
Overrides:
  `decodeInt` in class `DefaultDatatypeCoder`
Parameters:
  `bytes` - The `byte` array to be decoded
  `fromIndex` - The index to start reading
Returns:
  The `int` value of the decoded `byte` array

#### encodeLong

    public byte[] encodeLong(long value)

Description copied from interface: `DatatypeCoder`
Encode a `long` value as a `byte` array.

Specified by:
  `encodeLong` in interface `DatatypeCoder`
Overrides:
  `encodeLong` in class `DefaultDatatypeCoder`
Parameters:
  `value` - The value to be encoded
Returns:
  The value of `value` encoded as a `byte` array

#### decodeLong

    public long decodeLong(byte[] byte_int)

Description copied from interface: `DatatypeCoder`
Decode a `byte` array into a `long` value.

Specified by:
  `decodeLong` in interface `DatatypeCoder`
Overrides:
  `decodeLong` in class `DefaultDatatypeCoder`
Parameters:
  `byte_int` - The `byte` array to be decoded
Returns:
  The `long` value of the decoded `byte` array

#### decodeDecimal64

    public Decimal64 decodeDecimal64(byte[] data)

Description copied from interface: `DatatypeCoder`
Decodes a decimal64 from byte array.

Specified by:
  `decodeDecimal64` in interface `DatatypeCoder`
Overrides:
  `decodeDecimal64` in class `DefaultDatatypeCoder`
Parameters:
  `data` - Data to decode (expected 8 bytes)
Returns:
  Decimal64 value

#### encodeDecimal64

    public byte[] encodeDecimal64(Decimal64 decimal64)

Description copied from interface: `DatatypeCoder`
Encodes a decimal64 to a byte array.

Specified by:
  `encodeDecimal64` in interface `DatatypeCoder`
Overrides:
  `encodeDecimal64` in class `DefaultDatatypeCoder`
Parameters:
  `decimal64` - The decimal64 value to be encoded
Returns:
  Byte array for decimal64 value

#### decodeDecimal128

    public Decimal128 decodeDecimal128(byte[] data)

Description copied from interface: `DatatypeCoder`
Decodes a decimal128 from byte array.

Specified by:
  `decodeDecimal128` in interface `DatatypeCoder`
Overrides:
  `decodeDecimal128` in class `DefaultDatatypeCoder`
Parameters:
  `data` - Data to decode (expected 16 bytes)
Returns:
  Decimal128 value

#### encodeDecimal128

    public byte[] encodeDecimal128(Decimal128 decimal128)

Description copied from interface: `DatatypeCoder`
Encodes a decimal128 to a byte array.

Specified by:
  `encodeDecimal128` in interface `DatatypeCoder`
Overrides:
  `encodeDecimal128` in class `DefaultDatatypeCoder`
Parameters:
  `decimal128` - The decimal128 value to be encoded
Returns:
  Byte array for decimal128 value

#### decodeInt128

    public java.math.BigInteger decodeInt128(byte[] data)

Description copied from interface: `DatatypeCoder`
Decodes a BigInteger from byte array.

Specified by:
  `decodeInt128` in interface `DatatypeCoder`
Overrides:
  `decodeInt128` in class `DefaultDatatypeCoder`
Parameters:
  `data` - Data to decode (expected 16 bytes)
Returns:
  BigInteger value

#### encodeInt128

    public byte[] encodeInt128(java.math.BigInteger bigInteger)

Description copied from interface: `DatatypeCoder`
Encodes a BigInteger to a 16-byte byte array.

The implementation expects to be passed a value that fits in 16 bytes. If a larger value is passed, and `IllegalArgumentException` is thrown.

Specified by:
  `encodeInt128` in interface `DatatypeCoder`
Overrides:
  `encodeInt128` in class `DefaultDatatypeCoder`
Parameters:
  `bigInteger` - The BigInteger value to be encoded
Returns:
  Byte array for bigInteger value