Package nom.tam.fits

Class FitsHeap

java.lang.Object
nom.tam.fits.FitsHeap
All Implemented Interfaces:
FitsElement

public class FitsHeap extends Object implements FitsElement
This class supports the FITS heap. This is currently used for variable length columns in binary tables.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    A stream used to read the heap data
    private byte[]
    The storage buffer
    private int
    Our current offset into the heap.
    private int
    The current used size of the buffer invalid input: '<'= heap.length
    private static final int
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    FitsHeap(int size)
    Create a heap of a given size.
  • Method Summary

    Modifier and Type
    Method
    Description
    private void
     
    (package private) FitsHeap
    Add a copy constructor to allow us to duplicate a heap.
    (package private) void
    expandHeap(int need)
    Check if the Heap can accommodate a given requirement.
    void
    getData(int offset, Object array)
    Get data from the heap.
    long
    Get the file offset of the heap
    long
    Return the size of the heap using the more bean compatible format
    (package private) int
    Add some data to the heap.
    void
    Read the heap
    boolean
    Reset the input stream to point to the beginning of this element
    void
    Rewrite the contents of the element in place.
    boolean
     
    int
     
    void
    Write the heap

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • MINIMUM_HEAP_SIZE

      private static final int MINIMUM_HEAP_SIZE
      See Also:
    • heap

      private byte[] heap
      The storage buffer
    • heapSize

      private int heapSize
      The current used size of the buffer invalid input: '<'= heap.length
    • heapOffset

      private int heapOffset
      Our current offset into the heap. When we read from the heap we use a byte array input stream. So long as we continue to read further into the heap, we can continue to use the same stream, but we need to recreate the stream whenever we skip backwards.
    • bstr

      A stream used to read the heap data
  • Constructor Details

    • FitsHeap

      FitsHeap(int size)
      Create a heap of a given size.
  • Method Details

    • allocate

      private void allocate()
    • copy

      FitsHeap copy()
      Add a copy constructor to allow us to duplicate a heap. This would be necessary if we wanted to copy an HDU that included variable length columns.
    • expandHeap

      void expandHeap(int need)
      Check if the Heap can accommodate a given requirement. If not expand the heap.
    • getData

      public void getData(int offset, Object array) throws FitsException
      Get data from the heap.
      Parameters:
      offset - The offset at which the data begins.
      array - The array to be extracted.
      Throws:
      FitsException - if the operation failed
    • getFileOffset

      public long getFileOffset()
      Get the file offset of the heap
      Specified by:
      getFileOffset in interface FitsElement
      Returns:
      the byte at which this element begins. This is only available if the data is originally read from a random access medium.
    • getSize

      public long getSize()
      Return the size of the heap using the more bean compatible format
      Specified by:
      getSize in interface FitsElement
      Returns:
      The size of this element in bytes
    • putData

      int putData(Object data) throws FitsException
      Add some data to the heap.
      Throws:
      FitsException
    • read

      public void read(ArrayDataInput str) throws FitsException
      Read the heap
      Specified by:
      read in interface FitsElement
      Parameters:
      str - The input data stream
      Throws:
      FitsException - if the read was unsuccessful.
    • reset

      public boolean reset()
      Description copied from interface: FitsElement
      Reset the input stream to point to the beginning of this element
      Specified by:
      reset in interface FitsElement
      Returns:
      True if the reset succeeded.
    • rewrite

      public void rewrite() throws IOException, FitsException
      Description copied from interface: FitsElement
      Rewrite the contents of the element in place. The data must have been originally read from a random access device, and the size of the element may not have changed.
      Specified by:
      rewrite in interface FitsElement
      Throws:
      IOException - if the rewrite was unsuccessful.
      FitsException - if the rewrite was unsuccessful.
    • rewriteable

      public boolean rewriteable()
      Specified by:
      rewriteable in interface FitsElement
      Returns:
      true if this element can be rewritten?
    • size

      public int size()
      Returns:
      the size of the Heap
    • write

      public void write(ArrayDataOutput str) throws FitsException
      Write the heap
      Specified by:
      write in interface FitsElement
      Parameters:
      str - The data sink.
      Throws:
      FitsException - if the write was unsuccessful.