85 lines
1.7 KiB
Plaintext
85 lines
1.7 KiB
Plaintext
|
//-----------------------------------------------------------------------------
|
||
|
//
|
||
|
// File: LUnknown.inl
|
||
|
// Copyright (C) 1994-1997 Microsoft Corporation
|
||
|
// All rights reserved.
|
||
|
//
|
||
|
//
|
||
|
//
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
//*****************************************************************************
|
||
|
//
|
||
|
// CLUnknown Constructions / Destruction
|
||
|
//
|
||
|
//*****************************************************************************
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
inline
|
||
|
CLUnknown::CLUnknown(
|
||
|
IUnknown * pParent
|
||
|
)
|
||
|
{
|
||
|
LTASSERT(pParent != NULL);
|
||
|
|
||
|
m_ulRef = 0;
|
||
|
m_pParent = pParent;
|
||
|
m_pParent->AddRef();
|
||
|
// AddRef(); // Don't AddRef() itself. The caller is expected to do this
|
||
|
}
|
||
|
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
inline
|
||
|
CLUnknown::~CLUnknown()
|
||
|
{
|
||
|
LTASSERT(m_ulRef == 0);
|
||
|
|
||
|
LTASSERT(m_pParent != NULL);
|
||
|
m_pParent->Release();
|
||
|
}
|
||
|
|
||
|
|
||
|
//*****************************************************************************
|
||
|
//
|
||
|
// CLUnknown Operations
|
||
|
//
|
||
|
//*****************************************************************************
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
inline
|
||
|
ULONG
|
||
|
CLUnknown::AddRef()
|
||
|
{
|
||
|
return ++m_ulRef;
|
||
|
}
|
||
|
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
inline
|
||
|
ULONG
|
||
|
CLUnknown::Release()
|
||
|
{
|
||
|
LTASSERT(m_ulRef > 0);
|
||
|
|
||
|
if (--m_ulRef == 0)
|
||
|
{
|
||
|
delete this;
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
return m_ulRef;
|
||
|
}
|
||
|
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
inline
|
||
|
HRESULT
|
||
|
CLUnknown::QueryInterface(REFIID iid, LPVOID * ppvObject)
|
||
|
{
|
||
|
LTASSERT(ppvObject != NULL);
|
||
|
|
||
|
return m_pParent->QueryInterface(iid, ppvObject);
|
||
|
}
|
||
|
|