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.
|
|
/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
object.h
Abstract:
Abstruct object for refrence count and list entry: declaration
Author:
Erez Haba (erezh) 17-Apr-96
Revision History:
--*/
#ifndef __OBJECT_H
#define __OBJECT_H
//---------------------------------------------------------
//
// Class debugging macros
//
//---------------------------------------------------------
#ifdef _DEBUG
#define DEFINE_G_TYPE(c) int c::g_type = 0
#define STATIC_G_TYPE static int g_type
#define STATIC_PVOID_TYPE() static PVOID Type() { return &g_type; }
#define VIRTUAL_BOOL_ISKINDOF()\
virtual BOOL isKindOf(PVOID pType) const\ { return ((Type() == pType) || Inherited::isKindOf(pType)); }
#define CLASS_DEBUG_TYPE()\
public: STATIC_PVOID_TYPE(); VIRTUAL_BOOL_ISKINDOF();\ private: STATIC_G_TYPE;
#define BASE_VIRTUAL_BOOL_ISKINDOF()\
virtual BOOL isKindOf(PVOID) const { return FALSE; }
#define BASE_CLASS_DEBUG_TYPE()\
public: BASE_VIRTUAL_BOOL_ISKINDOF();
#else // _DEBUG
#define DEFINE_G_TYPE(c)
#define CLASS_DEBUG_TYPE()
#define BASE_CLASS_DEBUG_TYPE()
#endif // _DEBUG
//---------------------------------------------------------
//
// class CObject
//
//---------------------------------------------------------
class CObject { public: CObject(); virtual ~CObject() = 0;
ULONG Ref() const; ULONG AddRef(); ULONG Release();
public: LIST_ENTRY m_link; ULONG m_ref;
BASE_CLASS_DEBUG_TYPE(); };
#endif // __OBJECT_H
|