# Class DoubleDiskDataStorage

java.lang.Object
org.apfloat.spi.DataStorage
org.apfloat.internal.DiskDataStorage
org.apfloat.internal.DoubleDiskDataStorage

All Implemented Interfaces:
  `Serializable`

public class DoubleDiskDataStorage extends DiskDataStorage
Disk-based data storage for the `double` element type.

Version:
  1.8.0
Author:
  Mikko Tommila
See Also:
  - Serialized Form

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from class DataStorage

  `DataStorage.AbstractIterator, DataStorage.Iterator`

- ## Field Summary

  ### Fields inherited from class DataStorage

  `READ, READ_WRITE, WRITE`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  ``
  `DoubleDiskDataStorage()`
  Default constructor.
  `protected`
  `DoubleDiskDataStorage(DoubleDiskDataStorage doubleDiskDataStorage, long offset, long length)`
  Subsequence constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected ArrayAccess`
  `createArrayAccess(int mode, int startColumn, int columns, int rows)`
  Create an empty ArrayAccess.
  `protected ArrayAccess`
  `createTransposedArrayAccess(int mode, int startColumn, int columns, int rows)`
  Create an empty transposed ArrayAccess.
  `protected int`
  `getUnitSize()`
  Size of the element type, in bytes.
  `protected ArrayAccess`
  `implGetArray(int mode, long offset, int length)`
  Gets an array access to the data of this data storage when it is treated as a linear block.
  `protected DataStorage`
  `implSubsequence(long offset, long length)`
  Implementation of getting a subsequence of this data storage.
  `DataStorage.Iterator`
  `iterator(int mode, long startPosition, long endPosition)`
  Constructs a new iterator.

  ### Methods inherited from class DiskDataStorage

  `getBlockSize, getFileChannel, getFilename, implCopyFrom, implGetArray, implGetSize, implGetTransposedArray, implSetSize, isCached, setArray, setTransposedArray, transferFrom, transferTo`

  ### Methods inherited from class DataStorage

  `copyFrom, copyFrom, getArray, getArray, getOffset, getSize, getTransposedArray, isReadOnly, isSubsequenced, setReadOnly, setSize, subsequence`

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### DoubleDiskDataStorage

    public DoubleDiskDataStorage() throws ApfloatRuntimeException
    Default constructor.
    Throws:
      `ApfloatRuntimeException`

  - ### DoubleDiskDataStorage

    protected DoubleDiskDataStorage(DoubleDiskDataStorage doubleDiskDataStorage, long offset, long length)
    Subsequence constructor.
    Parameters:
      `doubleDiskDataStorage` - The originating data storage.
      `offset` - The subsequence starting position.
      `length` - The subsequence length.

- ## Method Details

  - ### implSubsequence

    protected DataStorage implSubsequence(long offset, long length) throws ApfloatRuntimeException
    Description copied from class: `DataStorage`
    Implementation of getting a subsequence of this data storage. The validity of the arguments of this method do not need to be checked.
    Specified by:
      `implSubsequence` in class `DataStorage`
    Parameters:
      `offset` - The subsequence starting position.
      `length` - The subsequence length.
    Returns:
      Data storage that represents the specified part of this data storage.
    Throws:
      `ApfloatRuntimeException`

  - ### implGetArray

    protected ArrayAccess implGetArray(int mode, long offset, int length) throws ApfloatRuntimeException
    Description copied from class: `DataStorage`
    Gets an array access to the data of this data storage when it is treated as a linear block. The validity of the arguments of this method do not need to be checked.
    Specified by:
      `implGetArray` in class `DataStorage`
    Parameters:
      `mode` - Access mode for the array access: `DataStorage.READ`, `DataStorage.WRITE` or both.
      `offset` - Starting position of the array access in the data storage.
      `length` - Number of accessible elements in the array access.
    Returns:
      The array access.
    Throws:
      `ApfloatRuntimeException`

  - ### createArrayAccess

    protected ArrayAccess createArrayAccess(int mode, int startColumn, int columns, int rows)
    Description copied from class: `DiskDataStorage`
    Create an empty ArrayAccess.
    Specified by:
      `createArrayAccess` in class `DiskDataStorage`
    Parameters:
      `mode` - Whether the array is prepared for reading, writing or both. The value should be `DataStorage.READ`, `DataStorage.WRITE` or a combination of these.
      `startColumn` - The starting column where data is stored.
      `columns` - The number of columns of data.
      `rows` - The number of rows of data.
    Returns:
      Access to an empty array of the specified size and position.

  - ### createTransposedArrayAccess

    protected ArrayAccess createTransposedArrayAccess(int mode, int startColumn, int columns, int rows)
    Description copied from class: `DiskDataStorage`
    Create an empty transposed ArrayAccess.
    Specified by:
      `createTransposedArrayAccess` in class `DiskDataStorage`
    Parameters:
      `mode` - Whether the array is prepared for reading, writing or both. The value should be `DataStorage.READ`, `DataStorage.WRITE` or a combination of these.
      `startColumn` - The starting column where data is stored.
      `columns` - The number of columns of data.
      `rows` - The number of rows of data.
    Returns:
      Access to an empty array of the specified size and position.

  - ### iterator

    public DataStorage.Iterator iterator(int mode, long startPosition, long endPosition) throws IllegalArgumentException, IllegalStateException, ApfloatRuntimeException
    Description copied from class: `DataStorage`
    Constructs a new iterator. Elements can be iterated either in forward or in reverse order, depending on if `startPosition` is less than or greater than `endPosition`, correspondingly.
    Specified by:
      `iterator` in class `DataStorage`
    Parameters:
      `mode` - Access mode for iterator: `DataStorage.READ`, `DataStorage.WRITE` or both.
      `startPosition` - Starting position of iterator in the data set. For reverse access, the first element in the iterator is `startPosition - 1`.
      `endPosition` - End position of iterator in the data set. For forward access, the last accessible element in the iterator is `endPosition - 1`.
    Returns:
      An iterator.
    Throws:
      `IllegalArgumentException` - If the requested area is out of bounds of the data storage.
      `IllegalStateException` - If write access is requested for a read-only data storage.
      `ApfloatRuntimeException`

  - ### getUnitSize

    protected int getUnitSize()
    Description copied from class: `DiskDataStorage`
    Size of the element type, in bytes.
    Specified by:
      `getUnitSize` in class `DiskDataStorage`
    Returns:
      Size of the element type, in bytes.