STABLIZE.H
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:
Windows编程
开发平台:
Visual C++
- //+---------------------------------------------------------------------------
- //
- // Microsoft Windows
- // Copyright 1992 - 1997 Microsoft Corporation.
- //
- // File: stablize.h
- //
- // Contents: Stabilization Classes used to stabilize objects during
- // re-entrant calls.
- //
- // Classes: CSafeRefCount
- // CStabilize
- //
- // History: 8-26-94 stevebl Modified from code written by AlexGo
- //
- //----------------------------------------------------------------------------
- #ifndef __STABLIZE__
- #define __STABLIZE__
- //+-------------------------------------------------------------------------
- //
- // Class: CSafeRefCount
- //
- // Purpose: A concrete class for objects to inherit from.
- // CSafeRefCount will keep track of reference counts,
- // nesting counts, and zombie states, allowing objects
- // to easily manage the liveness of their memory images.
- //
- // Interface:
- //
- // History: dd-mmm-yy Author Comment
- // 01-Aug-94 alexgo author
- //
- // Notes: inherits CPrivAlloc
- //
- //--------------------------------------------------------------------------
- class CSafeRefCount
- {
- public:
- ULONG SafeAddRef();
- ULONG SafeRelease();
- ULONG IncrementNestCount();
- ULONG DecrementNestCount();
- CSafeRefCount();
- virtual ~CSafeRefCount();
- private:
- ULONG m_cRefs;
- ULONG m_cNest;
- BOOL m_fInDelete;
- };
- //+-------------------------------------------------------------------------
- //
- // Class: CStabilize
- //
- // Purpose: An instance of this class should be allocated on the
- // stack of every object method that makes an outgoing call.
- // The contstructor takes a pointer to the object's base
- // CSafeRefCount class.
- //
- // Interface:
- //
- // History: dd-mmm-yy Author Comment
- // 01-Aug-94 alexgo author
- //
- // Notes: The constructor will increment the nest count of the
- // object while the destructor will decrement it.
- //
- //--------------------------------------------------------------------------
- class CStabilize
- {
- public:
- inline CStabilize( CSafeRefCount *pObjSafeRefCount );
- inline ~CStabilize();
- private:
- CSafeRefCount * m_pObjSafeRefCount;
- };
- inline CStabilize::CStabilize( CSafeRefCount *pObjSafeRefCount )
- {
- pObjSafeRefCount->IncrementNestCount();
- m_pObjSafeRefCount = pObjSafeRefCount;
- }
- inline CStabilize::~CStabilize()
- {
- m_pObjSafeRefCount->DecrementNestCount();
- }
- #endif // __STABLIZE__