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.
|
|
//-----------------------------------------------------------------------------
//
// File: samplver.cpp
//
// Copyright (C) 1994-1997 Microsoft Corporation All rights reserved.
//
// Implementation of the ILocVersion interface.
//
//-----------------------------------------------------------------------------
#include "stdafx.h"
#include "dllvars.h"
#include "samplver.h"
#include "misc.h"
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// Constructor for Version interface. Set up my reference count, and note
// who my parent is. Assume that my parent has already been AddRef()'d.
// Also note that the total class count has gone up.
//
//-----------------------------------------------------------------------------
CLocSamplVersion::CLocSamplVersion( IUnknown *pParent) { m_ulRefCount = 0; m_pParent = pParent; AddRef(); IncrementClassCount(); }
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// Bump my reference count.
//
//-----------------------------------------------------------------------------
ULONG CLocSamplVersion::AddRef(void) { return ++m_ulRefCount; }
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// Dec. my reference count. If it goes to zero, delete myself AND Release()
// my parent.
//
//-----------------------------------------------------------------------------
ULONG CLocSamplVersion::Release(void) { LTASSERT(m_ulRefCount != 0);
m_ulRefCount--;
if (m_ulRefCount == 0) { m_pParent->Release(); delete this; return 0; }
return m_ulRefCount; }
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// Return an interface. IID_ILocVersion is me, everything else is handed
// off to my parent ie. this implements delegation.
//
//-----------------------------------------------------------------------------
HRESULT CLocSamplVersion::QueryInterface( REFIID iid, LPVOID *ppvObj) { SCODE scResult = E_NOINTERFACE;
*ppvObj = NULL;
if (iid == IID_ILocVersion) { *ppvObj = (ILocVersion *)this; scResult = S_OK; AddRef();
return ResultFromScode(scResult); } else { return m_pParent->QueryInterface(iid, ppvObj); } }
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// Return the parser version number. This is really the version of Esputil
// and PBase that we compiled against ie the version number of the Parser
// SDK.
//
//-----------------------------------------------------------------------------
void CLocSamplVersion::GetParserVersion( DWORD &dwMajor, DWORD &dwMinor, BOOL &fDebug) const { dwMajor = dwCurrentMajorVersion; dwMinor = dwCurrentMinorVersion; fDebug = fCurrentDebugMode; }
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// Debuging interface.
//
//-----------------------------------------------------------------------------
void CLocSamplVersion::AssertValidInterface(void) const { DEBUGONLY(AssertValid()); }
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// Destructor. Simply note that the total class count is lower.
//
//-----------------------------------------------------------------------------
CLocSamplVersion::~CLocSamplVersion() { DEBUGONLY(AssertValid()); LTASSERT(m_ulRefCount == 0);
DecrementClassCount(); }
#ifdef _DEBUG
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// Debugging methods.
//
//-----------------------------------------------------------------------------
void CLocSamplVersion::AssertValid(void) const { CLObject::AssertValid(); }
void CLocSamplVersion::Dump( CDumpContext &dc) const { CLObject::Dump(dc); }
#endif // _DEBUG
|