Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

111 lines
2.9 KiB

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1992.
//
// File: cntxlist.cxx
//
// Contents: CContextList implementation
//
// History: 26-Oct-92 DrewB Created
//
//----------------------------------------------------------------------------
#include <exphead.cxx>
#pragma hdrstop
#include <cntxlist.hxx>
//+---------------------------------------------------------------------------
//
// Member: CContextList::_Find, public
//
// Synopsis: Looks through the list for a matching context
//
// Arguments: [ctxid] - Context to look for
//
// Returns: Pointer to object or NULL
//
// History: 26-Oct-92 DrewB Created
//
//----------------------------------------------------------------------------
#ifdef CODESEGMENTS
#pragma code_seg(SEG_CContextList_Find)
#endif
CContext *CContextList::_Find(ContextId ctxid)
{
CBasedContextPtr pctx;
olDebugOut((DEB_ITRACE, "In CContextList::_Find:%p(%lu)\n", this,
(ULONG)ctxid));
for (pctx = _pctxHead; pctx; pctx = pctx->pctxNext)
if (pctx->ctxid != INVALID_CONTEXT_ID &&
pctx->ctxid == ctxid)
break;
olDebugOut((DEB_ITRACE, "Out CContextList::_Find\n"));
return BP_TO_P(CContext *, pctx);
}
//+---------------------------------------------------------------------------
//
// Member: CContextList::Add, public
//
// Synopsis: Adds a context to the list
//
// Arguments: [pctx] - Context
//
// History: 26-Oct-92 DrewB Created
//
//----------------------------------------------------------------------------
#ifdef CODESEGMENTS
#pragma code_seg(SEG_CContextList_Add)
#endif
void CContextList::Add(CContext *pctx)
{
olDebugOut((DEB_ITRACE, "In CContextList::Add:%p(%p)\n", this, pctx));
pctx->pctxNext = _pctxHead;
pctx->ctxid = GetCurrentContextId();
_pctxHead = P_TO_BP(CBasedContextPtr, pctx);
olDebugOut((DEB_ITRACE, "Out CContextList::Add\n"));
}
//+---------------------------------------------------------------------------
//
// Member: CContextList::Remove, public
//
// Synopsis: Removes a context from the list
//
// Arguments: [pctx] - Context
//
// History: 26-Oct-92 DrewB Created
//
//----------------------------------------------------------------------------
#ifdef CODESEGMENTS
#pragma code_seg(SEG_CContextList_Remove)
#endif
void CContextList::Remove(CContext *pctx)
{
CBasedContextPtr *ppctx;
#if DBG == 1
BOOL fFound = FALSE;
#endif
olDebugOut((DEB_ITRACE, "In CContextList::Remove:%p(%p)\n", this, pctx));
for (ppctx = &_pctxHead; *ppctx; ppctx = &(*ppctx)->pctxNext)
if (*ppctx == pctx)
{
#if DBG == 1
fFound = TRUE;
#endif
*ppctx = pctx->pctxNext;
break;
}
olAssert(fFound == TRUE);
olDebugOut((DEB_ITRACE, "Out CContextList::Remove\n"));
}