net.metanotion.io.block

## Class FreeListBlock

- java.lang.Object
- - net.metanotion.io.block.FreeListBlock

     class FreeListBlock
    extends Object

On-disk format:

        Magic number (long)
        next freelist block page (unsigned int)
        size (unsigned int)
        that many free pages (unsigned ints)

Always fits on one page. Free page format:

        Magic number (long)

### Field Summary

Fields
`int` `page`

### Constructor Summary

Constructors
Constructor and Description
`FreeListBlock(RandomAccessInterface file, int startPage)`

### Method Summary

Methods
`void` `addPage(int freePage)` Adds free page and writes new len to disk
`int` `getNextPage()`
`static void` `initPage(RandomAccessInterface file, int page)`
`boolean` `isEmpty()`
`boolean` `isFull()`
`void` `setNextPage(int nxt)` Set and write the next page only
`int` `takePage()` Takes next page and writes new len to disk
`String` `toString()`
`void` `writeBlock()`

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

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

### Field Detail

#### page

    public final int page

### Constructor Detail

#### FreeListBlock

    public FreeListBlock(RandomAccessInterface file,
                 int startPage)
                  throws IOException

Throws:
  `IOException`

### Method Detail

#### writeBlock

    public void writeBlock()
                    throws IOException

Throws:
  `IOException`

#### getNextPage

    public int getNextPage()

#### setNextPage

    public void setNextPage(int nxt)
                     throws IOException

Set and write the next page only

Throws:
  `IOException`

#### isEmpty

    public boolean isEmpty()

#### isFull

    public boolean isFull()

#### addPage

    public void addPage(int freePage)
                 throws IOException

Adds free page and writes new len to disk

Throws:
  `IllegalStateException` - if full
  `IOException`

#### takePage

    public int takePage()
                 throws IOException

Takes next page and writes new len to disk

Throws:
  `IllegalStateException` - if empty
  `IOException`

#### initPage

    public static void initPage(RandomAccessInterface file,
                int page)
                         throws IOException

Throws:
  `IOException`

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`