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.