|
// (c) R.I.Allen 2004, this section supplied By CP member
// Brian (BH) http://www.codeproject.com/script/profile/whos_who.asp?id=469544
//
// You may use this code in anyway that you feel, no guarantees or waranties are implied
// please keep all headers with any source used.
//
#pragma once
class CPIState
{
struct state
{
state() : m_dwRef( 0 ), m_bDestroyed( false ) {}
DWORD m_dwRef ;
bool m_bDestroyed ;
} ;
public:
CPIState( ) : m_pState( NULL )
{
m_pState = new state ;
++m_pState->m_dwRef ;
}
CPIState(const CPIState & rhs)
{
m_pState = rhs.m_pState ;
++m_pState->m_dwRef ;
}
~CPIState( )
{
--m_pState->m_dwRef ;
if (0 == m_pState->m_dwRef)
{
delete m_pState ;
}
}
CPIState& operator=(const CPIState & rhs)
{
if (m_pState)
{
--m_pState->m_dwRef ;
if (0 == m_pState->m_dwRef)
{
delete m_pState ;
}
}
m_pState = rhs.m_pState ;
++m_pState->m_dwRef ;
return *this ;
}
bool IsDestroyed() const { return m_pState->m_bDestroyed ; }
void SetDestroyed() { m_pState->m_bDestroyed = true ; }
private:
state* m_pState ;
} ;
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
A research and development programmer working for a pharmaceutical instrument company for the past 17 years.
I am one of those lucky people who enjoys his work and spends more time than he should either doing work or reseaching new stuff. I can also be found on playing DDO on the Cannith server (Send a tell to "Maetrim" who is my current main)
I am also a keep fit fanatic, doing cross country running and am seriously into [url]http://www.ryushinkan.co.uk/[/url] Karate at this time of my life, training from 4-6 times a week and recently achieved my 1st Dan after 6 years.