Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*===================================================================
Microsoft Denali
Microsoft Confidential. Copyright 1996 Microsoft Corporation. All Rights Reserved.
Component: Hash table for Script Manager
File: DblList.h
Owner: DGottner
extremly simple, yet very flexible, linked list manager ===================================================================*/
#ifndef DBLLINK_H
#define DBLLINK_H
#ifdef LINKTEST
#define _DEBUG
#include <assert.h>
#define Assert assert
#else
#include "debug.h"
#endif
/* C D b l L i n k
* * This structure contains a set of links suitable for a doubly linked list * implementation. Here we actually use it as a circularly linked list - * the links are extracted into this file because the list headers are also * of this type. */
class CDblLink { public: CDblLink(); virtual ~CDblLink();
// manipulators
/////
void UnLink(); void AppendTo(CDblLink &); void PrependTo(CDblLink &);
// accessors
/////
CDblLink *PNext() const; CDblLink *PPrev() const;
// testers
/////
bool FIsEmpty() const; void AssertValid() const { #ifdef _DEBUG
Assert (this == m_pLinkPrev->m_pLinkNext && this == m_pLinkNext->m_pLinkPrev); #endif
}
private: CDblLink *m_pLinkNext, *m_pLinkPrev; };
inline CDblLink::CDblLink() { m_pLinkNext = m_pLinkPrev = this; } inline CDblLink::~CDblLink() { UnLink(); }
inline bool CDblLink::FIsEmpty() const { return this == m_pLinkNext; } inline CDblLink *CDblLink::PNext() const { return m_pLinkNext; } inline CDblLink *CDblLink::PPrev() const { return m_pLinkPrev; }
#endif // DBLLINK_H
|