ColumnCache.h

Classes

ColumnCache -- A caching object for a table column. (full description)

class ColumnCache

Interface

Public Members
ColumnCache()
void setIncrement (uInt increment)
void set (uInt startRow, uInt endRow, const void* dataPtr)
void invalidate()
Int offset (uInt rownr) const
const void* dataPtr() const
uInt start() const
uInt end() const
uInt incr() const

Description

Review Status

Reviewed By:
UNKNOWN
Date Reviewed:
before2004/08/25

Prerequisite

Synopsis

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.

Motivation

This class was developed to improve the performance for getting a scalar.

Member Description

ColumnCache()

Constructor. It sets the increment to 1 and calls invalidate.

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. This clears the data pointer and sets startRow>endRow.

Int offset (uInt rownr) const

Calculate the offset in the cached data for the given row. -1 is returned when the row is not within the cached rows.

const void* dataPtr() const

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.

uInt start() const

Give the start, end (including), and increment row number of the cached column values.

uInt end() const

uInt incr() const