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

Constructor Summary
`FreeListBlock(RandomAccessInterface file, int startPage)`

Method Summary
`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`