This document describes how to implement TKey derived classes.
The constructors are used to set the following information:
the key offset
the type of comparison to be made between keys
the length of the key (for text type keys only).
For example:
TKeyDerived::TKeyDerived(TInt anOffset,TKeyCmpText aType) : TKey(anOffset,aType) {}
TKeyDerived::TKeyDerived(TInt anOffset,TKeyCmpText aType,TInt aLength) : TKey(anOffset,aType,aLength) {}
TKeyDerived::TKeyDerived(TInt anOffset,TKeyCmpNumeric aType) : TKey(anOffset,aType) {}
A typical implementation
of the virtual function At()
, which gets a pointer to the
key of an element corresponding to a given index, might be structured:
TAny* TKeyDerived::At(TInt anIndex) const { if (anIndex==KIndexPtr) { return((TUint8 *)iPtr+iKeyOffset); } // // code to return a pointer to the key in the appropriate element // }
The derived class will need to have a pointer to the array
it represents. At the very least, the derived class will need a data member
for this pointer and, possibly, a member function to set it. This is needed
in order to implement the At()
function.
TKey
and
derived classes use untyped pointers, i.e. pointers of type TAny*
.
It may be desirable to provide type safety by further deriving a templated
class.