ISMIndex.h
Classes
- ISMIndex -- The Index of the Incremental Storage Manager (full description)
Interface
- Public Members
- explicit ISMIndex (ISMBase* parent)
- ~ISMIndex()
- void addRow (uInt nrrow)
- Int removeRow (uInt rownr)
- uInt getBucketNr (uInt rownr, uInt& bucketStartRow, uInt& bucketNrrow) const
- void get (AipsIO& os)
- void put (AipsIO& os)
- void addBucketNr (uInt rownr, uInt bucketNr)
- Bool nextBucketNr (uInt& cursor, uInt& bucketStartRow, uInt& bucketNrrow, uInt& bucketNr) const
- Private Members
- ISMIndex (const ISMIndex&)
- ISMIndex& operator= (const ISMIndex&)
- uInt getIndex (uInt rownr) const
Prerequisite
Etymology
ISMIndex represents the index in the Incremental Storage Manager.
Synopsis
ISMIndex maintains an index of all buckets in an ISM (Incremental Storage
Manager). The index consists of the starting row number and the
bucket number of each bucket in the BucketCache object of the ISM.
When the ISM is opened, the entire index is read in and kept in memory.
When the ISM is closed or flushed, the index is written back after
all buckets in the file. A little header at the beginning of the file
indicates the starting offset of the index.
Motivation
ISMIndex encapsulates all operations on the ISM index.
Member Description
explicit ISMIndex (ISMBase* parent)
Create a ISMIndex object with the given parent for a new table.
It keeps the pointer to its parent (but does not own it).
The destructor closes the file (if opened).
void addRow (uInt nrrow)
Add a row.
Remove a row from the index.
If the result of this is that the entire bucket gets empty,
that bucketnr is returned. Otherwise -1 is returned.
uInt getBucketNr (uInt rownr, uInt& bucketStartRow, uInt& bucketNrrow) const
Get the bucket number for the given row.
Also return the start row of the bucket and the number of rows in it.
Read the bucket index from the AipsIO object.
Write the bucket index into the AipsIO object.
void addBucketNr (uInt rownr, uInt bucketNr)
Add a bucket number to the index.
Argument rownr gives the starting row of the bucket.
It is used to add the bucket number at the correct place
(such that the row numbers are kept in ascending order).
Bool nextBucketNr (uInt& cursor, uInt& bucketStartRow, uInt& bucketNrrow, uInt& bucketNr) const
Get the number of the next bucket from the index and return
it in bucketNr. The starting row of that bucket and
the number of rows in the bucket are also returned.
Return status False indicates that no more buckets are available.
The start of the iteration is indicated by cursor=0.
The first bucket returned is the bucket containing the rownr
given in bucketStartRow (thus set bucketStartRow
to 0 if you to start at the first bucket).
The next iterations return the next bucket number and fill
the starting row and number of rows.
ISMIndex (const ISMIndex&)
Forbid copy constructor.
ISMIndex& operator= (const ISMIndex&)
Forbid assignment.
uInt getIndex (uInt rownr) const
Get the index of the bucket containing the given row.