/*** Autogenerated by WIDL 11.8 from ../wine/include/corsym.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __corsym_h__
#define __corsym_h__

/* Forward declarations */

#ifndef __ISymUnmanagedDocumentWriter_FWD_DEFINED__
#define __ISymUnmanagedDocumentWriter_FWD_DEFINED__
typedef interface ISymUnmanagedDocumentWriter ISymUnmanagedDocumentWriter;
#ifdef __cplusplus
interface ISymUnmanagedDocumentWriter;
#endif /* __cplusplus */
#endif

#ifndef __ISymUnmanagedWriter_FWD_DEFINED__
#define __ISymUnmanagedWriter_FWD_DEFINED__
typedef interface ISymUnmanagedWriter ISymUnmanagedWriter;
#ifdef __cplusplus
interface ISymUnmanagedWriter;
#endif /* __cplusplus */
#endif

#ifndef __ISymUnmanagedWriter2_FWD_DEFINED__
#define __ISymUnmanagedWriter2_FWD_DEFINED__
typedef interface ISymUnmanagedWriter2 ISymUnmanagedWriter2;
#ifdef __cplusplus
interface ISymUnmanagedWriter2;
#endif /* __cplusplus */
#endif

#ifndef __ISymUnmanagedWriter3_FWD_DEFINED__
#define __ISymUnmanagedWriter3_FWD_DEFINED__
typedef interface ISymUnmanagedWriter3 ISymUnmanagedWriter3;
#ifdef __cplusplus
interface ISymUnmanagedWriter3;
#endif /* __cplusplus */
#endif

#ifndef __ISymUnmanagedWriter4_FWD_DEFINED__
#define __ISymUnmanagedWriter4_FWD_DEFINED__
typedef interface ISymUnmanagedWriter4 ISymUnmanagedWriter4;
#ifdef __cplusplus
interface ISymUnmanagedWriter4;
#endif /* __cplusplus */
#endif

#ifndef __ISymUnmanagedWriter5_FWD_DEFINED__
#define __ISymUnmanagedWriter5_FWD_DEFINED__
typedef interface ISymUnmanagedWriter5 ISymUnmanagedWriter5;
#ifdef __cplusplus
interface ISymUnmanagedWriter5;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <unknwn.h>
#include <objidl.h>
#include <oaidl.h>

#ifdef __cplusplus
extern "C" {
#endif

#if 0
typedef UINT32 mdToken;
typedef mdToken mdMethodDef;
typedef mdToken mdTypeDef;
typedef mdToken mdSignature;
typedef SIZE_T IMAGE_DEBUG_DIRECTORY;
#endif
/*****************************************************************************
 * ISymUnmanagedDocumentWriter interface
 */
#ifndef __ISymUnmanagedDocumentWriter_INTERFACE_DEFINED__
#define __ISymUnmanagedDocumentWriter_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISymUnmanagedDocumentWriter, 0xb01fafeb, 0xc450, 0x3a4d, 0xbe,0xec, 0xb4,0xce,0xec,0x01,0xe0,0x06);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b01fafeb-c450-3a4d-beec-b4ceec01e006")
ISymUnmanagedDocumentWriter : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetSource(
        ULONG32 sourceSize,
        BYTE source[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCheckSum(
        GUID algorithmId,
        ULONG32 checkSumSize,
        BYTE checkSum[]) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISymUnmanagedDocumentWriter, 0xb01fafeb, 0xc450, 0x3a4d, 0xbe,0xec, 0xb4,0xce,0xec,0x01,0xe0,0x06)
#endif
#else
typedef struct ISymUnmanagedDocumentWriterVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISymUnmanagedDocumentWriter *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISymUnmanagedDocumentWriter *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISymUnmanagedDocumentWriter *This);

    /*** ISymUnmanagedDocumentWriter methods ***/
    HRESULT (STDMETHODCALLTYPE *SetSource)(
        ISymUnmanagedDocumentWriter *This,
        ULONG32 sourceSize,
        BYTE source[]);

    HRESULT (STDMETHODCALLTYPE *SetCheckSum)(
        ISymUnmanagedDocumentWriter *This,
        GUID algorithmId,
        ULONG32 checkSumSize,
        BYTE checkSum[]);

    END_INTERFACE
} ISymUnmanagedDocumentWriterVtbl;

