windows-nt/Source/XPSP1/NT/inetsrv/iis/admin/adsi/adsiis/sdict.hxx
2020-09-26 16:20:57 +08:00

96 lines
3.2 KiB
C++

//---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1996 - 1997
//
// File: sdict.hxx
//
// Contents: simple dictionary
//
// History: 28-Feb-97 SophiaC Created.
//
//----------------------------------------------------------------------------
#ifndef __SDICT_HXX__
#define __SDICT_HXX__
#define INITIALDICTSLOTS 5
class SIMPLE_DICT
{
private:
void * * DictSlots;
int cDictSlots;
int cDictSize;
int iNextItem;
void * InitialDictSlots[INITIALDICTSLOTS];
public:
SIMPLE_DICT ( // Constructor.
);
~SIMPLE_DICT ( // Destructor.
);
int // Return the key in the dictionary for the item just inserted.
Insert ( // Insert an item in the dictionary and return its key.
void *Item // The item to insert.
);
void * // Returns the item if found, and 0 otherwise.
Find ( // Find an item in the dictionary.
int Key // The key of the item.
);
void * // Returns the item being deleted.
Delete ( // Delete an item from the dictionary.
int Key // The key of the item being deleted.
);
int // Returns the number of items in the dictionary.
Size ( // Returns the number of items in the dictionary.
) {return(cDictSize);}
void
Reset ( // Resets the dictionary, so that when Next is called,
// the first item will be returned.
) {iNextItem = 0;}
void * // Returns the next item or 0 if at the end.
Next (
);
void *
DeleteItemByBruteForce(
void * Item
);
};
#define NEW_SDICT(TYPE) \
\
class TYPE; \
\
class TYPE##_DICT : public SIMPLE_DICT \
{ \
public: \
\
TYPE##_DICT () {} \
~TYPE##_DICT () {} \
\
TYPE * \
Find (int Key) \
{return((TYPE *) SIMPLE_DICT::Find(Key));} \
\
TYPE * \
Delete (int Key) \
{return((TYPE *) SIMPLE_DICT::Delete(Key));} \
\
TYPE * \
Next () \
{return((TYPE *) SIMPLE_DICT::Next());} \
}
#endif // __SDICT_HXX__