#ifndef __LISTSTRING_H__ #define __LISTSTRING_H__ #include "datalibx.h" ////////////////////////////////////////////////////////////////////////////// // CListString Class // // This class does not take responsibility for deleting the data indexed by it class CListIterString; class CListString { public: friend class CListIterString; public: CListString(); ~CListString(); BOOL Init(); protected: VOID Uninit(); public: // Insertion Functions inline VOID *Insert(VOID *pData, const CHAR *pcKey); VOID *InsertForward(VOID *pData, const CHAR *pcKey); VOID *InsertBackward(VOID *pData, const CHAR *pcKey); VOID *InsertFirst(VOID *pData, const CHAR *pcKey); VOID *InsertLast(VOID *pData, const CHAR *pcKey); // Deletion Functions inline VOID *Remove(const CHAR *pcKey); VOID *RemoveForward(const CHAR *pcKey); VOID *RemoveBackward(const CHAR *pcKey); VOID *RemoveFirst(const CHAR **ppcKey = NULL); VOID *RemoveLast(const CHAR **ppcKey = NULL); VOID RemoveAll(); // Look up Functions inline VOID *Peek(const CHAR *pcKey) const; VOID *PeekForward(const CHAR *pcKey) const; VOID *PeekBackward(const CHAR *pcKey) const; VOID *PeekFirst(const CHAR **ppcKey = NULL) const; VOID *PeekLast(const CHAR **ppcKey = NULL) const; #define SORT_ENABLED #ifdef SORT_ENABLED // Sorting Functions BOOL Sort(); // This preforms a Merge Sort #endif // SORT_ENABLED // Display Functions VOID Display(); //Inlined Functions public: UINT_32 GetLength(); protected: VOID *m_pCList; }; ////////////////////////////////////////////////// // Inlined Functions // inline VOID *CListString::Insert(VOID *pvData, const CHAR *pcKey) { return InsertForward(pvData, pcKey); } inline VOID *CListString::Remove(const CHAR *pcKey) { return RemoveForward(pcKey); } inline VOID *CListString::Peek(const CHAR *pcKey) const { return PeekForward(pcKey); } ////////////////////////////////////////////////////////////////////////////// // CListIterString Class // class CListIterString { public: CListIterString(); ~CListIterString(); BOOL Init(CListString *pCListString); protected: VOID Uninit(); public: // Iteration Functions VOID *Peek(const CHAR *pcKey); VOID *PeekForward(const CHAR *pcKey); VOID *PeekBackward(const CHAR *pcKey); VOID *PeekFirst(const CHAR **ppcKey = NULL); VOID *PeekNext(const CHAR **ppcKey = NULL); VOID *PeekLast(const CHAR **ppcKey = NULL); VOID *PeekPrev(const CHAR **ppcKey = NULL); protected: VOID *m_pCListIter; }; ////////////////////////////////////////////////// // Inlined Functions // inline VOID *CListIterString::Peek(const CHAR *pcKey) { return PeekForward(pcKey); } #endif // __LISTSTRING_H__