org.h2.mvstore.type

## Class BasicDataType<T>

- java.lang.Object
- - org.h2.mvstore.type.BasicDataType<T>

All Implemented Interfaces:
  java.util.Comparator<T>, DataType<T>

Direct Known Subclasses:
  ByteArrayDataType, LobStorageMap.BlobMeta.Type, LobStorageMap.BlobReference.Type, LongDataType, MetaType, ObjectDataType, RowDataType, SpatialDataType, StringDataType, ValueDataType, VersionedValueType

    public abstract class BasicDataType<T>
    extends java.lang.Object
    implements DataType<T>

The base class for data type implementations.

### Constructor Summary

Constructors
Constructor and Description
`BasicDataType()`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`int` `binarySearch(T key, java.lang.Object storageObj, int size, int initialGuess)` Perform binary search for the key within the storage
`protected T[]` `cast(java.lang.Object storage)` Cast the storage object to an array of type T.
`int` `compare(T a, T b)` Compare two keys.
`boolean` `equals(java.lang.Object obj)`
`abstract int` `getMemory(T obj)` Calculates the amount of used memory in bytes.
`int` `hashCode()`
`boolean` `isMemoryEstimationAllowed()` Whether memory estimation based on previously seen values is allowed/desirable
`abstract T` `read(java.nio.ByteBuffer buff)` Read an object.
`void` `read(java.nio.ByteBuffer buff, java.lang.Object storage, int len)` Read a list of objects.
`void` `write(WriteBuffer buff, java.lang.Object storage, int len)` Write a list of objects.
`abstract void` `write(WriteBuffer buff, T obj)` Write an object.

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

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

### Methods inherited from interface org.h2.mvstore.type.DataType

`createStorage`

### Methods inherited from interface java.util.Comparator

`comparing, comparing, comparingDouble, comparingInt, comparingLong, naturalOrder, nullsFirst, nullsLast, reversed, reverseOrder, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong`

### Constructor Detail

#### BasicDataType

    public BasicDataType()

### Method Detail

#### getMemory

    public abstract int getMemory(T obj)

Description copied from interface: `DataType`
Calculates the amount of used memory in bytes.

Specified by:
  `getMemory` in interface `DataType<T>`
Parameters:
  `obj` - the object
Returns:
  the used memory

#### write

    public abstract void write(WriteBuffer buff,
                               T obj)

Description copied from interface: `DataType`
Write an object.

Specified by:
  `write` in interface `DataType<T>`
Parameters:
  `buff` - the target buffer
  `obj` - the value

#### read

    public abstract T read(java.nio.ByteBuffer buff)

Description copied from interface: `DataType`
Read an object.

Specified by:
  `read` in interface `DataType<T>`
Parameters:
  `buff` - the source buffer
Returns:
  the object

#### compare

    public int compare(T a,
                       T b)

Description copied from interface: `DataType`
Compare two keys.

Specified by:
  `compare` in interface `java.util.Comparator<T>`
Specified by:
  `compare` in interface `DataType<T>`
Parameters:
  `a` - the first key
  `b` - the second key
Returns:
  -1 if the first key is smaller, 1 if larger, and 0 if equal

#### isMemoryEstimationAllowed

    public boolean isMemoryEstimationAllowed()

Description copied from interface: `DataType`
Whether memory estimation based on previously seen values is allowed/desirable

Specified by:
  `isMemoryEstimationAllowed` in interface `DataType<T>`
Returns:
  true if memory estimation is allowed

#### binarySearch

    public int binarySearch(T key,
                            java.lang.Object storageObj,
                            int size,
                            int initialGuess)

Description copied from interface: `DataType`
Perform binary search for the key within the storage

Specified by:
  `binarySearch` in interface `DataType<T>`
Parameters:
  `key` - to search for
  `storageObj` - to search within (an array of type T)
  `size` - number of data items in the storage
  `initialGuess` - for key position
Returns:
  index of the key , if found, - index of the insertion point, if not

#### write

    public void write(WriteBuffer buff,
                      java.lang.Object storage,
                      int len)

Description copied from interface: `DataType`
Write a list of objects.

Specified by:
  `write` in interface `DataType<T>`
Parameters:
  `buff` - the target buffer
  `storage` - the objects
  `len` - the number of objects to write

#### read

    public void read(java.nio.ByteBuffer buff,
                     java.lang.Object storage,
                     int len)

Description copied from interface: `DataType`
Read a list of objects.

Specified by:
  `read` in interface `DataType<T>`
Parameters:
  `buff` - the target buffer
  `storage` - the objects
  `len` - the number of objects to read

#### hashCode

    public int hashCode()

Overrides:
  `hashCode` in class `java.lang.Object`

#### equals

    public boolean equals(java.lang.Object obj)

Specified by:
  `equals` in interface `java.util.Comparator<T>`
Overrides:
  `equals` in class `java.lang.Object`

#### cast

    protected final T[] cast(java.lang.Object storage)

Cast the storage object to an array of type T.

Parameters:
  `storage` - the storage object
Returns:
  the array