windows-nt/Source/XPSP1/NT/com/ole32/stg/h/dblink.hxx
2020-09-26 16:20:57 +08:00

127 lines
2.9 KiB
C++

//+--------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1992.
//
// File: dblink.hxx
//
// Contents: Doubly-linked list element
//
// Classes: CDlElement
//
// History: 28-Jul-92 DrewB Created
//
//---------------------------------------------------------------
#ifndef __DBLINK_HXX__
#define __DBLINK_HXX__
class CDlElement;
SAFE_DFBASED_PTR(CBasedDlElementPtr, CDlElement);
//+--------------------------------------------------------------
//
// Class: CDlElement (dle)
//
// Purpose: An element of a doubly-linked list
//
// Interface: See below
//
// History: 28-Jul-92 DrewB Created
//
//---------------------------------------------------------------
class CDlElement
{
public:
inline CDlElement(void);
inline CDlElement *_GetNext(void) const;
inline void SetNext(CDlElement *pdle);
inline CDlElement *_GetPrev(void) const;
inline void SetPrev(CDlElement *pdle);
protected:
CBasedDlElementPtr _pdlePrev, _pdleNext;
};
//+--------------------------------------------------------------
//
// Member: CDlElement::CDlElement, public
//
// Synopsis: Ctor
//
// History: 28-Jul-92 DrewB Created
//
//---------------------------------------------------------------
inline CDlElement::CDlElement(void)
{
_pdlePrev = _pdleNext = NULL;
}
//+--------------------------------------------------------------
//
// Member: CDlElement::_GetNext, public
//
// Synopsis: Returns _pdleNext
//
// History: 28-Jul-92 DrewB Created
//
//---------------------------------------------------------------
inline CDlElement *CDlElement::_GetNext(void) const
{
return BP_TO_P(CDlElement *, _pdleNext);
}
//+--------------------------------------------------------------
//
// Member: CDlElement::_SetNext, public
//
// Synopsis: Sets _pdleNext
//
// History: 28-Jul-92 DrewB Created
//
//---------------------------------------------------------------
inline void CDlElement::SetNext(CDlElement *pdle)
{
_pdleNext = P_TO_BP(CBasedDlElementPtr, pdle);
}
//+--------------------------------------------------------------
//
// Member: CDlElement::_GetPrev, public
//
// Synopsis: Returns _pdlePrev
//
// History: 28-Jul-92 DrewB Created
//
//---------------------------------------------------------------
inline CDlElement *CDlElement::_GetPrev(void) const
{
return BP_TO_P(CDlElement *, _pdlePrev);
}
//+--------------------------------------------------------------
//
// Member: CDlElement::_SetPrev, public
//
// Synopsis: Sets _pdlePrev
//
// History: 28-Jul-92 DrewB Created
//
//---------------------------------------------------------------
inline void CDlElement::SetPrev(CDlElement *pdle)
{
_pdlePrev = P_TO_BP(CBasedDlElementPtr, pdle);
}
#define DECLARE_DBLINK(type) \
type *GetNext(void) const { return (type *)_GetNext(); } \
type *GetPrev(void) const { return (type *)_GetPrev(); } \
#endif // #ifndef __DBLINK_HXX__