class cls :
public PAbstractDictionary { \
PCLASSINFO(cls,
PAbstractDictionary); \
protected: \
inline cls(
int dummy,
const cls * c) \
:
PAbstractDictionary(dummy, c) { } \
public: \
inline cls() \
:
PAbstractDictionary() { } \
virtual PObject * Clone() const \
{
return PNEW cls(0,
this); } \
inline PINDEX operator[](
const K & key)
const \
{
return (
POrdinalKey &)GetRefAt(key); } \
virtual BOOL Contains(
const K & key)
const \
{
return AbstractContains(key); } \
virtual POrdinalKey * GetAt(
const K & key)
const \
{
return (
POrdinalKey *)AbstractGetAt(key); } \
virtual BOOL SetDataAt(PINDEX index, PINDEX ordinal) \
{
return PAbstractDictionary::SetDataAt(index, PNEW
POrdinalKey(ordinal)); } \
virtual BOOL SetAt(
const K & key, PINDEX ordinal) \
{
return AbstractSetAt(key, PNEW
POrdinalKey(ordinal)); } \
virtual PINDEX RemoveAt(
const K & key) \
{ PINDEX ord = *GetAt(key); AbstractSetAt(key, NULL);
return ord; } \
inline const K & GetKeyAt(PINDEX index)
const \
{
return (
const K &)AbstractGetKeyAt(index); } \
inline PINDEX GetDataAt(PINDEX index)
const \
{
return (
POrdinalKey &)AbstractGetDataAt(index); } \
}