windows-nt/Source/XPSP1/NT/inetsrv/iis/staxinc/cdescrip.h
2020-09-26 16:20:57 +08:00

131 lines
3 KiB
C++

//#---------------------------------------------------------------
// File: CDescrip.h
//
// Synopsis: Header for the CDescriptor class
//
// Copyright (C) 1995 Microsoft Corporation
// All rights reserved.
//
// Authors: HowardCu
//----------------------------------------------------------------
#ifndef _CDECRIPTOR_H_
#define _CDECRIPTOR_H_
#define AVAIL_SIGNATURE (DWORD)'daeD'
#define DEFAULT_SIGNATURE (DWORD)'Defa'
typedef enum _DESCRIPTOR_STATE_TYPE
{
DESCRIPTOR_FREE,
DESCRIPTOR_INUSE,
} DESCRIPTOR_STATE_TYPE;
#include "dbgtrace.h"
class CPool;
void InitializeUniqueIDs( void );
void TerminateUniqueIDs( void );
class CDescriptor
{
public:
CDescriptor( DWORD dwSig );
~CDescriptor( void );
inline DWORD GetSignature( void );
inline DWORD GetUniqueObjectID( void );
inline DESCRIPTOR_STATE_TYPE GetState( void );
private:
//
// Structure signature
//
const DWORD m_dwSignature;
//
// unique object identifier assigned from a static DWORD that is
// updated with each new object being marked, In_use.
//
DWORD m_dwUniqueObjectID;
//
// the object state
//
DESCRIPTOR_STATE_TYPE m_eState;
//
// pointer to a generic reference item (the membership pool)
//
#ifdef DEBUG
inline void IsValid( void );
#else
void IsValid( void ) { return; }
#endif
};
//+---------------------------------------------------------------
//
// Function: GetSignature
//
// Returns: the current descriptor signature
//
// History: HowardCu Created 8 May 1995
// t-alexwe cleaned up param checking 19 Jun 1995
// t-alexwe inlined 27 Jun 1995
//
//----------------------------------------------------------------
inline DWORD CDescriptor::GetSignature(void)
{
return m_dwSignature;
}
//+---------------------------------------------------------------
//
// Function: GetUniqueObjectID
//
// Returns: the current object ID
//
// History: HowardCu Created 8 May 1995
// t-alexwe cleaned up param checking 19 Jun 1995
// t-alexwe inlined 27 Jun 1995
//
//----------------------------------------------------------------
inline DWORD CDescriptor::GetUniqueObjectID(void)
{
IsValid();
return m_dwUniqueObjectID;
}
//+---------------------------------------------------------------
//
// Function: GetState
//
// Returns: the current descriptor state
//
// History: HowardCu Created 8 May 1995
// t-alexwe cleaned up param checking 19 Jun 1995
// t-alexwe inlined 27 Jun 1995
//
//----------------------------------------------------------------
inline DESCRIPTOR_STATE_TYPE CDescriptor::GetState(void)
{
IsValid();
return m_eState;
}
//
// this function only exists in debug builds and does parameter
// checking on many of the member variable for the CDescriptor class.
//
#ifdef DEBUG
inline void CDescriptor::IsValid()
{
_ASSERT( m_dwSignature != AVAIL_SIGNATURE );
_ASSERT( m_dwUniqueObjectID != 0l );
_ASSERT( m_eState == DESCRIPTOR_INUSE );
}
#endif
#endif //!_CDECRIPTOR_H_