# Class DoubleMemoryDataStorage

java.lang.Object
org.apfloat.spi.DataStorage
org.apfloat.internal.DoubleMemoryDataStorage

All Implemented Interfaces:
  `Serializable`

public class DoubleMemoryDataStorage extends DataStorage
Memory based data storage implementation for the `double` element type.

Version:
  1.15.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
  ``
  `DoubleMemoryDataStorage()`
  Default constructor.
  `protected`
  `DoubleMemoryDataStorage(DoubleMemoryDataStorage doubleMemoryDataStorage, long offset, long length)`
  Subsequence constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `implCopyFrom(DataStorage dataStorage, long size)`
  Copies the specified number of elements from another data storage to this data storage.
  `protected ArrayAccess`
  `implGetArray(int mode, int startColumn, int columns, int rows)`
  Maps a block of data to a memory array when the data is treated as a matrix.
  `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 long`
  `implGetSize()`
  Return the size of the whole data storage, not including sub-sequence settings.
  `protected ArrayAccess`
  `implGetTransposedArray(int mode, int startColumn, int columns, int rows)`
  Maps a transposed block of data to a memory array when the data is treated as a matrix.
  `protected void`
  `implSetSize(long size)`
  Sets the size of the data storage.
  `protected DataStorage`
  `implSubsequence(long offset, long length)`
  Implementation of getting a subsequence of this data storage.
  `boolean`
  `isCached()`
  Is this object cached in memory.
  `DataStorage.Iterator`
  `iterator(int mode, long startPosition, long endPosition)`
  Constructs a new iterator.

  ### 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

  - ### DoubleMemoryDataStorage

    public DoubleMemoryDataStorage()
    Default constructor.

  - ### DoubleMemoryDataStorage

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

- ## Method Details

  - ### isCached

    public boolean isCached()
    Description copied from class: `DataStorage`
    Is this object cached in memory.
    Specified by:
      `isCached` in class `DataStorage`
    Returns:
      `true` if this object is cached in memory, `false` if not.

  - ### 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`

  - ### implCopyFrom

    protected void implCopyFrom(DataStorage dataStorage, long size) throws ApfloatRuntimeException
    Description copied from class: `DataStorage`
    Copies the specified number of elements from another data storage to this data storage. The validity of the arguments of this method do not need to be checked.
    Specified by:
      `implCopyFrom` in class `DataStorage`
    Parameters:
      `dataStorage` - The data storage where the data should be copied from.
      `size` - The number of elements to be copied.
    Throws:
      `ApfloatRuntimeException`

  - ### implGetSize

    protected long implGetSize()
    Description copied from class: `DataStorage`
    Return the size of the whole data storage, not including sub-sequence settings.
    Specified by:
      `implGetSize` in class `DataStorage`
    Returns:
      The size of the whole data storage, not including sub-sequence settings.

  - ### implSetSize

    protected void implSetSize(long size) throws ApfloatRuntimeException
    Description copied from class: `DataStorage`
    Sets the size of the data storage. The validity of the arguments of this method do not need to be checked.
    Specified by:
      `implSetSize` in class `DataStorage`
    Parameters:
      `size` - The size of the 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`

  - ### implGetArray

    protected ArrayAccess implGetArray(int mode, int startColumn, int columns, int rows) throws ApfloatRuntimeException
    Description copied from class: `DataStorage`
    Maps a block of data to a memory array when the data is treated as a matrix. The validity of the arguments of this method do not need to be checked.
    Specified by:
      `implGetArray` in class `DataStorage`
    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 read.
      `columns` - The number of columns of data to read.
      `rows` - The number of rows of data to read. This should be equivalent to n1, number of rows in the matrix.
    Returns:
      Access to an array of size `columns` x `rows` containing the data.
    Throws:
      `ApfloatRuntimeException`

  - ### implGetTransposedArray

    protected ArrayAccess implGetTransposedArray(int mode, int startColumn, int columns, int rows) throws ApfloatRuntimeException
    Description copied from class: `DataStorage`
    Maps a transposed block of data to a memory array when the data is treated as a matrix. The validity of the arguments of this method do not need to be checked.
    Specified by:
      `implGetTransposedArray` in class `DataStorage`
    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 read.
      `columns` - The number of columns of data to read.
      `rows` - The number of rows of data to read. This should be equivalent to n1, number of rows in the matrix.
    Returns:
      Access to an array of size `columns` x `rows` containing the transposed data.
    Throws:
      `ApfloatRuntimeException`

  - ### 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`