/*++ Copyright (c) 1998-1999 Microsoft Corporation All rights reserved. Module Name: dbglist.hxx Abstract: Debug List header Author: Steve Kiraly (SteveKi) 7-Apr-1996 Revision History: --*/ #ifndef _DBGLIST_HXX_ #define _DBGLIST_HXX_ DEBUG_NS_BEGIN /******************************************************************** Debug node class. ( Singly linked list ) ********************************************************************/ class TDebugNodeSingle { public: TDebugNodeSingle( VOID ); virtual ~TDebugNodeSingle( VOID ); TDebugNodeSingle* Next( VOID ) const; VOID Insert( IN OUT TDebugNodeSingle **pRoot ); VOID Remove( IN OUT TDebugNodeSingle **pRoot ); private: // // Copying and assignment are not defined. // TDebugNodeSingle( const TDebugNodeSingle &rhs ); const TDebugNodeSingle & operator=( const TDebugNodeSingle &rhs ); TDebugNodeSingle *_pNext; }; /******************************************************************** Debug node class. ( Doubbly linked list ) ********************************************************************/ class TDebugNodeDouble { public: TDebugNodeDouble( VOID ); virtual ~TDebugNodeDouble( VOID ); TDebugNodeDouble * Next( VOID ) const; TDebugNodeDouble * Prev( VOID ) const; VOID Close( VOID ); BOOL IsSingle( VOID ) const; VOID Remove( IN OUT TDebugNodeDouble **ppRoot ); VOID Insert( IN OUT TDebugNodeDouble **ppRoot ); VOID InsertBefore( IN OUT TDebugNodeDouble **ppRoot, IN TDebugNodeDouble *pAfter ); VOID InsertAfter( IN OUT TDebugNodeDouble **ppRoot, IN TDebugNodeDouble *pBefore ); static VOID Concatinate( TDebugNodeDouble **ppRoot1, TDebugNodeDouble **ppRoot2 ); class Iterator { public: Iterator( TDebugNodeDouble *pRoot ); ~Iterator( VOID ); VOID First( VOID ); VOID Next( VOID ); BOOL IsDone( VOID ); TDebugNodeDouble * Current( VOID ); private: // // Copying and assignment are not defined. // Iterator( const Iterator &rhs ); const Iterator & operator=( const Iterator &rhs ); TDebugNodeDouble *_pRoot; TDebugNodeDouble *_pCurrent; }; private: // // Copying and assignment are not defined. // TDebugNodeDouble( const TDebugNodeDouble &rhs ); const TDebugNodeDouble & operator=( const TDebugNodeDouble &rhs ); TDebugNodeDouble *_pNext; TDebugNodeDouble *_pPrev; }; DEBUG_NS_END #endif