# Class EmptyRowSequence

java.lang.Object
uk.ac.starlink.table.EmptyRowSequence

All Implemented Interfaces:
  `Closeable, AutoCloseable, RowAccess, RowData, RowSequence, RowSplittable, uk.ac.starlink.util.Sequence, uk.ac.starlink.util.Splittable<RowSplittable>`

public class EmptyRowSequence extends Object implements RowSplittable, RowAccess
Implementation of both RowSequence and RowAccess which has no rows. Singleton class.

Since:
  28 Oct 2004
Author:
  Mark Taylor (Starlink)

## Method Summary

Modifier and Type
Method
Description
`void`
`close()`
Does nothing.
`Object`
`getCell(int icol)`
Always throws IllegalStateException.
`static EmptyRowSequence`
`getInstance()`
Returns singleton instance of this class.
`Object[]`
`getRow()`
Always throws IllegalStateException.
`boolean`
`next()`
Always returns false.
`LongSupplier`
`rowIndex()`
Returns a supplier for the index of the row currently being processed, if possible.
`void`
`setRowIndex(long irow)`
Sets the row index to which subsequent data accesses will refer.
`RowSplittable`
`split()`
`long`
`splittableSize()`

### Methods inherited from class Object

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

## Method Details

### next

public boolean next()
Always returns false.

Specified by:
  `next` in interface `RowSequence`
Specified by:
  `next` in interface `uk.ac.starlink.util.Sequence`
Returns:
  `true` iff this sequence has been advanced to the next row

### setRowIndex

public void setRowIndex(long irow)
Description copied from interface: `RowAccess`
Sets the row index to which subsequent data accesses will refer.

This method must be called before the first invocation of `RowAccess.getCell(int)`/`RowAccess.getRow()`, otherwise behaviour is undefined (but implementations will likely throw an unchecked exception on subsequent getCell/getRow calls). The effect of setting the value to an out of range value is undefined; it may throw an exception here, or during subsequent calls, or behave otherwise.

Specified by:
  `setRowIndex` in interface `RowAccess`
Parameters:
  `irow` - row index

### rowIndex

public LongSupplier rowIndex()
Description copied from interface: `RowSplittable`
Returns a supplier for the index of the row currently being processed, if possible. The row index is a global value; when accessing the first row of a top-level RowSplittable, the value returned by this supplier should be the first index in the table. But for objects resulting from splitting a top-level instance into sub-instances, the return value should reflect the index in the original sequence of rows; each index should be returned from only one of the splittables resulting from splitting a top-level instance.

Typically, the row index will start at 0 and increment for each row, but the numbering may be different depending on the requirements of the implementation or usage.

Before the `RowSequence.next()` method has been called, the return value will be one less than the first row index. After `RowSequence.next` has returned false, the value is undefined.

Depending on the implementation, it may not be possible to determine the row index (for instance if the sequence is split into sub-splittables of unknown size). In such cases, this method returns null. The null-ness of the return value must be the same for all instances of the splittable hierarchy for a given sequence, so don't return a non-null value for the first splittable and then null values for some or all of its children.

Specified by:
  `rowIndex` in interface `RowSplittable`
Returns:
  supplier for the globally-referenced row index value of the current row of this sequence, or null

### split

public RowSplittable split()

Specified by:
  `split` in interface `uk.ac.starlink.util.Splittable<RowSplittable>`

### splittableSize

public long splittableSize()

Specified by:
  `splittableSize` in interface `uk.ac.starlink.util.Splittable<RowSplittable>`

### getCell

public Object getCell(int icol)
Always throws IllegalStateException.

Specified by:
  `getCell` in interface `RowAccess`
Specified by:
  `getCell` in interface `RowData`
Specified by:
  `getCell` in interface `RowSequence`
Parameters:
  `icol` - column index
Returns:
  the contents of cell `icol` in the current row

### getRow

public Object[] getRow()
Always throws IllegalStateException.

Specified by:
  `getRow` in interface `RowAccess`
Specified by:
  `getRow` in interface `RowData`
Specified by:
  `getRow` in interface `RowSequence`
Returns:
  an array of the objects in each cell in row `irow`

### close

public void close()
Does nothing.

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Closeable`
Specified by:
  `close` in interface `RowAccess`
Specified by:
  `close` in interface `RowSequence`

### getInstance

public static EmptyRowSequence getInstance()
Returns singleton instance of this class.

Returns:
  instance