117 lines
3.5 KiB
C++
117 lines
3.5 KiB
C++
/*==============================================================================
|
|
Microsoft Denali
|
|
|
|
Microsoft Confidential.
|
|
Copyright 1996 Microsoft Corporation. All Rights Reserved.
|
|
|
|
File: dbgcxt.h
|
|
Maintained by: DGottner
|
|
Component: include file for IDebugDocumentContext
|
|
==============================================================================*/
|
|
|
|
#ifndef _DBGCXT_H
|
|
#define _DBGCXT_H
|
|
|
|
#include "activdbg.h"
|
|
|
|
/* These GUIDs exist to enable the document to determine if an arbitrary
|
|
IDebugDocumentContext object belongs to its document class. QueryInterface
|
|
for this GUID causes the IDebugDocument object to return a pointer to
|
|
the CDocumentContext (or CIncFileContext) class.
|
|
*/
|
|
extern const GUID IID_IDenaliTemplateDocumentContext;
|
|
extern const GUID IID_IDenaliIncFileDocumentContext;
|
|
|
|
|
|
/* ============================================================================
|
|
Class: CTemplateDocumentContext
|
|
Synopsis: implementation of IDebugDocumentContext for CTemplate objects
|
|
*/
|
|
class CTemplateDocumentContext : public IDebugDocumentContext
|
|
{
|
|
friend class CTemplate; // CTemplate is only user who even cares about this stuff
|
|
|
|
public:
|
|
// IUnknown methods
|
|
|
|
virtual HRESULT STDMETHODCALLTYPE QueryInterface(const GUID &guid, void **ppvObj);
|
|
virtual ULONG STDMETHODCALLTYPE AddRef();
|
|
virtual ULONG STDMETHODCALLTYPE Release();
|
|
|
|
// IDebugDocumentContext methods
|
|
|
|
virtual HRESULT STDMETHODCALLTYPE GetDocument(
|
|
/* [out] */ IDebugDocument **ppDebugDocument);
|
|
|
|
virtual HRESULT STDMETHODCALLTYPE EnumCodeContexts(
|
|
/* [out] */ IEnumDebugCodeContexts **ppEnum);
|
|
|
|
// Constructor & destructor
|
|
|
|
CTemplateDocumentContext(
|
|
CTemplate *pTemplate,
|
|
ULONG cchSourceOffset,
|
|
ULONG cchText,
|
|
IActiveScriptDebug *pDebugScript = NULL, // cached values
|
|
ULONG idEngine = -1, // only initialize ctor if
|
|
ULONG cchTargetOffset = -1 // values happen to be on hand
|
|
);
|
|
|
|
|
|
~CTemplateDocumentContext();
|
|
|
|
private:
|
|
IActiveScriptDebug *m_pDebugScript; // pointer to script engine
|
|
CTemplate * m_pTemplate; // pointer to source document
|
|
ULONG m_idEngine; // Engine # in template
|
|
ULONG m_cchSourceOffset; // character offset in source
|
|
ULONG m_cchTargetOffset; // character offset in target (cached)
|
|
ULONG m_cchText; // # of characters in the context
|
|
LONG m_cRefs; // reference count
|
|
};
|
|
|
|
|
|
/* ============================================================================
|
|
Class: CIncFileDocumentContext
|
|
Synopsis: implementation of IDebugDocumentContext for CIncFile objects
|
|
*/
|
|
class CIncFileDocumentContext : public IDebugDocumentContext
|
|
{
|
|
friend class CIncFile; // CIncFile is only user who even cares about this stuff
|
|
friend class CIncFileEnumCodeContexts; // iterator class
|
|
|
|
public:
|
|
// IUnknown methods
|
|
|
|
virtual HRESULT STDMETHODCALLTYPE QueryInterface(const GUID &guid, void **ppvObj);
|
|
virtual ULONG STDMETHODCALLTYPE AddRef();
|
|
virtual ULONG STDMETHODCALLTYPE Release();
|
|
|
|
// IDebugDocumentContext methods
|
|
|
|
virtual HRESULT STDMETHODCALLTYPE GetDocument(
|
|
/* [out] */ IDebugDocument **ppDebugDocument);
|
|
|
|
virtual HRESULT STDMETHODCALLTYPE EnumCodeContexts(
|
|
/* [out] */ IEnumDebugCodeContexts **ppEnum);
|
|
|
|
// Constructor & destructor
|
|
|
|
CIncFileDocumentContext(
|
|
CIncFile *pIncFile,
|
|
ULONG cchSourceOffset,
|
|
ULONG cchText
|
|
);
|
|
|
|
|
|
~CIncFileDocumentContext();
|
|
|
|
private:
|
|
CIncFile * m_pIncFile; // pointer to source document
|
|
ULONG m_cchSourceOffset; // character offset in source
|
|
ULONG m_cchText; // # of characters in the context
|
|
LONG m_cRefs; // reference count
|
|
};
|
|
|
|
#endif /* _DBGCXT_H */
|