CTCLHashTable
#include <TCLHashTableItem.h>
...
template <class T> // T Must have copy ctor & Assignment defined.
class CTCLHashTableItem
{
CTCLHashTableItem (T am_Item );
CTCLHashTableItem (const CTCLHashTableItem& aCTCLHashTableItem );
virtual ~CTCLHashTableItem ( );
CTCLHashTableItem operator= (const CTCLHashTableItem& aCTCLHashTableItem);
int operator== (const CTCLHashTableItem& aCTCLHashTableItem);
T getItem() const;
T* operator-> ();
}
Provides an object oriented interface to elements of a hash table. See CTCLHashTable(3), and the first REFERENCE below for more information about hash tables.
Note that this is a templated class. The template parameter is the type of the item to be stored in the hash table. Suppose, for example, we have a bunch of named calibration parameters (floating point) that are stored in a hash table. A calibration The following code creates the calibration table, and inserts an element named george in it with the initial value of 0.0:
CTCLHashTable<float> calibrationTable;
CTCLHashTableItem<float> entry(0.0);
calibrationTable.Enter(std::string("george"), entry);
CTCLHashTableItem(TItem);CTCLHashTableItem(const CTCLHashTableItem&hashItem);
Constructs a CTCLHashTableItem either from the underlying
type (Item) or from an existing CTCLHashTableItem
(hashItem).
CTCLHashTableItemoperator=(const CTCLHashTableItem&rhs); intoperator==(const CTCLHashTableItem& rhs);
operator= allows you to assign the value of one
CTCLHashTableItem to another. The underlying
templated type must be capable of assignment.
operator== allows you to compare two
CTCLHashTableItems to each other. The underlying
templated type must be capable of equality comparison.
T getItem() const;
Returns the value of the item wrapped by the CTCLHashTableItem
The underlying type must be capable of copy construction.
T* operator-> ();
Returns the address of the contents of the CTCLHashTableItem.
This is most useful if T is a structure or class as it can be
used to dereference member (data or functions) of the structure or class.
For example:
struct complex {
double real;
double imaginary;
complex(double r, double i) :
real(r), imaginary(i) {}
} complex;
CTCLHashTableItem<complex> v(1.0, 2.0);
double real = v->real; // real = 1.0
double imag = v->imaginary; // imag = 2.0