Leaked source code of windows server 2003
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.
 
 
 
 
 
 

134 lines
2.5 KiB

#ifndef __CCOOKIE__H__
#define __CCOOKIE_H__
/*++
Copyright (C) Microsoft Corporation
Module Name:
ccookie.h
Abstract:
definition and implementation for CCookie class
Author:
William Hsieh (williamh) created
Revision History:
--*/
class CCookie;
class CResultItem;
class CScopeItem;
class CCookie
{
public:
CCookie(COOKIE_TYPE ct)
: m_pScopeItem(NULL), m_pResultItem(NULL), m_Type(ct),
m_pChild(NULL), m_pSibling(NULL), m_pParent(NULL),
m_Flags(0), m_lParam(0)
{
}
~CCookie()
{
//
// Delete the subtree
//
if (m_pChild) {
delete m_pChild;
}
if (m_pSibling) {
delete m_pSibling;
}
}
void SetScopeItem(CScopeItem* pScopeItem)
{
//
// Can only set it onece or memory leak could occur
//
ASSERT(NULL == m_pScopeItem);
m_pScopeItem = pScopeItem;
}
void SetResultItem(CResultItem* pResultItem)
{
//
// Can only set once or memory leak could occur
//
ASSERT(NULL == m_pResultItem);
m_pResultItem = pResultItem;
}
COOKIE_TYPE GetType()
{
return m_Type;
}
CScopeItem* GetScopeItem()
{
return m_pScopeItem;
}
CResultItem* GetResultItem()
{
return m_pResultItem;
}
CCookie* GetChild()
{
return m_pChild;
}
CCookie* GetSibling()
{
return m_pSibling;
}
CCookie* GetParent()
{
return m_pParent;
}
void SetChild(CCookie* pCookie)
{
m_pChild = pCookie;
}
void SetSibling(CCookie* pCookie)
{
m_pSibling = pCookie;
}
void SetParent(CCookie* pCookie)
{
m_pParent = pCookie;
}
BOOL IsScopeItem()
{
return (!m_pResultItem && m_pScopeItem);
}
DWORD IsFlagsOn(DWORD Flags)
{
return (m_Flags & Flags);
}
void TurnOnFlags(DWORD Flags)
{
m_Flags |= Flags;
}
void TurnOffFlags(DWORD Flags)
{
m_Flags &= ~Flags;
}
LPARAM m_lParam;
private:
COOKIE_TYPE m_Type;
CScopeItem* m_pScopeItem;
CResultItem* m_pResultItem;
CCookie* m_pParent;
CCookie* m_pSibling;
CCookie* m_pChild;
DWORD m_Flags;
};
#endif // __CCOOKIE_H__