#include <ColumnCache.h>
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 82 of file 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 |
| casa::ColumnCache::ColumnCache | ( | ) |
Constructor.
It sets the increment to 1 and calls invalidate.
| void casa::ColumnCache::setIncrement | ( | uInt | increment | ) | [inline] |
Set the increment to the given value.
Definition at line 123 of file ColumnCache.h.
References itsIncr.
Set the start and end row number for which the given data pointer is valid.
Referenced by invalidate().
| void casa::ColumnCache::invalidate | ( | ) | [inline] |
Invalidate the cache.
This clears the data pointer and sets startRow>endRow.
Definition at line 128 of file ColumnCache.h.
References set().
Calculate the offset in the cached data for the given row.
-1 is returned when the row is not within the cached rows.
Definition at line 133 of file ColumnCache.h.
References itsEnd, itsIncr, and itsStart.
Referenced by casa::ROScalarColumn< std::complex< Float > >::get().
| 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 139 of file ColumnCache.h.
References itsData.
Referenced by casa::ROScalarColumn< std::complex< Float > >::get().
| uInt casa::ColumnCache::start | ( | ) | const [inline] |
Give the start, end (including), and increment row number of the cached column values.
Definition at line 111 of file ColumnCache.h.
References itsStart.
| uInt casa::ColumnCache::end | ( | ) | const [inline] |
| uInt casa::ColumnCache::incr | ( | ) | const [inline] |
uInt casa::ColumnCache::itsStart [private] |
uInt casa::ColumnCache::itsEnd [private] |
uInt casa::ColumnCache::itsIncr [private] |
const void* casa::ColumnCache::itsData [private] |
1.5.1