casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Private Member Functions | Private Attributes
casa::SSMIndex Class Reference

The bucket index for a group of columns in the Standard Storage Manager. More...

#include <SSMIndex.h>

List of all members.

Public Member Functions

 SSMIndex (SSMBase *aPtrSSM, uInt rowsPerBucket=0)
 Create the object with the given number of rows per bucket.
 ~SSMIndex ()
void get (AipsIO &anOs)
 Read the bucket index from the AipsIO object.
void put (AipsIO &anOs) const
 Write the bucket index into the AipsIO object.
void recreate ()
 Recreate the object in case all rows are deleted from the table.
Vector< uIntgetBuckets () const
 Return all the bucketnrs used in this index.
uInt getNrBuckets () const
 Return the nr of buckets used.
void setNrColumns (Int aNrColumns, uInt aSizeUsed)
 Set nr of columns use this index.
void addRow (uInt aNrRows)
 Add some rows.
void showStatistics (ostream &anOs) const
 Show Statistics of index.
Int removeColumn (Int anOffset, uInt nbits)
 A column is removed.
Int getFree (Int &anOffset, uInt nbits) const
 Try to find free space for a field with a given length (best fit).
void addColumn (Int anOffset, uInt nbits)
 reuse the space at offset for a field with the given nr of bits.
Int deleteRow (uInt aRowNumber)
 Delete the given row.
uInt getRowsPerBucket () const
 Get the number of rows that fits in ach bucket.
void find (uInt aRowNumber, uInt &aBucketNr, uInt &aStartRow, uInt &anEndRow) const
 Find the bucket containing the given row.

Private Member Functions

uInt getIndex (uInt aRowNr) const
 Get the index of the bucket containing the given row.

Private Attributes

SSMBaseitsSSMPtr
uInt itsNUsed
Block< uIntitsLastRow
Block< uIntitsBucketNumber
SimpleOrderedMap< Int, IntitsFreeSpace
uInt itsRowsPerBucket
Int itsNrColumns

Detailed Description

The bucket index for a group of columns in the Standard Storage Manager.

Intended use:

Internal

Review Status

Reviewed By:
UNKNOWN
Date Reviewed:
before2004/08/25
Test programs:
tStandardStMan

Prerequisite

Etymology

SSMIndex represent the bucket index in the Standard Storage Manager.

Synopsis

In SSMBase it is described that an index is used to map row number to data bucket in a bucket stream. This class implements this index. It serves 2 purposes:

  1. It keeps a block of row numbers giving the last row number stored in each data bucket.
    Note that each bucket does not need to contain the same number of rows, because rows might be deleted from it. When all rows are deleted from a bucket, the bucket is removed from the index and added to the free bucket list.
  2. When a column is deleted, the bucket will have a hole. SSMIndex maintains a map to know the size and offset of each hole. Adjacent holes are combined. When a new column is added SSMBase will scan the SSMIndex objects to find the hole fitting best.

To Do

Definition at line 86 of file SSMIndex.h.


Constructor & Destructor Documentation

casa::SSMIndex::SSMIndex ( SSMBase aPtrSSM,
uInt  rowsPerBucket = 0 
) [explicit]

Create the object with the given number of rows per bucket.

Note that the default is needed to create the object for existing tables.


Member Function Documentation

void casa::SSMIndex::addColumn ( Int  anOffset,
uInt  nbits 
)

reuse the space at offset for a field with the given nr of bits.

This is used when column has been added to this bucket.

void casa::SSMIndex::addRow ( uInt  aNrRows)

Add some rows.

Delete the given row.

void casa::SSMIndex::find ( uInt  aRowNumber,
uInt aBucketNr,
uInt aStartRow,
uInt anEndRow 
) const

Find the bucket containing the given row.

An exception is thrown if not found. It also sets the first and last row number fitting in that bucket.

void casa::SSMIndex::get ( AipsIO anOs)

Read the bucket index from the AipsIO object.

Return all the bucketnrs used in this index.

Int casa::SSMIndex::getFree ( Int anOffset,
uInt  nbits 
) const

Try to find free space for a field with a given length (best fit).

-1 is returned if no fit is found. Otherwise it returns the nr of bytes left unused.

uInt casa::SSMIndex::getIndex ( uInt  aRowNr) const [private]

Get the index of the bucket containing the given row.

Return the nr of buckets used.

Get the number of rows that fits in ach bucket.

Definition at line 176 of file SSMIndex.h.

References itsRowsPerBucket.

void casa::SSMIndex::put ( AipsIO anOs) const

Write the bucket index into the AipsIO object.

Recreate the object in case all rows are deleted from the table.

Int casa::SSMIndex::removeColumn ( Int  anOffset,
uInt  nbits 
)

A column is removed.

Set the free space at offset for a field with the given nr of bits. It returns the nr of columns still used in this index.

void casa::SSMIndex::setNrColumns ( Int  aNrColumns,
uInt  aSizeUsed 
)

Set nr of columns use this index.

void casa::SSMIndex::showStatistics ( ostream &  anOs) const

Show Statistics of index.


Member Data Documentation

Definition at line 163 of file SSMIndex.h.

Definition at line 166 of file SSMIndex.h.

Definition at line 158 of file SSMIndex.h.

Definition at line 172 of file SSMIndex.h.

Definition at line 155 of file SSMIndex.h.

Definition at line 169 of file SSMIndex.h.

Referenced by getRowsPerBucket().

Definition at line 152 of file SSMIndex.h.


The documentation for this class was generated from the following file: