2025-04-27 07:49:33 -04:00

223 lines
3.4 KiB
C++

/*++
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