casa
$Rev:20696$
|
A caching object for a table column. More...
#include <ColumnCache.h>
Public Member Functions | |
ColumnCache () | |
Constructor. | |
void | setIncrement (uInt increment) |
Set the increment to the given value. | |
void | set (uInt startRow, uInt endRow, const void *dataPtr) |
Set the start and end row number for which the given data pointer is valid. | |
void | invalidate () |
Invalidate the cache. | |
Int | offset (uInt rownr) const |
Calculate the offset in the cached data for the given row. | |
const void * | dataPtr () const |
Give a pointer to the data. | |
uInt | start () const |
Give the start, end (including), and increment row number of the cached column values. | |
uInt | end () const |
uInt | incr () const |
Private Attributes | |
uInt | itsStart |
uInt | itsEnd |
uInt | itsIncr |
const void * | itsData |
A caching object for a table column.
Internal
ColumnCache acts as a cache for a table column. It contains a pointer to data and the start and end row number for which these data are valid. An increment is part of the object and is usually 0 or 1. The value 0 is used for data which is valid for multiple rows (as used in IncrementalStMan ). The value 1 is used for data stored consecutevily in a buffer for each row (as used in StManAipsIO ).
The ColumnCache object is created and updated by the data manager. The top level ScalarColumn object contains a pointer to the cache object. In this way the ScalarColumn::get
can often be executed by a few inlined statements which improves performance considerably.
The invalidate
function can be used to invalidate the cache. This is for instance needed when a table lock is acquired or released to be sure that the cache gets refreshed.
This class was developed to improve the performance for getting a scalar.
Definition at line 83 of file ColumnCache.h.
Constructor.
It sets the increment to 1 and calls invalidate.
const void * casa::ColumnCache::dataPtr | ( | ) | const [inline] |
Give a pointer to the data.
The calling function has to do a proper cast after which the calculated offset can be added to get the proper data.
Definition at line 140 of file ColumnCache.h.
References itsData.
Referenced by casa::ScalarColumn< Complex >::get().
uInt casa::ColumnCache::end | ( | ) | const [inline] |
Definition at line 113 of file ColumnCache.h.
References itsEnd.
uInt casa::ColumnCache::incr | ( | ) | const [inline] |
Definition at line 114 of file ColumnCache.h.
References itsIncr.
void casa::ColumnCache::invalidate | ( | ) | [inline] |
Invalidate the cache.
This clears the data pointer and sets startRow>endRow.
Definition at line 129 of file ColumnCache.h.
Int casa::ColumnCache::offset | ( | uInt | rownr | ) | const [inline] |
Calculate the offset in the cached data for the given row.
-1 is returned if the row is not within the cached rows.
Definition at line 134 of file ColumnCache.h.
References itsEnd, itsIncr, and itsStart.
Referenced by casa::ScalarColumn< Complex >::get().
void casa::ColumnCache::set | ( | uInt | startRow, |
uInt | endRow, | ||
const void * | dataPtr | ||
) |
Set the start and end row number for which the given data pointer is valid.
void casa::ColumnCache::setIncrement | ( | uInt | increment | ) | [inline] |
Set the increment to the given value.
Definition at line 124 of file ColumnCache.h.
References itsIncr.
uInt casa::ColumnCache::start | ( | ) | const [inline] |
Give the start, end (including), and increment row number of the cached column values.
Definition at line 112 of file ColumnCache.h.
References itsStart.
const void* casa::ColumnCache::itsData [private] |
Definition at line 120 of file ColumnCache.h.
Referenced by dataPtr().
uInt casa::ColumnCache::itsEnd [private] |
Definition at line 118 of file ColumnCache.h.
uInt casa::ColumnCache::itsIncr [private] |
Definition at line 119 of file ColumnCache.h.
Referenced by incr(), offset(), and setIncrement().
uInt casa::ColumnCache::itsStart [private] |
Definition at line 117 of file ColumnCache.h.