interface ISymUnmanagedDocumentWriter {
    CONST_VTBL ISymUnmanagedDocumentWriterVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISymUnmanagedDocumentWriter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISymUnmanagedDocumentWriter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISymUnmanagedDocumentWriter_Release(This) (This)->lpVtbl->Release(This)
/*** ISymUnmanagedDocumentWriter methods ***/
#define ISymUnmanagedDocumentWriter_SetSource(This,sourceSize,source) (This)->lpVtbl->SetSource(This,sourceSize,source)
#define ISymUnmanagedDocumentWriter_SetCheckSum(This,algorithmId,checkSumSize,checkSum) (This)->lpVtbl->SetCheckSum(This,algorithmId,checkSumSize,checkSum)
#else
/*** IUnknown methods ***/
static inline HRESULT ISymUnmanagedDocumentWriter_QueryInterface(ISymUnmanagedDocumentWriter* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ISymUnmanagedDocumentWriter_AddRef(ISymUnmanagedDocumentWriter* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ISymUnmanagedDocumentWriter_Release(ISymUnmanagedDocumentWriter* This) {
    return This->lpVtbl->Release(This);
}
/*** ISymUnmanagedDocumentWriter methods ***/
static inline HRESULT ISymUnmanagedDocumentWriter_SetSource(ISymUnmanagedDocumentWriter* This,ULONG32 sourceSize,BYTE source[]) {
    return This->lpVtbl->SetSource(This,sourceSize,source);
}
static inline HRESULT ISymUnmanagedDocumentWriter_SetCheckSum(ISymUnmanagedDocumentWriter* This,GUID algorithmId,ULONG32 checkSumSize,BYTE checkSum[]) {
    return This->lpVtbl->SetCheckSum(This,algorithmId,checkSumSize,checkSum);
}
#endif
#endif

#endif


#endif  /* __ISymUnmanagedDocumentWriter_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISymUnmanagedWriter interface
 */
#ifndef __ISymUnmanagedWriter_INTERFACE_DEFINED__
#define __ISymUnmanagedWriter_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISymUnmanagedWriter, 0xed14aa72, 0x78e2, 0x4884, 0x84,0xe2, 0x33,0x42,0x93,0xae,0x52,0x14);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ed14aa72-78e2-4884-84e2-334293ae5214")
ISymUnmanagedWriter : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DefineDocument(
        const WCHAR *url,
        const GUID *language,
        const GUID *languageVendor,
        const GUID *documentType,
        ISymUnmanagedDocumentWriter **pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetUserEntryPoint(
        mdMethodDef entryMethod) = 0;

    virtual HRESULT STDMETHODCALLTYPE OpenMethod(
        mdMethodDef method) = 0;

    virtual HRESULT STDMETHODCALLTYPE CloseMethod(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE OpenScope(
        ULONG32 startOffset,
        ULONG32 *pRetVal) = 0;

    virtual HRESULT STDMETHODCALLTYPE CloseScope(
        ULONG32 endOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScopeRange(
        ULONG32 scopeID,
        ULONG32 startOffset,
        ULONG32 endOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE DefineLocalVariable(
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3,
        ULONG32 startOffset,
        ULONG32 endOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE DefineParameter(
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 sequence,
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3) = 0;

    virtual HRESULT STDMETHODCALLTYPE DefineField(
        mdTypeDef parent,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3) = 0;

    virtual HRESULT STDMETHODCALLTYPE DefineGlobalVariable(
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3) = 0;

    virtual HRESULT STDMETHODCALLTYPE Close(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSymAttributes(
        mdToken parent,
        const WCHAR *name,
        ULONG32 cData,
        unsigned char data[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE OpenNamespace(
        const WCHAR *name) = 0;

    virtual HRESULT STDMETHODCALLTYPE CloseNamespace(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE UsingNamespace(
        const WCHAR *fullName) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMethodSourceRange(
        ISymUnmanagedDocumentWriter *startDoc,
        ULONG32 startLine,
        ULONG32 startColumn,
        ISymUnmanagedDocumentWriter *endDoc,
        ULONG32 endLine,
        ULONG32 endColumn) = 0;

    virtual HRESULT STDMETHODCALLTYPE Initialize(
        IUnknown *emitter,
        const WCHAR *filename,
        IStream *pIStream,
        BOOL fFullBuild) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDebugInfo(
        IMAGE_DEBUG_DIRECTORY *pIDD,
        DWORD cData,
        DWORD *pcData,
        BYTE data[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE DefineSequencePoints(
        ISymUnmanagedDocumentWriter *document,
        ULONG32 spCount,
        ULONG32 offsets[],
        ULONG32 lines[],
        ULONG32 columns[],
        ULONG32 endLines[],
        ULONG32 endColumns[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemapToken(
        mdToken oldToken,
        mdToken newToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE Initialize2(
        IUnknown *emitter,
        const WCHAR *tempFilename,
        IStream *pIStream,
        BOOL fFullBuild,
        const WCHAR *finalFilename) = 0;

    virtual HRESULT STDMETHODCALLTYPE DefineConstant(
        const WCHAR *name,
        VARIANT value,
        ULONG32 cSig,
        unsigned char signature[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE Abort(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISymUnmanagedWriter, 0xed14aa72, 0x78e2, 0x4884, 0x84,0xe2, 0x33,0x42,0x93,0xae,0x52,0x14)
#endif
#else
typedef struct ISymUnmanagedWriterVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISymUnmanagedWriter *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISymUnmanagedWriter *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISymUnmanagedWriter *This);

    /*** ISymUnmanagedWriter methods ***/
    HRESULT (STDMETHODCALLTYPE *DefineDocument)(
        ISymUnmanagedWriter *This,
        const WCHAR *url,
        const GUID *language,
        const GUID *languageVendor,
        const GUID *documentType,
        ISymUnmanagedDocumentWriter **pRetVal);

    HRESULT (STDMETHODCALLTYPE *SetUserEntryPoint)(
        ISymUnmanagedWriter *This,
        mdMethodDef entryMethod);

    HRESULT (STDMETHODCALLTYPE *OpenMethod)(
        ISymUnmanagedWriter *This,
        mdMethodDef method);

    HRESULT (STDMETHODCALLTYPE *CloseMethod)(
        ISymUnmanagedWriter *This);

    HRESULT (STDMETHODCALLTYPE *OpenScope)(
        ISymUnmanagedWriter *This,
        ULONG32 startOffset,
        ULONG32 *pRetVal);

    HRESULT (STDMETHODCALLTYPE *CloseScope)(
        ISymUnmanagedWriter *This,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *SetScopeRange)(
        ISymUnmanagedWriter *This,
        ULONG32 scopeID,
        ULONG32 startOffset,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *DefineLocalVariable)(
        ISymUnmanagedWriter *This,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3,
        ULONG32 startOffset,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *DefineParameter)(
        ISymUnmanagedWriter *This,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 sequence,
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *DefineField)(
        ISymUnmanagedWriter *This,
        mdTypeDef parent,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *DefineGlobalVariable)(
        ISymUnmanagedWriter *This,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *Close)(
        ISymUnmanagedWriter *This);

    HRESULT (STDMETHODCALLTYPE *SetSymAttributes)(
        ISymUnmanagedWriter *This,
        mdToken parent,
        const WCHAR *name,
        ULONG32 cData,
        unsigned char data[]);

    HRESULT (STDMETHODCALLTYPE *OpenNamespace)(
        ISymUnmanagedWriter *This,
        const WCHAR *name);

    HRESULT (STDMETHODCALLTYPE *CloseNamespace)(
        ISymUnmanagedWriter *This);

    HRESULT (STDMETHODCALLTYPE *UsingNamespace)(
        ISymUnmanagedWriter *This,
        const WCHAR *fullName);

    HRESULT (STDMETHODCALLTYPE *SetMethodSourceRange)(
        ISymUnmanagedWriter *This,
        ISymUnmanagedDocumentWriter *startDoc,
        ULONG32 startLine,
        ULONG32 startColumn,
        ISymUnmanagedDocumentWriter *endDoc,
        ULONG32 endLine,
        ULONG32 endColumn);

    HRESULT (STDMETHODCALLTYPE *Initialize)(
        ISymUnmanagedWriter *This,
        IUnknown *emitter,
        const WCHAR *filename,
        IStream *pIStream,
        BOOL fFullBuild);

    HRESULT (STDMETHODCALLTYPE *GetDebugInfo)(
        ISymUnmanagedWriter *This,
        IMAGE_DEBUG_DIRECTORY *pIDD,
        DWORD cData,
        DWORD *pcData,
        BYTE data[]);

    HRESULT (STDMETHODCALLTYPE *DefineSequencePoints)(
        ISymUnmanagedWriter *This,
        ISymUnmanagedDocumentWriter *document,
        ULONG32 spCount,
        ULONG32 offsets[],
        ULONG32 lines[],
        ULONG32 columns[],
        ULONG32 endLines[],
        ULONG32 endColumns[]);

    HRESULT (STDMETHODCALLTYPE *RemapToken)(
        ISymUnmanagedWriter *This,
        mdToken oldToken,
        mdToken newToken);

    HRESULT (STDMETHODCALLTYPE *Initialize2)(
        ISymUnmanagedWriter *This,
        IUnknown *emitter,
        const WCHAR *tempFilename,
        IStream *pIStream,
        BOOL fFullBuild,
        const WCHAR *finalFilename);

    HRESULT (STDMETHODCALLTYPE *DefineConstant)(
        ISymUnmanagedWriter *This,
        const WCHAR *name,
        VARIANT value,
        ULONG32 cSig,
        unsigned char signature[]);

    HRESULT (STDMETHODCALLTYPE *Abort)(
        ISymUnmanagedWriter *This);

    END_INTERFACE
} ISymUnmanagedWriterVtbl;

interface ISymUnmanagedWriter {
    CONST_VTBL ISymUnmanagedWriterVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISymUnmanagedWriter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISymUnmanagedWriter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISymUnmanagedWriter_Release(This) (This)->lpVtbl->Release(This)
/*** ISymUnmanagedWriter methods ***/
#define ISymUnmanagedWriter_DefineDocument(This,url,language,languageVendor,documentType,pRetVal) (This)->lpVtbl->DefineDocument(This,url,language,languageVendor,documentType,pRetVal)
#define ISymUnmanagedWriter_SetUserEntryPoint(This,entryMethod) (This)->lpVtbl->SetUserEntryPoint(This,entryMethod)
#define ISymUnmanagedWriter_OpenMethod(This,method) (This)->lpVtbl->OpenMethod(This,method)
#define ISymUnmanagedWriter_CloseMethod(This) (This)->lpVtbl->CloseMethod(This)
#define ISymUnmanagedWriter_OpenScope(This,startOffset,pRetVal) (This)->lpVtbl->OpenScope(This,startOffset,pRetVal)
#define ISymUnmanagedWriter_CloseScope(This,endOffset) (This)->lpVtbl->CloseScope(This,endOffset)
#define ISymUnmanagedWriter_SetScopeRange(This,scopeID,startOffset,endOffset) (This)->lpVtbl->SetScopeRange(This,scopeID,startOffset,endOffset)
#define ISymUnmanagedWriter_DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset) (This)->lpVtbl->DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset)
#define ISymUnmanagedWriter_DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter_DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter_DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter_Close(This) (This)->lpVtbl->Close(This)
#define ISymUnmanagedWriter_SetSymAttributes(This,parent,name,cData,data) (This)->lpVtbl->SetSymAttributes(This,parent,name,cData,data)
#define ISymUnmanagedWriter_OpenNamespace(This,name) (This)->lpVtbl->OpenNamespace(This,name)
#define ISymUnmanagedWriter_CloseNamespace(This) (This)->lpVtbl->CloseNamespace(This)
#define ISymUnmanagedWriter_UsingNamespace(This,fullName) (This)->lpVtbl->UsingNamespace(This,fullName)
#define ISymUnmanagedWriter_SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn) (This)->lpVtbl->SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn)
#define ISymUnmanagedWriter_Initialize(This,emitter,filename,pIStream,fFullBuild) (This)->lpVtbl->Initialize(This,emitter,filename,pIStream,fFullBuild)
#define ISymUnmanagedWriter_GetDebugInfo(This,pIDD,cData,pcData,data) (This)->lpVtbl->GetDebugInfo(This,pIDD,cData,pcData,data)
#define ISymUnmanagedWriter_DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns) (This)->lpVtbl->DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns)
#define ISymUnmanagedWriter_RemapToken(This,oldToken,newToken) (This)->lpVtbl->RemapToken(This,oldToken,newToken)
#define ISymUnmanagedWriter_Initialize2(This,emitter,tempFilename,pIStream,fFullBuild,finalFilename) (This)->lpVtbl->Initialize2(This,emitter,tempFilename,pIStream,fFullBuild,finalFilename)
#define ISymUnmanagedWriter_DefineConstant(This,name,value,cSig,signature) (This)->lpVtbl->DefineConstant(This,name,value,cSig,signature)
#define ISymUnmanagedWriter_Abort(This) (This)->lpVtbl->Abort(This)
#else
/*** IUnknown methods ***/
static inline HRESULT ISymUnmanagedWriter_QueryInterface(ISymUnmanagedWriter* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ISymUnmanagedWriter_AddRef(ISymUnmanagedWriter* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ISymUnmanagedWriter_Release(ISymUnmanagedWriter* This) {
    return This->lpVtbl->Release(This);
}
/*** ISymUnmanagedWriter methods ***/
static inline HRESULT ISymUnmanagedWriter_DefineDocument(ISymUnmanagedWriter* This,const WCHAR *url,const GUID *language,const GUID *languageVendor,const GUID *documentType,ISymUnmanagedDocumentWriter **pRetVal) {
    return This->lpVtbl->DefineDocument(This,url,language,languageVendor,documentType,pRetVal);
}
static inline HRESULT ISymUnmanagedWriter_SetUserEntryPoint(ISymUnmanagedWriter* This,mdMethodDef entryMethod) {
    return This->lpVtbl->SetUserEntryPoint(This,entryMethod);
}
static inline HRESULT ISymUnmanagedWriter_OpenMethod(ISymUnmanagedWriter* This,mdMethodDef method) {
    return This->lpVtbl->OpenMethod(This,method);
}
static inline HRESULT ISymUnmanagedWriter_CloseMethod(ISymUnmanagedWriter* This) {
    return This->lpVtbl->CloseMethod(This);
}
static inline HRESULT ISymUnmanagedWriter_OpenScope(ISymUnmanagedWriter* This,ULONG32 startOffset,ULONG32 *pRetVal) {
    return This->lpVtbl->OpenScope(This,startOffset,pRetVal);
}
static inline HRESULT ISymUnmanagedWriter_CloseScope(ISymUnmanagedWriter* This,ULONG32 endOffset) {
    return This->lpVtbl->CloseScope(This,endOffset);
}
static inline HRESULT ISymUnmanagedWriter_SetScopeRange(ISymUnmanagedWriter* This,ULONG32 scopeID,ULONG32 startOffset,ULONG32 endOffset) {
    return This->lpVtbl->SetScopeRange(This,scopeID,startOffset,endOffset);
}
static inline HRESULT ISymUnmanagedWriter_DefineLocalVariable(ISymUnmanagedWriter* This,const WCHAR *name,ULONG32 attributes,ULONG32 cSig,unsigned char signature[],ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3,ULONG32 startOffset,ULONG32 endOffset) {
    return This->lpVtbl->DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset);
}
static inline HRESULT ISymUnmanagedWriter_DefineParameter(ISymUnmanagedWriter* This,const WCHAR *name,ULONG32 attributes,ULONG32 sequence,ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter_DefineField(ISymUnmanagedWriter* This,mdTypeDef parent,const WCHAR *name,ULONG32 attributes,ULONG32 cSig,unsigned char signature[],ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter_DefineGlobalVariable(ISymUnmanagedWriter* This,const WCHAR *name,ULONG32 attributes,ULONG32 cSig,unsigned char signature[],ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter_Close(ISymUnmanagedWriter* This) {
    return This->lpVtbl->Close(This);
}
static inline HRESULT ISymUnmanagedWriter_SetSymAttributes(ISymUnmanagedWriter* This,mdToken parent,const WCHAR *name,ULONG32 cData,unsigned char data[]) {
    return This->lpVtbl->SetSymAttributes(This,parent,name,cData,data);
}
static inline HRESULT ISymUnmanagedWriter_OpenNamespace(ISymUnmanagedWriter* This,const WCHAR *name) {
    return This->lpVtbl->OpenNamespace(This,name);
}
static inline HRESULT ISymUnmanagedWriter_CloseNamespace(ISymUnmanagedWriter* This) {
    return This->lpVtbl->CloseNamespace(This);
}
static inline HRESULT ISymUnmanagedWriter_UsingNamespace(ISymUnmanagedWriter* This,const WCHAR *fullName) {
    return This->lpVtbl->UsingNamespace(This,fullName);
}
static inline HRESULT ISymUnmanagedWriter_SetMethodSourceRange(ISymUnmanagedWriter* This,ISymUnmanagedDocumentWriter *startDoc,ULONG32 startLine,ULONG32 startColumn,ISymUnmanagedDocumentWriter *endDoc,ULONG32 endLine,ULONG32 endColumn) {
    return This->lpVtbl->SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn);
}
static inline HRESULT ISymUnmanagedWriter_Initialize(ISymUnmanagedWriter* This,IUnknown *emitter,const WCHAR *filename,IStream *pIStream,BOOL fFullBuild) {
    return This->lpVtbl->Initialize(This,emitter,filename,pIStream,fFullBuild);
}
static inline HRESULT ISymUnmanagedWriter_GetDebugInfo(ISymUnmanagedWriter* This,IMAGE_DEBUG_DIRECTORY *pIDD,DWORD cData,DWORD *pcData,BYTE data[]) {
    return This->lpVtbl->GetDebugInfo(This,pIDD,cData,pcData,data);
}
static inline HRESULT ISymUnmanagedWriter_DefineSequencePoints(ISymUnmanagedWriter* This,ISymUnmanagedDocumentWriter *document,ULONG32 spCount,ULONG32 offsets[],ULONG32 lines[],ULONG32 columns[],ULONG32 endLines[],ULONG32 endColumns[]) {
    return This->lpVtbl->DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns);
}
static inline HRESULT ISymUnmanagedWriter_RemapToken(ISymUnmanagedWriter* This,mdToken oldToken,mdToken newToken) {
    return This->lpVtbl->RemapToken(This,oldToken,newToken);
}
static inline HRESULT ISymUnmanagedWriter_Initialize2(ISymUnmanagedWriter* This,IUnknown *emitter,const WCHAR *tempFilename,IStream *pIStream,BOOL fFullBuild,const WCHAR *finalFilename) {
    return This->lpVtbl->Initialize2(This,emitter,tempFilename,pIStream,fFullBuild,finalFilename);
}
static inline HRESULT ISymUnmanagedWriter_DefineConstant(ISymUnmanagedWriter* This,const WCHAR *name,VARIANT value,ULONG32 cSig,unsigned char signature[]) {
    return This->lpVtbl->DefineConstant(This,name,value,cSig,signature);
}
static inline HRESULT ISymUnmanagedWriter_Abort(ISymUnmanagedWriter* This) {
    return This->lpVtbl->Abort(This);
}
#endif
#endif

#endif


#endif  /* __ISymUnmanagedWriter_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISymUnmanagedWriter2 interface
 */
#ifndef __ISymUnmanagedWriter2_INTERFACE_DEFINED__
#define __ISymUnmanagedWriter2_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISymUnmanagedWriter2, 0x0b97726e, 0x9e6d, 0x4f05, 0x9a,0x26, 0x42,0x40,0x22,0x09,0x3c,0xaa);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0b97726e-9e6d-4f05-9a26-424022093caa")
ISymUnmanagedWriter2 : public ISymUnmanagedWriter
{
    virtual HRESULT STDMETHODCALLTYPE DefineLocalVariable2(
        const WCHAR *name,
        ULONG32 attributes,
        mdSignature sigToken,
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3,
        ULONG32 startOffset,
        ULONG32 endOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE DefineGlobalVariable2(
        const WCHAR *name,
        ULONG32 attributes,
        mdSignature sigToken,
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3) = 0;

    virtual HRESULT STDMETHODCALLTYPE DefineConstant2(
        const WCHAR *name,
        VARIANT value,
        mdSignature sigToken) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISymUnmanagedWriter2, 0x0b97726e, 0x9e6d, 0x4f05, 0x9a,0x26, 0x42,0x40,0x22,0x09,0x3c,0xaa)
#endif
#else
typedef struct ISymUnmanagedWriter2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISymUnmanagedWriter2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISymUnmanagedWriter2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISymUnmanagedWriter2 *This);

    /*** ISymUnmanagedWriter methods ***/
    HRESULT (STDMETHODCALLTYPE *DefineDocument)(
        ISymUnmanagedWriter2 *This,
        const WCHAR *url,
        const GUID *language,
        const GUID *languageVendor,
        const GUID *documentType,
        ISymUnmanagedDocumentWriter **pRetVal);

    HRESULT (STDMETHODCALLTYPE *SetUserEntryPoint)(
        ISymUnmanagedWriter2 *This,
        mdMethodDef entryMethod);

    HRESULT (STDMETHODCALLTYPE *OpenMethod)(
        ISymUnmanagedWriter2 *This,
        mdMethodDef method);

    HRESULT (STDMETHODCALLTYPE *CloseMethod)(
        ISymUnmanagedWriter2 *This);

    HRESULT (STDMETHODCALLTYPE *OpenScope)(
        ISymUnmanagedWriter2 *This,
        ULONG32 startOffset,
        ULONG32 *pRetVal);

    HRESULT (STDMETHODCALLTYPE *CloseScope)(
        ISymUnmanagedWriter2 *This,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *SetScopeRange)(
        ISymUnmanagedWriter2 *This,
        ULONG32 scopeID,
        ULONG32 startOffset,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *DefineLocalVariable)(
        ISymUnmanagedWriter2 *This,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3,
        ULONG32 startOffset,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *DefineParameter)(
        ISymUnmanagedWriter2 *This,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 sequence,
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *DefineField)(
        ISymUnmanagedWriter2 *This,
        mdTypeDef parent,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *DefineGlobalVariable)(
        ISymUnmanagedWriter2 *This,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *Close)(
        ISymUnmanagedWriter2 *This);

    HRESULT (STDMETHODCALLTYPE *SetSymAttributes)(
        ISymUnmanagedWriter2 *This,
        mdToken parent,
        const WCHAR *name,
        ULONG32 cData,
        unsigned char data[]);

    HRESULT (STDMETHODCALLTYPE *OpenNamespace)(
        ISymUnmanagedWriter2 *This,
        const WCHAR *name);

    HRESULT (STDMETHODCALLTYPE *CloseNamespace)(
        ISymUnmanagedWriter2 *This);

    HRESULT (STDMETHODCALLTYPE *UsingNamespace)(
        ISymUnmanagedWriter2 *This,
        const WCHAR *fullName);

    HRESULT (STDMETHODCALLTYPE *SetMethodSourceRange)(
        ISymUnmanagedWriter2 *This,
        ISymUnmanagedDocumentWriter *startDoc,
        ULONG32 startLine,
        ULONG32 startColumn,
        ISymUnmanagedDocumentWriter *endDoc,
        ULONG32 endLine,
        ULONG32 endColumn);

    HRESULT (STDMETHODCALLTYPE *Initialize)(
        ISymUnmanagedWriter2 *This,
        IUnknown *emitter,
        const WCHAR *filename,
        IStream *pIStream,
        BOOL fFullBuild);

    HRESULT (STDMETHODCALLTYPE *GetDebugInfo)(
        ISymUnmanagedWriter2 *This,
        IMAGE_DEBUG_DIRECTORY *pIDD,
        DWORD cData,
        DWORD *pcData,
        BYTE data[]);

    HRESULT (STDMETHODCALLTYPE *DefineSequencePoints)(
        ISymUnmanagedWriter2 *This,
        ISymUnmanagedDocumentWriter *document,
        ULONG32 spCount,
        ULONG32 offsets[],
        ULONG32 lines[],
        ULONG32 columns[],
        ULONG32 endLines[],
        ULONG32 endColumns[]);

    HRESULT (STDMETHODCALLTYPE *RemapToken)(
        ISymUnmanagedWriter2 *This,
        mdToken oldToken,
        mdToken newToken);

    HRESULT (STDMETHODCALLTYPE *Initialize2)(
        ISymUnmanagedWriter2 *This,
        IUnknown *emitter,
        const WCHAR *tempFilename,
        IStream *pIStream,
        BOOL fFullBuild,
        const WCHAR *finalFilename);

    HRESULT (STDMETHODCALLTYPE *DefineConstant)(
        ISymUnmanagedWriter2 *This,
        const WCHAR *name,
        VARIANT value,
        ULONG32 cSig,
        unsigned char signature[]);

    HRESULT (STDMETHODCALLTYPE *Abort)(
        ISymUnmanagedWriter2 *This);

    /*** ISymUnmanagedWriter2 methods ***/
    HRESULT (STDMETHODCALLTYPE *DefineLocalVariable2)(
        ISymUnmanagedWriter2 *This,
        const WCHAR *name,
        ULONG32 attributes,
        mdSignature sigToken,
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3,
        ULONG32 startOffset,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *DefineGlobalVariable2)(
        ISymUnmanagedWriter2 *This,
        const WCHAR *name,
        ULONG32 attributes,
        mdSignature sigToken,
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *DefineConstant2)(
        ISymUnmanagedWriter2 *This,
        const WCHAR *name,
        VARIANT value,
        mdSignature sigToken);

    END_INTERFACE
} ISymUnmanagedWriter2Vtbl;

interface ISymUnmanagedWriter2 {
    CONST_VTBL ISymUnmanagedWriter2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISymUnmanagedWriter2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISymUnmanagedWriter2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISymUnmanagedWriter2_Release(This) (This)->lpVtbl->Release(This)
/*** ISymUnmanagedWriter methods ***/
#define ISymUnmanagedWriter2_DefineDocument(This,url,language,languageVendor,documentType,pRetVal) (This)->lpVtbl->DefineDocument(This,url,language,languageVendor,documentType,pRetVal)
#define ISymUnmanagedWriter2_SetUserEntryPoint(This,entryMethod) (This)->lpVtbl->SetUserEntryPoint(This,entryMethod)
#define ISymUnmanagedWriter2_OpenMethod(This,method) (This)->lpVtbl->OpenMethod(This,method)
#define ISymUnmanagedWriter2_CloseMethod(This) (This)->lpVtbl->CloseMethod(This)
#define ISymUnmanagedWriter2_OpenScope(This,startOffset,pRetVal) (This)->lpVtbl->OpenScope(This,startOffset,pRetVal)
#define ISymUnmanagedWriter2_CloseScope(This,endOffset) (This)->lpVtbl->CloseScope(This,endOffset)
#define ISymUnmanagedWriter2_SetScopeRange(This,scopeID,startOffset,endOffset) (This)->lpVtbl->SetScopeRange(This,scopeID,startOffset,endOffset)
#define ISymUnmanagedWriter2_DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset) (This)->lpVtbl->DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset)
#define ISymUnmanagedWriter2_DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter2_DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter2_DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter2_Close(This) (This)->lpVtbl->Close(This)
#define ISymUnmanagedWriter2_SetSymAttributes(This,parent,name,cData,data) (This)->lpVtbl->SetSymAttributes(This,parent,name,cData,data)
#define ISymUnmanagedWriter2_OpenNamespace(This,name) (This)->lpVtbl->OpenNamespace(This,name)
#define ISymUnmanagedWriter2_CloseNamespace(This) (This)->lpVtbl->CloseNamespace(This)
#define ISymUnmanagedWriter2_UsingNamespace(This,fullName) (This)->lpVtbl->UsingNamespace(This,fullName)
#define ISymUnmanagedWriter2_SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn) (This)->lpVtbl->SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn)
#define ISymUnmanagedWriter2_Initialize(This,emitter,filename,pIStream,fFullBuild) (This)->lpVtbl->Initialize(This,emitter,filename,pIStream,fFullBuild)
#define ISymUnmanagedWriter2_GetDebugInfo(This,pIDD,cData,pcData,data) (This)->lpVtbl->GetDebugInfo(This,pIDD,cData,pcData,data)
#define ISymUnmanagedWriter2_DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns) (This)->lpVtbl->DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns)
#define ISymUnmanagedWriter2_RemapToken(This,oldToken,newToken) (This)->lpVtbl->RemapToken(This,oldToken,newToken)
#define ISymUnmanagedWriter2_Initialize2(This,emitter,tempFilename,pIStream,fFullBuild,finalFilename) (This)->lpVtbl->Initialize2(This,emitter,tempFilename,pIStream,fFullBuild,finalFilename)
#define ISymUnmanagedWriter2_DefineConstant(This,name,value,cSig,signature) (This)->lpVtbl->DefineConstant(This,name,value,cSig,signature)
#define ISymUnmanagedWriter2_Abort(This) (This)->lpVtbl->Abort(This)
/*** ISymUnmanagedWriter2 methods ***/
#define ISymUnmanagedWriter2_DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset) (This)->lpVtbl->DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset)
#define ISymUnmanagedWriter2_DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter2_DefineConstant2(This,name,value,sigToken) (This)->lpVtbl->DefineConstant2(This,name,value,sigToken)
#else
/*** IUnknown methods ***/
static inline HRESULT ISymUnmanagedWriter2_QueryInterface(ISymUnmanagedWriter2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ISymUnmanagedWriter2_AddRef(ISymUnmanagedWriter2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ISymUnmanagedWriter2_Release(ISymUnmanagedWriter2* This) {
    return This->lpVtbl->Release(This);
}
/*** ISymUnmanagedWriter methods ***/
static inline HRESULT ISymUnmanagedWriter2_DefineDocument(ISymUnmanagedWriter2* This,const WCHAR *url,const GUID *language,const GUID *languageVendor,const GUID *documentType,ISymUnmanagedDocumentWriter **pRetVal) {
    return This->lpVtbl->DefineDocument(This,url,language,languageVendor,documentType,pRetVal);
}
static inline HRESULT ISymUnmanagedWriter2_SetUserEntryPoint(ISymUnmanagedWriter2* This,mdMethodDef entryMethod) {
    return This->lpVtbl->SetUserEntryPoint(This,entryMethod);
}
static inline HRESULT ISymUnmanagedWriter2_OpenMethod(ISymUnmanagedWriter2* This,mdMethodDef method) {
    return This->lpVtbl->OpenMethod(This,method);
}
static inline HRESULT ISymUnmanagedWriter2_CloseMethod(ISymUnmanagedWriter2* This) {
    return This->lpVtbl->CloseMethod(This);
}
static inline HRESULT ISymUnmanagedWriter2_OpenScope(ISymUnmanagedWriter2* This,ULONG32 startOffset,ULONG32 *pRetVal) {
    return This->lpVtbl->OpenScope(This,startOffset,pRetVal);
}
static inline HRESULT ISymUnmanagedWriter2_CloseScope(ISymUnmanagedWriter2* This,ULONG32 endOffset) {
    return This->lpVtbl->CloseScope(This,endOffset);
}
static inline HRESULT ISymUnmanagedWriter2_SetScopeRange(ISymUnmanagedWriter2* This,ULONG32 scopeID,ULONG32 startOffset,ULONG32 endOffset) {
    return This->lpVtbl->SetScopeRange(This,scopeID,startOffset,endOffset);
}
static inline HRESULT ISymUnmanagedWriter2_DefineLocalVariable(ISymUnmanagedWriter2* This,const WCHAR *name,ULONG32 attributes,ULONG32 cSig,unsigned char signature[],ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3,ULONG32 startOffset,ULONG32 endOffset) {
    return This->lpVtbl->DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset);
}
static inline HRESULT ISymUnmanagedWriter2_DefineParameter(ISymUnmanagedWriter2* This,const WCHAR *name,ULONG32 attributes,ULONG32 sequence,ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter2_DefineField(ISymUnmanagedWriter2* This,mdTypeDef parent,const WCHAR *name,ULONG32 attributes,ULONG32 cSig,unsigned char signature[],ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter2_DefineGlobalVariable(ISymUnmanagedWriter2* This,const WCHAR *name,ULONG32 attributes,ULONG32 cSig,unsigned char signature[],ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter2_Close(ISymUnmanagedWriter2* This) {
    return This->lpVtbl->Close(This);
}
static inline HRESULT ISymUnmanagedWriter2_SetSymAttributes(ISymUnmanagedWriter2* This,mdToken parent,const WCHAR *name,ULONG32 cData,unsigned char data[]) {
    return This->lpVtbl->SetSymAttributes(This,parent,name,cData,data);
}
static inline HRESULT ISymUnmanagedWriter2_OpenNamespace(ISymUnmanagedWriter2* This,const WCHAR *name) {
    return This->lpVtbl->OpenNamespace(This,name);
}
static inline HRESULT ISymUnmanagedWriter2_CloseNamespace(ISymUnmanagedWriter2* This) {
    return This->lpVtbl->CloseNamespace(This);
}
static inline HRESULT ISymUnmanagedWriter2_UsingNamespace(ISymUnmanagedWriter2* This,const WCHAR *fullName) {
    return This->lpVtbl->UsingNamespace(This,fullName);
}
static inline HRESULT ISymUnmanagedWriter2_SetMethodSourceRange(ISymUnmanagedWriter2* This,ISymUnmanagedDocumentWriter *startDoc,ULONG32 startLine,ULONG32 startColumn,ISymUnmanagedDocumentWriter *endDoc,ULONG32 endLine,ULONG32 endColumn) {
    return This->lpVtbl->SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn);
}
static inline HRESULT ISymUnmanagedWriter2_Initialize(ISymUnmanagedWriter2* This,IUnknown *emitter,const WCHAR *filename,IStream *pIStream,BOOL fFullBuild) {
    return This->lpVtbl->Initialize(This,emitter,filename,pIStream,fFullBuild);
}
static inline HRESULT ISymUnmanagedWriter2_GetDebugInfo(ISymUnmanagedWriter2* This,IMAGE_DEBUG_DIRECTORY *pIDD,DWORD cData,DWORD *pcData,BYTE data[]) {
    return This->lpVtbl->GetDebugInfo(This,pIDD,cData,pcData,data);
}
static inline HRESULT ISymUnmanagedWriter2_DefineSequencePoints(ISymUnmanagedWriter2* This,ISymUnmanagedDocumentWriter *document,ULONG32 spCount,ULONG32 offsets[],ULONG32 lines[],ULONG32 columns[],ULONG32 endLines[],ULONG32 endColumns[]) {
    return This->lpVtbl->DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns);
}
static inline HRESULT ISymUnmanagedWriter2_RemapToken(ISymUnmanagedWriter2* This,mdToken oldToken,mdToken newToken) {
    return This->lpVtbl->RemapToken(This,oldToken,newToken);
}
static inline HRESULT ISymUnmanagedWriter2_Initialize2(ISymUnmanagedWriter2* This,IUnknown *emitter,const WCHAR *tempFilename,IStream *pIStream,BOOL fFullBuild,const WCHAR *finalFilename) {
    return This->lpVtbl->Initialize2(This,emitter,tempFilename,pIStream,fFullBuild,finalFilename);
}
static inline HRESULT ISymUnmanagedWriter2_DefineConstant(ISymUnmanagedWriter2* This,const WCHAR *name,VARIANT value,ULONG32 cSig,unsigned char signature[]) {
    return This->lpVtbl->DefineConstant(This,name,value,cSig,signature);
}
static inline HRESULT ISymUnmanagedWriter2_Abort(ISymUnmanagedWriter2* This) {
    return This->lpVtbl->Abort(This);
}
/*** ISymUnmanagedWriter2 methods ***/
static inline HRESULT ISymUnmanagedWriter2_DefineLocalVariable2(ISymUnmanagedWriter2* This,const WCHAR *name,ULONG32 attributes,mdSignature sigToken,ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3,ULONG32 startOffset,ULONG32 endOffset) {
    return This->lpVtbl->DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset);
}
static inline HRESULT ISymUnmanagedWriter2_DefineGlobalVariable2(ISymUnmanagedWriter2* This,const WCHAR *name,ULONG32 attributes,mdSignature sigToken,ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter2_DefineConstant2(ISymUnmanagedWriter2* This,const WCHAR *name,VARIANT value,mdSignature sigToken) {
    return This->lpVtbl->DefineConstant2(This,name,value,sigToken);
}
#endif
#endif

#endif


#endif  /* __ISymUnmanagedWriter2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISymUnmanagedWriter3 interface
 */
#ifndef __ISymUnmanagedWriter3_INTERFACE_DEFINED__
#define __ISymUnmanagedWriter3_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISymUnmanagedWriter3, 0x12f1e02c, 0x1e05, 0x4b0e, 0x94,0x68, 0xeb,0xc9,0xd1,0xbb,0x04,0x0f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("12f1e02c-1e05-4b0e-9468-ebc9d1bb040f")
ISymUnmanagedWriter3 : public ISymUnmanagedWriter2
{
    virtual HRESULT STDMETHODCALLTYPE OpenMethod2(
        mdMethodDef method,
        ULONG32 isect,
        ULONG32 offset) = 0;

    virtual HRESULT STDMETHODCALLTYPE Commit(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISymUnmanagedWriter3, 0x12f1e02c, 0x1e05, 0x4b0e, 0x94,0x68, 0xeb,0xc9,0xd1,0xbb,0x04,0x0f)
#endif
#else
typedef struct ISymUnmanagedWriter3Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISymUnmanagedWriter3 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISymUnmanagedWriter3 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISymUnmanagedWriter3 *This);

    /*** ISymUnmanagedWriter methods ***/
    HRESULT (STDMETHODCALLTYPE *DefineDocument)(
        ISymUnmanagedWriter3 *This,
        const WCHAR *url,
        const GUID *language,
        const GUID *languageVendor,
        const GUID *documentType,
        ISymUnmanagedDocumentWriter **pRetVal);

    HRESULT (STDMETHODCALLTYPE *SetUserEntryPoint)(
        ISymUnmanagedWriter3 *This,
        mdMethodDef entryMethod);

    HRESULT (STDMETHODCALLTYPE *OpenMethod)(
        ISymUnmanagedWriter3 *This,
        mdMethodDef method);

    HRESULT (STDMETHODCALLTYPE *CloseMethod)(
        ISymUnmanagedWriter3 *This);

    HRESULT (STDMETHODCALLTYPE *OpenScope)(
        ISymUnmanagedWriter3 *This,
        ULONG32 startOffset,
        ULONG32 *pRetVal);

    HRESULT (STDMETHODCALLTYPE *CloseScope)(
        ISymUnmanagedWriter3 *This,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *SetScopeRange)(
        ISymUnmanagedWriter3 *This,
        ULONG32 scopeID,
        ULONG32 startOffset,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *DefineLocalVariable)(
        ISymUnmanagedWriter3 *This,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3,
        ULONG32 startOffset,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *DefineParameter)(
        ISymUnmanagedWriter3 *This,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 sequence,
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *DefineField)(
        ISymUnmanagedWriter3 *This,
        mdTypeDef parent,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *DefineGlobalVariable)(
        ISymUnmanagedWriter3 *This,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *Close)(
        ISymUnmanagedWriter3 *This);

    HRESULT (STDMETHODCALLTYPE *SetSymAttributes)(
        ISymUnmanagedWriter3 *This,
        mdToken parent,
        const WCHAR *name,
        ULONG32 cData,
        unsigned char data[]);

    HRESULT (STDMETHODCALLTYPE *OpenNamespace)(
        ISymUnmanagedWriter3 *This,
        const WCHAR *name);

    HRESULT (STDMETHODCALLTYPE *CloseNamespace)(
        ISymUnmanagedWriter3 *This);

    HRESULT (STDMETHODCALLTYPE *UsingNamespace)(
        ISymUnmanagedWriter3 *This,
        const WCHAR *fullName);

    HRESULT (STDMETHODCALLTYPE *SetMethodSourceRange)(
        ISymUnmanagedWriter3 *This,
        ISymUnmanagedDocumentWriter *startDoc,
        ULONG32 startLine,
        ULONG32 startColumn,
        ISymUnmanagedDocumentWriter *endDoc,
        ULONG32 endLine,
        ULONG32 endColumn);

    HRESULT (STDMETHODCALLTYPE *Initialize)(
        ISymUnmanagedWriter3 *This,
        IUnknown *emitter,
        const WCHAR *filename,
        IStream *pIStream,
        BOOL fFullBuild);

    HRESULT (STDMETHODCALLTYPE *GetDebugInfo)(
        ISymUnmanagedWriter3 *This,
        IMAGE_DEBUG_DIRECTORY *pIDD,
        DWORD cData,
        DWORD *pcData,
        BYTE data[]);

    HRESULT (STDMETHODCALLTYPE *DefineSequencePoints)(
        ISymUnmanagedWriter3 *This,
        ISymUnmanagedDocumentWriter *document,
        ULONG32 spCount,
        ULONG32 offsets[],
        ULONG32 lines[],
        ULONG32 columns[],
        ULONG32 endLines[],
        ULONG32 endColumns[]);

    HRESULT (STDMETHODCALLTYPE *RemapToken)(
        ISymUnmanagedWriter3 *This,
        mdToken oldToken,
        mdToken newToken);

    HRESULT (STDMETHODCALLTYPE *Initialize2)(
        ISymUnmanagedWriter3 *This,
        IUnknown *emitter,
        const WCHAR *tempFilename,
        IStream *pIStream,
        BOOL fFullBuild,
        const WCHAR *finalFilename);

    HRESULT (STDMETHODCALLTYPE *DefineConstant)(
        ISymUnmanagedWriter3 *This,
        const WCHAR *name,
        VARIANT value,
        ULONG32 cSig,
        unsigned char signature[]);

    HRESULT (STDMETHODCALLTYPE *Abort)(
        ISymUnmanagedWriter3 *This);

    /*** ISymUnmanagedWriter2 methods ***/
    HRESULT (STDMETHODCALLTYPE *DefineLocalVariable2)(
        ISymUnmanagedWriter3 *This,
        const WCHAR *name,
        ULONG32 attributes,
        mdSignature sigToken,
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3,
        ULONG32 startOffset,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *DefineGlobalVariable2)(
        ISymUnmanagedWriter3 *This,
        const WCHAR *name,
        ULONG32 attributes,
        mdSignature sigToken,
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *DefineConstant2)(
        ISymUnmanagedWriter3 *This,
        const WCHAR *name,
        VARIANT value,
        mdSignature sigToken);

    /*** ISymUnmanagedWriter3 methods ***/
    HRESULT (STDMETHODCALLTYPE *OpenMethod2)(
        ISymUnmanagedWriter3 *This,
        mdMethodDef method,
        ULONG32 isect,
        ULONG32 offset);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        ISymUnmanagedWriter3 *This);

    END_INTERFACE
} ISymUnmanagedWriter3Vtbl;

interface ISymUnmanagedWriter3 {
    CONST_VTBL ISymUnmanagedWriter3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISymUnmanagedWriter3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISymUnmanagedWriter3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISymUnmanagedWriter3_Release(This) (This)->lpVtbl->Release(This)
/*** ISymUnmanagedWriter methods ***/
#define ISymUnmanagedWriter3_DefineDocument(This,url,language,languageVendor,documentType,pRetVal) (This)->lpVtbl->DefineDocument(This,url,language,languageVendor,documentType,pRetVal)
#define ISymUnmanagedWriter3_SetUserEntryPoint(This,entryMethod) (This)->lpVtbl->SetUserEntryPoint(This,entryMethod)
#define ISymUnmanagedWriter3_OpenMethod(This,method) (This)->lpVtbl->OpenMethod(This,method)
#define ISymUnmanagedWriter3_CloseMethod(This) (This)->lpVtbl->CloseMethod(This)
#define ISymUnmanagedWriter3_OpenScope(This,startOffset,pRetVal) (This)->lpVtbl->OpenScope(This,startOffset,pRetVal)
#define ISymUnmanagedWriter3_CloseScope(This,endOffset) (This)->lpVtbl->CloseScope(This,endOffset)
#define ISymUnmanagedWriter3_SetScopeRange(This,scopeID,startOffset,endOffset) (This)->lpVtbl->SetScopeRange(This,scopeID,startOffset,endOffset)
#define ISymUnmanagedWriter3_DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset) (This)->lpVtbl->DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset)
#define ISymUnmanagedWriter3_DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter3_DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter3_DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter3_Close(This) (This)->lpVtbl->Close(This)
#define ISymUnmanagedWriter3_SetSymAttributes(This,parent,name,cData,data) (This)->lpVtbl->SetSymAttributes(This,parent,name,cData,data)
#define ISymUnmanagedWriter3_OpenNamespace(This,name) (This)->lpVtbl->OpenNamespace(This,name)
#define ISymUnmanagedWriter3_CloseNamespace(This) (This)->lpVtbl->CloseNamespace(This)
#define ISymUnmanagedWriter3_UsingNamespace(This,fullName) (This)->lpVtbl->UsingNamespace(This,fullName)
#define ISymUnmanagedWriter3_SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn) (This)->lpVtbl->SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn)
#define ISymUnmanagedWriter3_Initialize(This,emitter,filename,pIStream,fFullBuild) (This)->lpVtbl->Initialize(This,emitter,filename,pIStream,fFullBuild)
#define ISymUnmanagedWriter3_GetDebugInfo(This,pIDD,cData,pcData,data) (This)->lpVtbl->GetDebugInfo(This,pIDD,cData,pcData,data)
#define ISymUnmanagedWriter3_DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns) (This)->lpVtbl->DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns)
#define ISymUnmanagedWriter3_RemapToken(This,oldToken,newToken) (This)->lpVtbl->RemapToken(This,oldToken,newToken)
#define ISymUnmanagedWriter3_Initialize2(This,emitter,tempFilename,pIStream,fFullBuild,finalFilename) (This)->lpVtbl->Initialize2(This,emitter,tempFilename,pIStream,fFullBuild,finalFilename)
#define ISymUnmanagedWriter3_DefineConstant(This,name,value,cSig,signature) (This)->lpVtbl->DefineConstant(This,name,value,cSig,signature)
#define ISymUnmanagedWriter3_Abort(This) (This)->lpVtbl->Abort(This)
/*** ISymUnmanagedWriter2 methods ***/
#define ISymUnmanagedWriter3_DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset) (This)->lpVtbl->DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset)
#define ISymUnmanagedWriter3_DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter3_DefineConstant2(This,name,value,sigToken) (This)->lpVtbl->DefineConstant2(This,name,value,sigToken)
/*** ISymUnmanagedWriter3 methods ***/
#define ISymUnmanagedWriter3_OpenMethod2(This,method,isect,offset) (This)->lpVtbl->OpenMethod2(This,method,isect,offset)
#define ISymUnmanagedWriter3_Commit(This) (This)->lpVtbl->Commit(This)
#else
/*** IUnknown methods ***/
static inline HRESULT ISymUnmanagedWriter3_QueryInterface(ISymUnmanagedWriter3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ISymUnmanagedWriter3_AddRef(ISymUnmanagedWriter3* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ISymUnmanagedWriter3_Release(ISymUnmanagedWriter3* This) {
    return This->lpVtbl->Release(This);
}
/*** ISymUnmanagedWriter methods ***/
static inline HRESULT ISymUnmanagedWriter3_DefineDocument(ISymUnmanagedWriter3* This,const WCHAR *url,const GUID *language,const GUID *languageVendor,const GUID *documentType,ISymUnmanagedDocumentWriter **pRetVal) {
    return This->lpVtbl->DefineDocument(This,url,language,languageVendor,documentType,pRetVal);
}
static inline HRESULT ISymUnmanagedWriter3_SetUserEntryPoint(ISymUnmanagedWriter3* This,mdMethodDef entryMethod) {
    return This->lpVtbl->SetUserEntryPoint(This,entryMethod);
}
static inline HRESULT ISymUnmanagedWriter3_OpenMethod(ISymUnmanagedWriter3* This,mdMethodDef method) {
    return This->lpVtbl->OpenMethod(This,method);
}
static inline HRESULT ISymUnmanagedWriter3_CloseMethod(ISymUnmanagedWriter3* This) {
    return This->lpVtbl->CloseMethod(This);
}
static inline HRESULT ISymUnmanagedWriter3_OpenScope(ISymUnmanagedWriter3* This,ULONG32 startOffset,ULONG32 *pRetVal) {
    return This->lpVtbl->OpenScope(This,startOffset,pRetVal);
}
static inline HRESULT ISymUnmanagedWriter3_CloseScope(ISymUnmanagedWriter3* This,ULONG32 endOffset) {
    return This->lpVtbl->CloseScope(This,endOffset);
}
static inline HRESULT ISymUnmanagedWriter3_SetScopeRange(ISymUnmanagedWriter3* This,ULONG32 scopeID,ULONG32 startOffset,ULONG32 endOffset) {
    return This->lpVtbl->SetScopeRange(This,scopeID,startOffset,endOffset);
}
static inline HRESULT ISymUnmanagedWriter3_DefineLocalVariable(ISymUnmanagedWriter3* This,const WCHAR *name,ULONG32 attributes,ULONG32 cSig,unsigned char signature[],ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3,ULONG32 startOffset,ULONG32 endOffset) {
    return This->lpVtbl->DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset);
}
static inline HRESULT ISymUnmanagedWriter3_DefineParameter(ISymUnmanagedWriter3* This,const WCHAR *name,ULONG32 attributes,ULONG32 sequence,ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter3_DefineField(ISymUnmanagedWriter3* This,mdTypeDef parent,const WCHAR *name,ULONG32 attributes,ULONG32 cSig,unsigned char signature[],ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter3_DefineGlobalVariable(ISymUnmanagedWriter3* This,const WCHAR *name,ULONG32 attributes,ULONG32 cSig,unsigned char signature[],ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter3_Close(ISymUnmanagedWriter3* This) {
    return This->lpVtbl->Close(This);
}
static inline HRESULT ISymUnmanagedWriter3_SetSymAttributes(ISymUnmanagedWriter3* This,mdToken parent,const WCHAR *name,ULONG32 cData,unsigned char data[]) {
    return This->lpVtbl->SetSymAttributes(This,parent,name,cData,data);
}
static inline HRESULT ISymUnmanagedWriter3_OpenNamespace(ISymUnmanagedWriter3* This,const WCHAR *name) {
    return This->lpVtbl->OpenNamespace(This,name);
}
static inline HRESULT ISymUnmanagedWriter3_CloseNamespace(ISymUnmanagedWriter3* This) {
    return This->lpVtbl->CloseNamespace(This);
}
static inline HRESULT ISymUnmanagedWriter3_UsingNamespace(ISymUnmanagedWriter3* This,const WCHAR *fullName) {
    return This->lpVtbl->UsingNamespace(This,fullName);
}
static inline HRESULT ISymUnmanagedWriter3_SetMethodSourceRange(ISymUnmanagedWriter3* This,ISymUnmanagedDocumentWriter *startDoc,ULONG32 startLine,ULONG32 startColumn,ISymUnmanagedDocumentWriter *endDoc,ULONG32 endLine,ULONG32 endColumn) {
    return This->lpVtbl->SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn);
}
static inline HRESULT ISymUnmanagedWriter3_Initialize(ISymUnmanagedWriter3* This,IUnknown *emitter,const WCHAR *filename,IStream *pIStream,BOOL fFullBuild) {
    return This->lpVtbl->Initialize(This,emitter,filename,pIStream,fFullBuild);
}
static inline HRESULT ISymUnmanagedWriter3_GetDebugInfo(ISymUnmanagedWriter3* This,IMAGE_DEBUG_DIRECTORY *pIDD,DWORD cData,DWORD *pcData,BYTE data[]) {
    return This->lpVtbl->GetDebugInfo(This,pIDD,cData,pcData,data);
}
static inline HRESULT ISymUnmanagedWriter3_DefineSequencePoints(ISymUnmanagedWriter3* This,ISymUnmanagedDocumentWriter *document,ULONG32 spCount,ULONG32 offsets[],ULONG32 lines[],ULONG32 columns[],ULONG32 endLines[],ULONG32 endColumns[]) {
    return This->lpVtbl->DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns);
}
static inline HRESULT ISymUnmanagedWriter3_RemapToken(ISymUnmanagedWriter3* This,mdToken oldToken,mdToken newToken) {
    return This->lpVtbl->RemapToken(This,oldToken,newToken);
}
static inline HRESULT ISymUnmanagedWriter3_Initialize2(ISymUnmanagedWriter3* This,IUnknown *emitter,const WCHAR *tempFilename,IStream *pIStream,BOOL fFullBuild,const WCHAR *finalFilename) {
    return This->lpVtbl->Initialize2(This,emitter,tempFilename,pIStream,fFullBuild,finalFilename);
}
static inline HRESULT ISymUnmanagedWriter3_DefineConstant(ISymUnmanagedWriter3* This,const WCHAR *name,VARIANT value,ULONG32 cSig,unsigned char signature[]) {
    return This->lpVtbl->DefineConstant(This,name,value,cSig,signature);
}
static inline HRESULT ISymUnmanagedWriter3_Abort(ISymUnmanagedWriter3* This) {
    return This->lpVtbl->Abort(This);
}
/*** ISymUnmanagedWriter2 methods ***/
static inline HRESULT ISymUnmanagedWriter3_DefineLocalVariable2(ISymUnmanagedWriter3* This,const WCHAR *name,ULONG32 attributes,mdSignature sigToken,ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3,ULONG32 startOffset,ULONG32 endOffset) {
    return This->lpVtbl->DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset);
}
static inline HRESULT ISymUnmanagedWriter3_DefineGlobalVariable2(ISymUnmanagedWriter3* This,const WCHAR *name,ULONG32 attributes,mdSignature sigToken,ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter3_DefineConstant2(ISymUnmanagedWriter3* This,const WCHAR *name,VARIANT value,mdSignature sigToken) {
    return This->lpVtbl->DefineConstant2(This,name,value,sigToken);
}
/*** ISymUnmanagedWriter3 methods ***/
static inline HRESULT ISymUnmanagedWriter3_OpenMethod2(ISymUnmanagedWriter3* This,mdMethodDef method,ULONG32 isect,ULONG32 offset) {
    return This->lpVtbl->OpenMethod2(This,method,isect,offset);
}
static inline HRESULT ISymUnmanagedWriter3_Commit(ISymUnmanagedWriter3* This) {
    return This->lpVtbl->Commit(This);
}
#endif
#endif

#endif


#endif  /* __ISymUnmanagedWriter3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISymUnmanagedWriter4 interface
 */
#ifndef __ISymUnmanagedWriter4_INTERFACE_DEFINED__
#define __ISymUnmanagedWriter4_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISymUnmanagedWriter4, 0xbc7e3f53, 0xf458, 0x4c23, 0x9d,0xbd, 0xa1,0x89,0xe6,0xe9,0x65,0x94);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bc7e3f53-f458-4c23-9dbd-a189e6e96594")
ISymUnmanagedWriter4 : public ISymUnmanagedWriter3
{
    virtual HRESULT STDMETHODCALLTYPE GetDebugInfoWithPadding(
        IMAGE_DEBUG_DIRECTORY *pIDD,
        DWORD cbData,
        DWORD *pcData,
        BYTE data[]) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISymUnmanagedWriter4, 0xbc7e3f53, 0xf458, 0x4c23, 0x9d,0xbd, 0xa1,0x89,0xe6,0xe9,0x65,0x94)
#endif
#else
typedef struct ISymUnmanagedWriter4Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISymUnmanagedWriter4 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISymUnmanagedWriter4 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISymUnmanagedWriter4 *This);

    /*** ISymUnmanagedWriter methods ***/
    HRESULT (STDMETHODCALLTYPE *DefineDocument)(
        ISymUnmanagedWriter4 *This,
        const WCHAR *url,
        const GUID *language,
        const GUID *languageVendor,
        const GUID *documentType,
        ISymUnmanagedDocumentWriter **pRetVal);

    HRESULT (STDMETHODCALLTYPE *SetUserEntryPoint)(
        ISymUnmanagedWriter4 *This,
        mdMethodDef entryMethod);

    HRESULT (STDMETHODCALLTYPE *OpenMethod)(
        ISymUnmanagedWriter4 *This,
        mdMethodDef method);

    HRESULT (STDMETHODCALLTYPE *CloseMethod)(
        ISymUnmanagedWriter4 *This);

    HRESULT (STDMETHODCALLTYPE *OpenScope)(
        ISymUnmanagedWriter4 *This,
        ULONG32 startOffset,
        ULONG32 *pRetVal);

    HRESULT (STDMETHODCALLTYPE *CloseScope)(
        ISymUnmanagedWriter4 *This,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *SetScopeRange)(
        ISymUnmanagedWriter4 *This,
        ULONG32 scopeID,
        ULONG32 startOffset,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *DefineLocalVariable)(
        ISymUnmanagedWriter4 *This,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3,
        ULONG32 startOffset,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *DefineParameter)(
        ISymUnmanagedWriter4 *This,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 sequence,
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *DefineField)(
        ISymUnmanagedWriter4 *This,
        mdTypeDef parent,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *DefineGlobalVariable)(
        ISymUnmanagedWriter4 *This,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *Close)(
        ISymUnmanagedWriter4 *This);

    HRESULT (STDMETHODCALLTYPE *SetSymAttributes)(
        ISymUnmanagedWriter4 *This,
        mdToken parent,
        const WCHAR *name,
        ULONG32 cData,
        unsigned char data[]);

    HRESULT (STDMETHODCALLTYPE *OpenNamespace)(
        ISymUnmanagedWriter4 *This,
        const WCHAR *name);

    HRESULT (STDMETHODCALLTYPE *CloseNamespace)(
        ISymUnmanagedWriter4 *This);

    HRESULT (STDMETHODCALLTYPE *UsingNamespace)(
        ISymUnmanagedWriter4 *This,
        const WCHAR *fullName);

    HRESULT (STDMETHODCALLTYPE *SetMethodSourceRange)(
        ISymUnmanagedWriter4 *This,
        ISymUnmanagedDocumentWriter *startDoc,
        ULONG32 startLine,
        ULONG32 startColumn,
        ISymUnmanagedDocumentWriter *endDoc,
        ULONG32 endLine,
        ULONG32 endColumn);

    HRESULT (STDMETHODCALLTYPE *Initialize)(
        ISymUnmanagedWriter4 *This,
        IUnknown *emitter,
        const WCHAR *filename,
        IStream *pIStream,
        BOOL fFullBuild);

    HRESULT (STDMETHODCALLTYPE *GetDebugInfo)(
        ISymUnmanagedWriter4 *This,
        IMAGE_DEBUG_DIRECTORY *pIDD,
        DWORD cData,
        DWORD *pcData,
        BYTE data[]);

    HRESULT (STDMETHODCALLTYPE *DefineSequencePoints)(
        ISymUnmanagedWriter4 *This,
        ISymUnmanagedDocumentWriter *document,
        ULONG32 spCount,
        ULONG32 offsets[],
        ULONG32 lines[],
        ULONG32 columns[],
        ULONG32 endLines[],
        ULONG32 endColumns[]);

    HRESULT (STDMETHODCALLTYPE *RemapToken)(
        ISymUnmanagedWriter4 *This,
        mdToken oldToken,
        mdToken newToken);

    HRESULT (STDMETHODCALLTYPE *Initialize2)(
        ISymUnmanagedWriter4 *This,
        IUnknown *emitter,
        const WCHAR *tempFilename,
        IStream *pIStream,
        BOOL fFullBuild,
        const WCHAR *finalFilename);

    HRESULT (STDMETHODCALLTYPE *DefineConstant)(
        ISymUnmanagedWriter4 *This,
        const WCHAR *name,
        VARIANT value,
        ULONG32 cSig,
        unsigned char signature[]);

    HRESULT (STDMETHODCALLTYPE *Abort)(
        ISymUnmanagedWriter4 *This);

    /*** ISymUnmanagedWriter2 methods ***/
    HRESULT (STDMETHODCALLTYPE *DefineLocalVariable2)(
        ISymUnmanagedWriter4 *This,
        const WCHAR *name,
        ULONG32 attributes,
        mdSignature sigToken,
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3,
        ULONG32 startOffset,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *DefineGlobalVariable2)(
        ISymUnmanagedWriter4 *This,
        const WCHAR *name,
        ULONG32 attributes,
        mdSignature sigToken,
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *DefineConstant2)(
        ISymUnmanagedWriter4 *This,
        const WCHAR *name,
        VARIANT value,
        mdSignature sigToken);

    /*** ISymUnmanagedWriter3 methods ***/
    HRESULT (STDMETHODCALLTYPE *OpenMethod2)(
        ISymUnmanagedWriter4 *This,
        mdMethodDef method,
        ULONG32 isect,
        ULONG32 offset);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        ISymUnmanagedWriter4 *This);

    /*** ISymUnmanagedWriter4 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDebugInfoWithPadding)(
        ISymUnmanagedWriter4 *This,
        IMAGE_DEBUG_DIRECTORY *pIDD,
        DWORD cbData,
        DWORD *pcData,
        BYTE data[]);

    END_INTERFACE
} ISymUnmanagedWriter4Vtbl;

interface ISymUnmanagedWriter4 {
    CONST_VTBL ISymUnmanagedWriter4Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISymUnmanagedWriter4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISymUnmanagedWriter4_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISymUnmanagedWriter4_Release(This) (This)->lpVtbl->Release(This)
/*** ISymUnmanagedWriter methods ***/
#define ISymUnmanagedWriter4_DefineDocument(This,url,language,languageVendor,documentType,pRetVal) (This)->lpVtbl->DefineDocument(This,url,language,languageVendor,documentType,pRetVal)
#define ISymUnmanagedWriter4_SetUserEntryPoint(This,entryMethod) (This)->lpVtbl->SetUserEntryPoint(This,entryMethod)
#define ISymUnmanagedWriter4_OpenMethod(This,method) (This)->lpVtbl->OpenMethod(This,method)
#define ISymUnmanagedWriter4_CloseMethod(This) (This)->lpVtbl->CloseMethod(This)
#define ISymUnmanagedWriter4_OpenScope(This,startOffset,pRetVal) (This)->lpVtbl->OpenScope(This,startOffset,pRetVal)
#define ISymUnmanagedWriter4_CloseScope(This,endOffset) (This)->lpVtbl->CloseScope(This,endOffset)
#define ISymUnmanagedWriter4_SetScopeRange(This,scopeID,startOffset,endOffset) (This)->lpVtbl->SetScopeRange(This,scopeID,startOffset,endOffset)
#define ISymUnmanagedWriter4_DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset) (This)->lpVtbl->DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset)
#define ISymUnmanagedWriter4_DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter4_DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter4_DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter4_Close(This) (This)->lpVtbl->Close(This)
#define ISymUnmanagedWriter4_SetSymAttributes(This,parent,name,cData,data) (This)->lpVtbl->SetSymAttributes(This,parent,name,cData,data)
#define ISymUnmanagedWriter4_OpenNamespace(This,name) (This)->lpVtbl->OpenNamespace(This,name)
#define ISymUnmanagedWriter4_CloseNamespace(This) (This)->lpVtbl->CloseNamespace(This)
#define ISymUnmanagedWriter4_UsingNamespace(This,fullName) (This)->lpVtbl->UsingNamespace(This,fullName)
#define ISymUnmanagedWriter4_SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn) (This)->lpVtbl->SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn)
#define ISymUnmanagedWriter4_Initialize(This,emitter,filename,pIStream,fFullBuild) (This)->lpVtbl->Initialize(This,emitter,filename,pIStream,fFullBuild)
#define ISymUnmanagedWriter4_GetDebugInfo(This,pIDD,cData,pcData,data) (This)->lpVtbl->GetDebugInfo(This,pIDD,cData,pcData,data)
#define ISymUnmanagedWriter4_DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns) (This)->lpVtbl->DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns)
#define ISymUnmanagedWriter4_RemapToken(This,oldToken,newToken) (This)->lpVtbl->RemapToken(This,oldToken,newToken)
#define ISymUnmanagedWriter4_Initialize2(This,emitter,tempFilename,pIStream,fFullBuild,finalFilename) (This)->lpVtbl->Initialize2(This,emitter,tempFilename,pIStream,fFullBuild,finalFilename)
#define ISymUnmanagedWriter4_DefineConstant(This,name,value,cSig,signature) (This)->lpVtbl->DefineConstant(This,name,value,cSig,signature)
#define ISymUnmanagedWriter4_Abort(This) (This)->lpVtbl->Abort(This)
/*** ISymUnmanagedWriter2 methods ***/
#define ISymUnmanagedWriter4_DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset) (This)->lpVtbl->DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset)
#define ISymUnmanagedWriter4_DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter4_DefineConstant2(This,name,value,sigToken) (This)->lpVtbl->DefineConstant2(This,name,value,sigToken)
/*** ISymUnmanagedWriter3 methods ***/
#define ISymUnmanagedWriter4_OpenMethod2(This,method,isect,offset) (This)->lpVtbl->OpenMethod2(This,method,isect,offset)
#define ISymUnmanagedWriter4_Commit(This) (This)->lpVtbl->Commit(This)
/*** ISymUnmanagedWriter4 methods ***/
#define ISymUnmanagedWriter4_GetDebugInfoWithPadding(This,pIDD,cbData,pcData,data) (This)->lpVtbl->GetDebugInfoWithPadding(This,pIDD,cbData,pcData,data)
#else
/*** IUnknown methods ***/
static inline HRESULT ISymUnmanagedWriter4_QueryInterface(ISymUnmanagedWriter4* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ISymUnmanagedWriter4_AddRef(ISymUnmanagedWriter4* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ISymUnmanagedWriter4_Release(ISymUnmanagedWriter4* This) {
    return This->lpVtbl->Release(This);
}
/*** ISymUnmanagedWriter methods ***/
static inline HRESULT ISymUnmanagedWriter4_DefineDocument(ISymUnmanagedWriter4* This,const WCHAR *url,const GUID *language,const GUID *languageVendor,const GUID *documentType,ISymUnmanagedDocumentWriter **pRetVal) {
    return This->lpVtbl->DefineDocument(This,url,language,languageVendor,documentType,pRetVal);
}
static inline HRESULT ISymUnmanagedWriter4_SetUserEntryPoint(ISymUnmanagedWriter4* This,mdMethodDef entryMethod) {
    return This->lpVtbl->SetUserEntryPoint(This,entryMethod);
}
static inline HRESULT ISymUnmanagedWriter4_OpenMethod(ISymUnmanagedWriter4* This,mdMethodDef method) {
    return This->lpVtbl->OpenMethod(This,method);
}
static inline HRESULT ISymUnmanagedWriter4_CloseMethod(ISymUnmanagedWriter4* This) {
    return This->lpVtbl->CloseMethod(This);
}
static inline HRESULT ISymUnmanagedWriter4_OpenScope(ISymUnmanagedWriter4* This,ULONG32 startOffset,ULONG32 *pRetVal) {
    return This->lpVtbl->OpenScope(This,startOffset,pRetVal);
}
static inline HRESULT ISymUnmanagedWriter4_CloseScope(ISymUnmanagedWriter4* This,ULONG32 endOffset) {
    return This->lpVtbl->CloseScope(This,endOffset);
}
static inline HRESULT ISymUnmanagedWriter4_SetScopeRange(ISymUnmanagedWriter4* This,ULONG32 scopeID,ULONG32 startOffset,ULONG32 endOffset) {
    return This->lpVtbl->SetScopeRange(This,scopeID,startOffset,endOffset);
}
static inline HRESULT ISymUnmanagedWriter4_DefineLocalVariable(ISymUnmanagedWriter4* This,const WCHAR *name,ULONG32 attributes,ULONG32 cSig,unsigned char signature[],ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3,ULONG32 startOffset,ULONG32 endOffset) {
    return This->lpVtbl->DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset);
}
static inline HRESULT ISymUnmanagedWriter4_DefineParameter(ISymUnmanagedWriter4* This,const WCHAR *name,ULONG32 attributes,ULONG32 sequence,ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter4_DefineField(ISymUnmanagedWriter4* This,mdTypeDef parent,const WCHAR *name,ULONG32 attributes,ULONG32 cSig,unsigned char signature[],ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter4_DefineGlobalVariable(ISymUnmanagedWriter4* This,const WCHAR *name,ULONG32 attributes,ULONG32 cSig,unsigned char signature[],ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter4_Close(ISymUnmanagedWriter4* This) {
    return This->lpVtbl->Close(This);
}
static inline HRESULT ISymUnmanagedWriter4_SetSymAttributes(ISymUnmanagedWriter4* This,mdToken parent,const WCHAR *name,ULONG32 cData,unsigned char data[]) {
    return This->lpVtbl->SetSymAttributes(This,parent,name,cData,data);
}
static inline HRESULT ISymUnmanagedWriter4_OpenNamespace(ISymUnmanagedWriter4* This,const WCHAR *name) {
    return This->lpVtbl->OpenNamespace(This,name);
}
static inline HRESULT ISymUnmanagedWriter4_CloseNamespace(ISymUnmanagedWriter4* This) {
    return This->lpVtbl->CloseNamespace(This);
}
static inline HRESULT ISymUnmanagedWriter4_UsingNamespace(ISymUnmanagedWriter4* This,const WCHAR *fullName) {
    return This->lpVtbl->UsingNamespace(This,fullName);
}
static inline HRESULT ISymUnmanagedWriter4_SetMethodSourceRange(ISymUnmanagedWriter4* This,ISymUnmanagedDocumentWriter *startDoc,ULONG32 startLine,ULONG32 startColumn,ISymUnmanagedDocumentWriter *endDoc,ULONG32 endLine,ULONG32 endColumn) {
    return This->lpVtbl->SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn);
}
static inline HRESULT ISymUnmanagedWriter4_Initialize(ISymUnmanagedWriter4* This,IUnknown *emitter,const WCHAR *filename,IStream *pIStream,BOOL fFullBuild) {
    return This->lpVtbl->Initialize(This,emitter,filename,pIStream,fFullBuild);
}
static inline HRESULT ISymUnmanagedWriter4_GetDebugInfo(ISymUnmanagedWriter4* This,IMAGE_DEBUG_DIRECTORY *pIDD,DWORD cData,DWORD *pcData,BYTE data[]) {
    return This->lpVtbl->GetDebugInfo(This,pIDD,cData,pcData,data);
}
static inline HRESULT ISymUnmanagedWriter4_DefineSequencePoints(ISymUnmanagedWriter4* This,ISymUnmanagedDocumentWriter *document,ULONG32 spCount,ULONG32 offsets[],ULONG32 lines[],ULONG32 columns[],ULONG32 endLines[],ULONG32 endColumns[]) {
    return This->lpVtbl->DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns);
}
static inline HRESULT ISymUnmanagedWriter4_RemapToken(ISymUnmanagedWriter4* This,mdToken oldToken,mdToken newToken) {
    return This->lpVtbl->RemapToken(This,oldToken,newToken);
}
static inline HRESULT ISymUnmanagedWriter4_Initialize2(ISymUnmanagedWriter4* This,IUnknown *emitter,const WCHAR *tempFilename,IStream *pIStream,BOOL fFullBuild,const WCHAR *finalFilename) {
    return This->lpVtbl->Initialize2(This,emitter,tempFilename,pIStream,fFullBuild,finalFilename);
}
static inline HRESULT ISymUnmanagedWriter4_DefineConstant(ISymUnmanagedWriter4* This,const WCHAR *name,VARIANT value,ULONG32 cSig,unsigned char signature[]) {
    return This->lpVtbl->DefineConstant(This,name,value,cSig,signature);
}
static inline HRESULT ISymUnmanagedWriter4_Abort(ISymUnmanagedWriter4* This) {
    return This->lpVtbl->Abort(This);
}
/*** ISymUnmanagedWriter2 methods ***/
static inline HRESULT ISymUnmanagedWriter4_DefineLocalVariable2(ISymUnmanagedWriter4* This,const WCHAR *name,ULONG32 attributes,mdSignature sigToken,ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3,ULONG32 startOffset,ULONG32 endOffset) {
    return This->lpVtbl->DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset);
}
static inline HRESULT ISymUnmanagedWriter4_DefineGlobalVariable2(ISymUnmanagedWriter4* This,const WCHAR *name,ULONG32 attributes,mdSignature sigToken,ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter4_DefineConstant2(ISymUnmanagedWriter4* This,const WCHAR *name,VARIANT value,mdSignature sigToken) {
    return This->lpVtbl->DefineConstant2(This,name,value,sigToken);
}
/*** ISymUnmanagedWriter3 methods ***/
static inline HRESULT ISymUnmanagedWriter4_OpenMethod2(ISymUnmanagedWriter4* This,mdMethodDef method,ULONG32 isect,ULONG32 offset) {
    return This->lpVtbl->OpenMethod2(This,method,isect,offset);
}
static inline HRESULT ISymUnmanagedWriter4_Commit(ISymUnmanagedWriter4* This) {
    return This->lpVtbl->Commit(This);
}
/*** ISymUnmanagedWriter4 methods ***/
static inline HRESULT ISymUnmanagedWriter4_GetDebugInfoWithPadding(ISymUnmanagedWriter4* This,IMAGE_DEBUG_DIRECTORY *pIDD,DWORD cbData,DWORD *pcData,BYTE data[]) {
    return This->lpVtbl->GetDebugInfoWithPadding(This,pIDD,cbData,pcData,data);
}
#endif
#endif

#endif


#endif  /* __ISymUnmanagedWriter4_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ISymUnmanagedWriter5 interface
 */
#ifndef __ISymUnmanagedWriter5_INTERFACE_DEFINED__
#define __ISymUnmanagedWriter5_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISymUnmanagedWriter5, 0xdcf7780d, 0xbde9, 0x45df, 0xac,0xfe, 0x21,0x73,0x1a,0x32,0x00,0x0c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("dcf7780d-bde9-45df-acfe-21731a32000c")
ISymUnmanagedWriter5 : public ISymUnmanagedWriter4
{
    virtual HRESULT STDMETHODCALLTYPE OpenMapTokensToSourceSpans(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE CloseMapTokensToSourceSpans(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE MapTokenToSourceSpan(
        mdToken token,
        ISymUnmanagedDocumentWriter *document,
        ULONG32 line,
        ULONG32 column,
        ULONG32 endLine,
        ULONG32 endColumn) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISymUnmanagedWriter5, 0xdcf7780d, 0xbde9, 0x45df, 0xac,0xfe, 0x21,0x73,0x1a,0x32,0x00,0x0c)
#endif
#else
typedef struct ISymUnmanagedWriter5Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISymUnmanagedWriter5 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISymUnmanagedWriter5 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISymUnmanagedWriter5 *This);

    /*** ISymUnmanagedWriter methods ***/
    HRESULT (STDMETHODCALLTYPE *DefineDocument)(
        ISymUnmanagedWriter5 *This,
        const WCHAR *url,
        const GUID *language,
        const GUID *languageVendor,
        const GUID *documentType,
        ISymUnmanagedDocumentWriter **pRetVal);

    HRESULT (STDMETHODCALLTYPE *SetUserEntryPoint)(
        ISymUnmanagedWriter5 *This,
        mdMethodDef entryMethod);

    HRESULT (STDMETHODCALLTYPE *OpenMethod)(
        ISymUnmanagedWriter5 *This,
        mdMethodDef method);

    HRESULT (STDMETHODCALLTYPE *CloseMethod)(
        ISymUnmanagedWriter5 *This);

    HRESULT (STDMETHODCALLTYPE *OpenScope)(
        ISymUnmanagedWriter5 *This,
        ULONG32 startOffset,
        ULONG32 *pRetVal);

    HRESULT (STDMETHODCALLTYPE *CloseScope)(
        ISymUnmanagedWriter5 *This,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *SetScopeRange)(
        ISymUnmanagedWriter5 *This,
        ULONG32 scopeID,
        ULONG32 startOffset,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *DefineLocalVariable)(
        ISymUnmanagedWriter5 *This,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3,
        ULONG32 startOffset,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *DefineParameter)(
        ISymUnmanagedWriter5 *This,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 sequence,
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *DefineField)(
        ISymUnmanagedWriter5 *This,
        mdTypeDef parent,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *DefineGlobalVariable)(
        ISymUnmanagedWriter5 *This,
        const WCHAR *name,
        ULONG32 attributes,
        ULONG32 cSig,
        unsigned char signature[],
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *Close)(
        ISymUnmanagedWriter5 *This);

    HRESULT (STDMETHODCALLTYPE *SetSymAttributes)(
        ISymUnmanagedWriter5 *This,
        mdToken parent,
        const WCHAR *name,
        ULONG32 cData,
        unsigned char data[]);

    HRESULT (STDMETHODCALLTYPE *OpenNamespace)(
        ISymUnmanagedWriter5 *This,
        const WCHAR *name);

    HRESULT (STDMETHODCALLTYPE *CloseNamespace)(
        ISymUnmanagedWriter5 *This);

    HRESULT (STDMETHODCALLTYPE *UsingNamespace)(
        ISymUnmanagedWriter5 *This,
        const WCHAR *fullName);

    HRESULT (STDMETHODCALLTYPE *SetMethodSourceRange)(
        ISymUnmanagedWriter5 *This,
        ISymUnmanagedDocumentWriter *startDoc,
        ULONG32 startLine,
        ULONG32 startColumn,
        ISymUnmanagedDocumentWriter *endDoc,
        ULONG32 endLine,
        ULONG32 endColumn);

    HRESULT (STDMETHODCALLTYPE *Initialize)(
        ISymUnmanagedWriter5 *This,
        IUnknown *emitter,
        const WCHAR *filename,
        IStream *pIStream,
        BOOL fFullBuild);

    HRESULT (STDMETHODCALLTYPE *GetDebugInfo)(
        ISymUnmanagedWriter5 *This,
        IMAGE_DEBUG_DIRECTORY *pIDD,
        DWORD cData,
        DWORD *pcData,
        BYTE data[]);

    HRESULT (STDMETHODCALLTYPE *DefineSequencePoints)(
        ISymUnmanagedWriter5 *This,
        ISymUnmanagedDocumentWriter *document,
        ULONG32 spCount,
        ULONG32 offsets[],
        ULONG32 lines[],
        ULONG32 columns[],
        ULONG32 endLines[],
        ULONG32 endColumns[]);

    HRESULT (STDMETHODCALLTYPE *RemapToken)(
        ISymUnmanagedWriter5 *This,
        mdToken oldToken,
        mdToken newToken);

    HRESULT (STDMETHODCALLTYPE *Initialize2)(
        ISymUnmanagedWriter5 *This,
        IUnknown *emitter,
        const WCHAR *tempFilename,
        IStream *pIStream,
        BOOL fFullBuild,
        const WCHAR *finalFilename);

    HRESULT (STDMETHODCALLTYPE *DefineConstant)(
        ISymUnmanagedWriter5 *This,
        const WCHAR *name,
        VARIANT value,
        ULONG32 cSig,
        unsigned char signature[]);

    HRESULT (STDMETHODCALLTYPE *Abort)(
        ISymUnmanagedWriter5 *This);

    /*** ISymUnmanagedWriter2 methods ***/
    HRESULT (STDMETHODCALLTYPE *DefineLocalVariable2)(
        ISymUnmanagedWriter5 *This,
        const WCHAR *name,
        ULONG32 attributes,
        mdSignature sigToken,
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3,
        ULONG32 startOffset,
        ULONG32 endOffset);

    HRESULT (STDMETHODCALLTYPE *DefineGlobalVariable2)(
        ISymUnmanagedWriter5 *This,
        const WCHAR *name,
        ULONG32 attributes,
        mdSignature sigToken,
        ULONG32 addrKind,
        ULONG32 addr1,
        ULONG32 addr2,
        ULONG32 addr3);

    HRESULT (STDMETHODCALLTYPE *DefineConstant2)(
        ISymUnmanagedWriter5 *This,
        const WCHAR *name,
        VARIANT value,
        mdSignature sigToken);

    /*** ISymUnmanagedWriter3 methods ***/
    HRESULT (STDMETHODCALLTYPE *OpenMethod2)(
        ISymUnmanagedWriter5 *This,
        mdMethodDef method,
        ULONG32 isect,
        ULONG32 offset);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        ISymUnmanagedWriter5 *This);

    /*** ISymUnmanagedWriter4 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDebugInfoWithPadding)(
        ISymUnmanagedWriter5 *This,
        IMAGE_DEBUG_DIRECTORY *pIDD,
        DWORD cbData,
        DWORD *pcData,
        BYTE data[]);

    /*** ISymUnmanagedWriter5 methods ***/
    HRESULT (STDMETHODCALLTYPE *OpenMapTokensToSourceSpans)(
        ISymUnmanagedWriter5 *This);

    HRESULT (STDMETHODCALLTYPE *CloseMapTokensToSourceSpans)(
        ISymUnmanagedWriter5 *This);

    HRESULT (STDMETHODCALLTYPE *MapTokenToSourceSpan)(
        ISymUnmanagedWriter5 *This,
        mdToken token,
        ISymUnmanagedDocumentWriter *document,
        ULONG32 line,
        ULONG32 column,
        ULONG32 endLine,
        ULONG32 endColumn);

    END_INTERFACE
} ISymUnmanagedWriter5Vtbl;

interface ISymUnmanagedWriter5 {
    CONST_VTBL ISymUnmanagedWriter5Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISymUnmanagedWriter5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISymUnmanagedWriter5_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISymUnmanagedWriter5_Release(This) (This)->lpVtbl->Release(This)
/*** ISymUnmanagedWriter methods ***/
#define ISymUnmanagedWriter5_DefineDocument(This,url,language,languageVendor,documentType,pRetVal) (This)->lpVtbl->DefineDocument(This,url,language,languageVendor,documentType,pRetVal)
#define ISymUnmanagedWriter5_SetUserEntryPoint(This,entryMethod) (This)->lpVtbl->SetUserEntryPoint(This,entryMethod)
#define ISymUnmanagedWriter5_OpenMethod(This,method) (This)->lpVtbl->OpenMethod(This,method)
#define ISymUnmanagedWriter5_CloseMethod(This) (This)->lpVtbl->CloseMethod(This)
#define ISymUnmanagedWriter5_OpenScope(This,startOffset,pRetVal) (This)->lpVtbl->OpenScope(This,startOffset,pRetVal)
#define ISymUnmanagedWriter5_CloseScope(This,endOffset) (This)->lpVtbl->CloseScope(This,endOffset)
#define ISymUnmanagedWriter5_SetScopeRange(This,scopeID,startOffset,endOffset) (This)->lpVtbl->SetScopeRange(This,scopeID,startOffset,endOffset)
#define ISymUnmanagedWriter5_DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset) (This)->lpVtbl->DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset)
#define ISymUnmanagedWriter5_DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter5_DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter5_DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter5_Close(This) (This)->lpVtbl->Close(This)
#define ISymUnmanagedWriter5_SetSymAttributes(This,parent,name,cData,data) (This)->lpVtbl->SetSymAttributes(This,parent,name,cData,data)
#define ISymUnmanagedWriter5_OpenNamespace(This,name) (This)->lpVtbl->OpenNamespace(This,name)
#define ISymUnmanagedWriter5_CloseNamespace(This) (This)->lpVtbl->CloseNamespace(This)
#define ISymUnmanagedWriter5_UsingNamespace(This,fullName) (This)->lpVtbl->UsingNamespace(This,fullName)
#define ISymUnmanagedWriter5_SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn) (This)->lpVtbl->SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn)
#define ISymUnmanagedWriter5_Initialize(This,emitter,filename,pIStream,fFullBuild) (This)->lpVtbl->Initialize(This,emitter,filename,pIStream,fFullBuild)
#define ISymUnmanagedWriter5_GetDebugInfo(This,pIDD,cData,pcData,data) (This)->lpVtbl->GetDebugInfo(This,pIDD,cData,pcData,data)
#define ISymUnmanagedWriter5_DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns) (This)->lpVtbl->DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns)
#define ISymUnmanagedWriter5_RemapToken(This,oldToken,newToken) (This)->lpVtbl->RemapToken(This,oldToken,newToken)
#define ISymUnmanagedWriter5_Initialize2(This,emitter,tempFilename,pIStream,fFullBuild,finalFilename) (This)->lpVtbl->Initialize2(This,emitter,tempFilename,pIStream,fFullBuild,finalFilename)
#define ISymUnmanagedWriter5_DefineConstant(This,name,value,cSig,signature) (This)->lpVtbl->DefineConstant(This,name,value,cSig,signature)
#define ISymUnmanagedWriter5_Abort(This) (This)->lpVtbl->Abort(This)
/*** ISymUnmanagedWriter2 methods ***/
#define ISymUnmanagedWriter5_DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset) (This)->lpVtbl->DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset)
#define ISymUnmanagedWriter5_DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3) (This)->lpVtbl->DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3)
#define ISymUnmanagedWriter5_DefineConstant2(This,name,value,sigToken) (This)->lpVtbl->DefineConstant2(This,name,value,sigToken)
/*** ISymUnmanagedWriter3 methods ***/
#define ISymUnmanagedWriter5_OpenMethod2(This,method,isect,offset) (This)->lpVtbl->OpenMethod2(This,method,isect,offset)
#define ISymUnmanagedWriter5_Commit(This) (This)->lpVtbl->Commit(This)
/*** ISymUnmanagedWriter4 methods ***/
#define ISymUnmanagedWriter5_GetDebugInfoWithPadding(This,pIDD,cbData,pcData,data) (This)->lpVtbl->GetDebugInfoWithPadding(This,pIDD,cbData,pcData,data)
/*** ISymUnmanagedWriter5 methods ***/
#define ISymUnmanagedWriter5_OpenMapTokensToSourceSpans(This) (This)->lpVtbl->OpenMapTokensToSourceSpans(This)
#define ISymUnmanagedWriter5_CloseMapTokensToSourceSpans(This) (This)->lpVtbl->CloseMapTokensToSourceSpans(This)
#define ISymUnmanagedWriter5_MapTokenToSourceSpan(This,token,document,line,column,endLine,endColumn) (This)->lpVtbl->MapTokenToSourceSpan(This,token,document,line,column,endLine,endColumn)
#else
/*** IUnknown methods ***/
static inline HRESULT ISymUnmanagedWriter5_QueryInterface(ISymUnmanagedWriter5* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ISymUnmanagedWriter5_AddRef(ISymUnmanagedWriter5* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ISymUnmanagedWriter5_Release(ISymUnmanagedWriter5* This) {
    return This->lpVtbl->Release(This);
}
/*** ISymUnmanagedWriter methods ***/
static inline HRESULT ISymUnmanagedWriter5_DefineDocument(ISymUnmanagedWriter5* This,const WCHAR *url,const GUID *language,const GUID *languageVendor,const GUID *documentType,ISymUnmanagedDocumentWriter **pRetVal) {
    return This->lpVtbl->DefineDocument(This,url,language,languageVendor,documentType,pRetVal);
}
static inline HRESULT ISymUnmanagedWriter5_SetUserEntryPoint(ISymUnmanagedWriter5* This,mdMethodDef entryMethod) {
    return This->lpVtbl->SetUserEntryPoint(This,entryMethod);
}
static inline HRESULT ISymUnmanagedWriter5_OpenMethod(ISymUnmanagedWriter5* This,mdMethodDef method) {
    return This->lpVtbl->OpenMethod(This,method);
}
static inline HRESULT ISymUnmanagedWriter5_CloseMethod(ISymUnmanagedWriter5* This) {
    return This->lpVtbl->CloseMethod(This);
}
static inline HRESULT ISymUnmanagedWriter5_OpenScope(ISymUnmanagedWriter5* This,ULONG32 startOffset,ULONG32 *pRetVal) {
    return This->lpVtbl->OpenScope(This,startOffset,pRetVal);
}
static inline HRESULT ISymUnmanagedWriter5_CloseScope(ISymUnmanagedWriter5* This,ULONG32 endOffset) {
    return This->lpVtbl->CloseScope(This,endOffset);
}
static inline HRESULT ISymUnmanagedWriter5_SetScopeRange(ISymUnmanagedWriter5* This,ULONG32 scopeID,ULONG32 startOffset,ULONG32 endOffset) {
    return This->lpVtbl->SetScopeRange(This,scopeID,startOffset,endOffset);
}
static inline HRESULT ISymUnmanagedWriter5_DefineLocalVariable(ISymUnmanagedWriter5* This,const WCHAR *name,ULONG32 attributes,ULONG32 cSig,unsigned char signature[],ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3,ULONG32 startOffset,ULONG32 endOffset) {
    return This->lpVtbl->DefineLocalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3,startOffset,endOffset);
}
static inline HRESULT ISymUnmanagedWriter5_DefineParameter(ISymUnmanagedWriter5* This,const WCHAR *name,ULONG32 attributes,ULONG32 sequence,ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineParameter(This,name,attributes,sequence,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter5_DefineField(ISymUnmanagedWriter5* This,mdTypeDef parent,const WCHAR *name,ULONG32 attributes,ULONG32 cSig,unsigned char signature[],ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineField(This,parent,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter5_DefineGlobalVariable(ISymUnmanagedWriter5* This,const WCHAR *name,ULONG32 attributes,ULONG32 cSig,unsigned char signature[],ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineGlobalVariable(This,name,attributes,cSig,signature,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter5_Close(ISymUnmanagedWriter5* This) {
    return This->lpVtbl->Close(This);
}
static inline HRESULT ISymUnmanagedWriter5_SetSymAttributes(ISymUnmanagedWriter5* This,mdToken parent,const WCHAR *name,ULONG32 cData,unsigned char data[]) {
    return This->lpVtbl->SetSymAttributes(This,parent,name,cData,data);
}
static inline HRESULT ISymUnmanagedWriter5_OpenNamespace(ISymUnmanagedWriter5* This,const WCHAR *name) {
    return This->lpVtbl->OpenNamespace(This,name);
}
static inline HRESULT ISymUnmanagedWriter5_CloseNamespace(ISymUnmanagedWriter5* This) {
    return This->lpVtbl->CloseNamespace(This);
}
static inline HRESULT ISymUnmanagedWriter5_UsingNamespace(ISymUnmanagedWriter5* This,const WCHAR *fullName) {
    return This->lpVtbl->UsingNamespace(This,fullName);
}
static inline HRESULT ISymUnmanagedWriter5_SetMethodSourceRange(ISymUnmanagedWriter5* This,ISymUnmanagedDocumentWriter *startDoc,ULONG32 startLine,ULONG32 startColumn,ISymUnmanagedDocumentWriter *endDoc,ULONG32 endLine,ULONG32 endColumn) {
    return This->lpVtbl->SetMethodSourceRange(This,startDoc,startLine,startColumn,endDoc,endLine,endColumn);
}
static inline HRESULT ISymUnmanagedWriter5_Initialize(ISymUnmanagedWriter5* This,IUnknown *emitter,const WCHAR *filename,IStream *pIStream,BOOL fFullBuild) {
    return This->lpVtbl->Initialize(This,emitter,filename,pIStream,fFullBuild);
}
static inline HRESULT ISymUnmanagedWriter5_GetDebugInfo(ISymUnmanagedWriter5* This,IMAGE_DEBUG_DIRECTORY *pIDD,DWORD cData,DWORD *pcData,BYTE data[]) {
    return This->lpVtbl->GetDebugInfo(This,pIDD,cData,pcData,data);
}
static inline HRESULT ISymUnmanagedWriter5_DefineSequencePoints(ISymUnmanagedWriter5* This,ISymUnmanagedDocumentWriter *document,ULONG32 spCount,ULONG32 offsets[],ULONG32 lines[],ULONG32 columns[],ULONG32 endLines[],ULONG32 endColumns[]) {
    return This->lpVtbl->DefineSequencePoints(This,document,spCount,offsets,lines,columns,endLines,endColumns);
}
static inline HRESULT ISymUnmanagedWriter5_RemapToken(ISymUnmanagedWriter5* This,mdToken oldToken,mdToken newToken) {
    return This->lpVtbl->RemapToken(This,oldToken,newToken);
}
static inline HRESULT ISymUnmanagedWriter5_Initialize2(ISymUnmanagedWriter5* This,IUnknown *emitter,const WCHAR *tempFilename,IStream *pIStream,BOOL fFullBuild,const WCHAR *finalFilename) {
    return This->lpVtbl->Initialize2(This,emitter,tempFilename,pIStream,fFullBuild,finalFilename);
}
static inline HRESULT ISymUnmanagedWriter5_DefineConstant(ISymUnmanagedWriter5* This,const WCHAR *name,VARIANT value,ULONG32 cSig,unsigned char signature[]) {
    return This->lpVtbl->DefineConstant(This,name,value,cSig,signature);
}
static inline HRESULT ISymUnmanagedWriter5_Abort(ISymUnmanagedWriter5* This) {
    return This->lpVtbl->Abort(This);
}
/*** ISymUnmanagedWriter2 methods ***/
static inline HRESULT ISymUnmanagedWriter5_DefineLocalVariable2(ISymUnmanagedWriter5* This,const WCHAR *name,ULONG32 attributes,mdSignature sigToken,ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3,ULONG32 startOffset,ULONG32 endOffset) {
    return This->lpVtbl->DefineLocalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3,startOffset,endOffset);
}
static inline HRESULT ISymUnmanagedWriter5_DefineGlobalVariable2(ISymUnmanagedWriter5* This,const WCHAR *name,ULONG32 attributes,mdSignature sigToken,ULONG32 addrKind,ULONG32 addr1,ULONG32 addr2,ULONG32 addr3) {
    return This->lpVtbl->DefineGlobalVariable2(This,name,attributes,sigToken,addrKind,addr1,addr2,addr3);
}
static inline HRESULT ISymUnmanagedWriter5_DefineConstant2(ISymUnmanagedWriter5* This,const WCHAR *name,VARIANT value,mdSignature sigToken) {
    return This->lpVtbl->DefineConstant2(This,name,value,sigToken);
}
/*** ISymUnmanagedWriter3 methods ***/
static inline HRESULT ISymUnmanagedWriter5_OpenMethod2(ISymUnmanagedWriter5* This,mdMethodDef method,ULONG32 isect,ULONG32 offset) {
    return This->lpVtbl->OpenMethod2(This,method,isect,offset);
}
static inline HRESULT ISymUnmanagedWriter5_Commit(ISymUnmanagedWriter5* This) {
    return This->lpVtbl->Commit(This);
}
/*** ISymUnmanagedWriter4 methods ***/
static inline HRESULT ISymUnmanagedWriter5_GetDebugInfoWithPadding(ISymUnmanagedWriter5* This,IMAGE_DEBUG_DIRECTORY *pIDD,DWORD cbData,DWORD *pcData,BYTE data[]) {
    return This->lpVtbl->GetDebugInfoWithPadding(This,pIDD,cbData,pcData,data);
}
/*** ISymUnmanagedWriter5 methods ***/
static inline HRESULT ISymUnmanagedWriter5_OpenMapTokensToSourceSpans(ISymUnmanagedWriter5* This) {
    return This->lpVtbl->OpenMapTokensToSourceSpans(This);
}
static inline HRESULT ISymUnmanagedWriter5_CloseMapTokensToSourceSpans(ISymUnmanagedWriter5* This) {
    return This->lpVtbl->CloseMapTokensToSourceSpans(This);
}
static inline HRESULT ISymUnmanagedWriter5_MapTokenToSourceSpan(ISymUnmanagedWriter5* This,mdToken token,ISymUnmanagedDocumentWriter *document,ULONG32 line,ULONG32 column,ULONG32 endLine,ULONG32 endColumn) {
    return This->lpVtbl->MapTokenToSourceSpan(This,token,document,line,column,endLine,endColumn);
}
#endif
#endif

#endif


#endif  /* __ISymUnmanagedWriter5_INTERFACE_DEFINED__ */

DEFINE_GUID(CLSID_CorSymWriter_SxS, 0x0ae2deb0,0xf901,0x478b,0xbb,0x9f,0x88,0x1e,0xe8,0x06,0x67,0x88);
/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __corsym_h__ */
