windows-nt/Source/XPSP1/NT/shell/osshell/lmui/ntshrui/dlink.hxx
2020-09-26 16:20:57 +08:00

72 lines
1.6 KiB
C++

#if !defined __DLINK_HXX__
#define __DLINK_HXX__
//+---------------------------------------------------------------------------
//
// File: DLINK.HXX
//
// Contents: Parametrized doubly linked list and iterators
//
// History: 15-Jun-92 BartoszM Created.
//
//----------------------------------------------------------------------------
//+---------------------------------------------------------------------------
//
// Class: CDoubleLink
//
// Purpose: Linked element
//
// History: 15-Jun-92 BartoszM Created.
//
// Notes: Use as base for your class. No need to override anything.
//
// class CFoo: public CDoubleLink
// {
// // your data and code goes here
// };
//
//----------------------------------------------------------------------------
class CDoubleLink
{
public:
CDoubleLink* Next() { return _next; }
CDoubleLink* Prev() { return _prev; }
void Close() { _next = this; _prev = this; }
BOOL IsSingle() const { return _next == this; }
void Unlink()
{
_next->_prev = _prev;
_prev->_next = _next;
}
void InsertBefore ( CDoubleLink* pAfter )
{
CDoubleLink* pBefore = pAfter->_prev;
_next = pAfter;
_prev = pBefore;
pAfter->_prev = this;
pBefore->_next = this;
}
void InsertAfter ( CDoubleLink* pBefore )
{
CDoubleLink* pAfter = pBefore->_next;
_next = pAfter;
_prev = pBefore;
pAfter->_prev = this;
pBefore->_next = this;
}
protected:
CDoubleLink* _next;
CDoubleLink* _prev;
};
#endif