WindowsXP-SP1/admin/pchealth/sysinfo/control/alclass.h
2020-09-30 16:53:49 +02:00

86 lines
1.3 KiB
C++

#ifndef _AUTOLISTCLASS_H_
#define _AUTOLISTCLASS_H_
class AutoListClass;
extern AutoListClass *pALCHead;
extern AutoListClass *pALCTail;
extern int AutoListClassCount;
class AutoListClass
{
protected:
AutoListClass *pALCPrev;
AutoListClass *pALCNext;
public:
AutoListClass(void)
{
if (pALCHead == NULL)
{
pALCHead = this;
pALCTail = this;
pALCPrev = NULL;
pALCNext = NULL;
}
else // not empty
{
AutoListClass *curr;
curr = pALCTail;
curr->pALCNext = this;
pALCPrev = curr;
pALCTail = this;
pALCNext = NULL;
}
AutoListClassCount++;
}
~AutoListClass()
{
if (pALCHead == this)
pALCHead = pALCNext;
if (pALCTail == this)
pALCTail = pALCPrev;
if (pALCNext != NULL)
pALCNext->pALCPrev = pALCPrev;
if (pALCPrev != NULL)
pALCPrev->pALCNext = pALCNext;
// just in case clean up
pALCNext = NULL;
pALCPrev = NULL;
AutoListClassCount--;
}
AutoListClass * GetNext (void)
{
return pALCNext;
}
AutoListClass * GetPrev (void)
{
return pALCPrev;
}
static AutoListClass * GetHead (void)
{
return pALCHead;
}
static AutoListClass * GetTail (void)
{
return pALCTail;
}
static int ALCCount (void)
{
return AutoListClassCount;
}
};
#endif