wine/include/activdbg.idl

581 lines
16 KiB
Plaintext

/*
* Copyright 2008 Jacek Caban for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
import "ocidl.idl";
import "activscp.idl";
/* import "dbgprop.idl"; */
interface IDebugDocumentContext;
interface IRemoteDebugApplication;
interface IEnumDebugCodeContexts;
/* FIXME: */
interface IEnumDebugStackFrames;
interface IDebugStackFrame;
interface IApplicationDebugger;
interface IEnumRemoteDebugApplicationThreads;
interface IDebugApplicationNode;
interface IEnumDebugExpressionContexts;
interface IDebugApplicationThread;
interface IDebugSyncOperation;
interface IDebugAsyncOperation;
interface IDebugStackFrameSniffer;
interface IDebugThreadCall32;
interface IActiveScriptErrorDebug;
interface IProvideExpressionContexts;
typedef enum tagBREAKPOINT_STATE {
BREAKPOINT_DELETED,
BREAKPOINT_DISABLED,
BREAKPOINT_ENABLED
} BREAKPOINT_STATE;
typedef DWORD APPBREAKFLAGS;
typedef enum tagBREAKREASON {
BREAKREASON_STEP,
BREAKREASON_BREAKPOINT,
BREAKREASON_DEBUGGER_BLOCK,
BREAKREASON_HOST_INITIATED,
BREAKREASON_LANGUAGE_INITIATED,
BREAKREASON_DEBUGGER_HALT,
BREAKREASON_ERROR,
BREAKREASON_JIT
} BREAKREASON;
typedef enum tagBREAKRESUME_ACTION {
BREAKRESUMEACTION_ABORT,
BREAKRESUMEACTION_CONTINUE,
BREAKRESUMEACTION_STEP_INTO,
BREAKRESUMEACTION_STEP_OVER,
BREAKRESUMEACTION_STEP_OUT,
BREAKRESUMEACTION_IGNORE
} BREAKRESUMEACTION;
typedef enum tagDOCUMENTNAMETYPE {
DOCUMENTNAMETYPE_APPNODE,
DOCUMENTNAMETYPE_TITLE,
DOCUMENTNAMETYPE_FILE_TAIL,
DOCUMENTNAMETYPE_URL
} DOCUMENTNAMETYPE;
typedef enum tagERRORRESUMEACTION {
ERRORRESUMEACTION_ReexecuteErrorStatement,
ERRORRESUMEACTION_AbortCallAndReturnErrorToCaller,
ERRORRESUMEACTION_SkipErrorStatement,
} ERRORRESUMEACTION;
typedef WORD SOURCE_TEXT_ATTR;
#ifdef INTEROPLIB
enum enum_SOURCE_TEXT_ATTR
{
SOURCETEXT_ATTR_KEYWORD = 0x01,
SOURCETEXT_ATTR_COMMENT = 0x02,
SOURCETEXT_ATTR_NONSOURCE = 0x04,
SOURCETEXT_ATTR_OPERATOR = 0x08,
SOURCETEXT_ATTR_NUMBER = 0x10,
SOURCETEXT_ATTR_STRING = 0x20,
SOURCETEXT_ATTR_FUNCTION_START = 0x40
};
#endif
const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_KEYWORD = 0x01;
const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_COMMENT = 0x02;
const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_NONSOURCE = 0x04;
const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_OPERATOR = 0x08;
const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_NUMBER = 0x10;
const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_STRING = 0x20;
const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_FUNCTION_START = 0x40;
/************************************************************
* interface IActiveScriptDebug32
*/
[
object,
uuid(51973c10-cb0c-11d0-b5c9-00a0244a0e7a),
pointer_default(unique)
]
interface IActiveScriptDebug32 : IUnknown
{
HRESULT GetScriptTextAttributes(
[in, size_is(uNumCodeChars)] LPCOLESTR pstrCode,
[in] ULONG uNumCodeChars,
[in] LPCOLESTR pstrDelimiter,
[in] DWORD dwFlags,
[in, out, size_is(uNumCodeChars)] SOURCE_TEXT_ATTR *pattr);
HRESULT GetScriptletTextAttributes(
[in, size_is(uNumCodeChars)] LPCOLESTR pstrCode,
[in] ULONG uNumCodeChars,
[in] LPCOLESTR pstrDelimiter,
[in] DWORD dwFlags,
[in, out, size_is(uNumCodeChars)] SOURCE_TEXT_ATTR *pattr);
HRESULT EnumCodeContextsOfPosition(
[in] DWORD dwSourceContext,
[in] ULONG uCharacterOffset,
[in] ULONG uNumChars,
[out] IEnumDebugCodeContexts **ppescc);
}
[
object,
uuid(bc437e23-f5b8-47f4-bb79-7d1ce5483b86),
pointer_default(unique)
]
interface IActiveScriptDebug64 : IUnknown
{
HRESULT GetScriptTextAttributes(
[in, size_is(uNumCodeChars)] LPCOLESTR pstrCode,
[in] ULONG uNumCodeChars,
[in] LPCOLESTR pstrDelimiter,
[in] DWORD dwFlags,
[in, out, size_is(uNumCodeChars)] SOURCE_TEXT_ATTR *pattr);
HRESULT GetScriptletTextAttributes(
[in, size_is(uNumCodeChars)] LPCOLESTR pstrCode,
[in] ULONG uNumCodeChars,
[in] LPCOLESTR pstrDelimiter,
[in] DWORD dwFlags,
[in, out, size_is(uNumCodeChars)] SOURCE_TEXT_ATTR *pattr);
HRESULT EnumCodeContextsOfPosition(
[in] DWORDLONG dwSourceContext,
[in] ULONG uCharacterOffset,
[in] ULONG uNumChars,
[out] IEnumDebugCodeContexts **ppescc);
}
/************************************************************
* interface IDebugDocumentInfo
*/
[
object,
uuid(51973c1f-cb0c-11d0-b5c9-00a0244a0e7a),
pointer_default(unique)
]
interface IDebugDocumentInfo : IUnknown
{
HRESULT GetName(
[in] DOCUMENTNAMETYPE dnt,
[out] BSTR *pbstrName);
HRESULT GetDocumentClassId(
[out] CLSID *pclsidDocument);
}
/************************************************************
* interface IDebugDocument
*/
[
object,
uuid(51973c21-cb0c-11d0-b5c9-00a0244a0e7a),
pointer_default(unique)
]
interface IDebugDocument : IDebugDocumentInfo
{
}
/************************************************************
* interface IDebugCodeContext
*/
[
object,
uuid(51973c13-cb0c-11d0-b5c9-00a0244a0e7a),
pointer_default(unique)
]
interface IDebugCodeContext : IUnknown
{
HRESULT GetDocumentContext(
[out] IDebugDocumentContext **ppsc);
HRESULT SetBreakPoint(
[in] BREAKPOINT_STATE bps);
}
/************************************************************
* interface IEnumDebugCodeContexts
*/
[
object,
uuid(51973c1d-cb0c-11d0-b5c9-00a0244a0e7a),
pointer_default(unique)
]
interface IEnumDebugCodeContexts : IUnknown
{
HRESULT Next(
[in] ULONG celt,
[out] IDebugCodeContext **pscc,
[out] ULONG *pceltFetched);
HRESULT Skip(
[in] ULONG celt);
HRESULT Reset();
HRESULT Clone(
[out] IEnumDebugCodeContexts **ppescc);
}
/************************************************************
* interface IDebugDocumentContext
*/
[
object,
uuid(51973c28-cb0c-11d0-b5c9-00a0244a0e7a),
pointer_default(unique)
]
interface IDebugDocumentContext : IUnknown
{
HRESULT GetDocument(
[out] IDebugDocument **ppsd);
HRESULT EnumCodeContexts(
[out] IEnumDebugCodeContexts **ppescc);
}
/************************************************************
* interface IRemoteDebugApplicationThread
*/
[
object,
uuid(51973c37-cb0c-11d0-b5c9-00a0244a0e7a),
pointer_default(unique)
]
interface IRemoteDebugApplicationThread : IUnknown
{
HRESULT GetSystemThreadId(
[out] DWORD *dwThreadId);
HRESULT GetApplication(
[out] IRemoteDebugApplication **pprda);
HRESULT EnumStackFrames(
[out] IEnumDebugStackFrames **ppedsf);
HRESULT GetDescription(
[out] BSTR *pbstrDescription,
[out] BSTR *pbstrState);
HRESULT SetNextStatement(
[in] IDebugStackFrame *pStackFrame,
[in] IDebugCodeContext *pCodeContext);
HRESULT GetState(
[out] DWORD *pState);
HRESULT Suspend(
[out] DWORD *pdwCount);
HRESULT Resume(
[out] DWORD *pdwCount);
HRESULT GetSuspendCount(
[out] DWORD *pdwCount);
}
/************************************************************
* interface IRemoteDebugApplication
*/
[
object,
uuid(51973c30-cb0c-11d0-b5c9-00a0244Aae7a),
pointer_default(unique)
]
interface IRemoteDebugApplication : IUnknown
{
HRESULT ResumeFromBreakPoint(
[in] IRemoteDebugApplicationThread *prptFocus,
[in] BREAKRESUMEACTION bra,
[in] ERRORRESUMEACTION era);
HRESULT CauseBreak();
HRESULT ConnectDebugger(
[in] IApplicationDebugger *pad);
HRESULT DisconnectDebugger();
HRESULT GetDebugger(
[out] IApplicationDebugger **pad);
HRESULT CreateInstanceAtApplication(
[in] REFCLSID rclsid,
[in] IUnknown *pUnkOuter,
[in] DWORD dwClsContext,
[in] REFIID riid,
[out, iid_is(riid)] IUnknown **ppvObject);
HRESULT QueryAlive();
HRESULT EnumThreads(
[out] IEnumRemoteDebugApplicationThreads **pperdat);
HRESULT GetName(
[out] BSTR *pbstrName);
HRESULT GetRootNode(
[out] IDebugApplicationNode **ppdanRoot);
HRESULT EnumGlobalExpressionContexts(
[out] IEnumDebugExpressionContexts **ppedec);
}
/************************************************************
* interface IDebugApplication32
*/
[
object,
uuid(51973c32-cb0c-11d0-b5c9-00a0244a0e7a),
pointer_default(unique),
local
]
interface IDebugApplication32 : IRemoteDebugApplication
{
HRESULT SetName(
[in] LPCOLESTR pstrName);
HRESULT StepOutComplete();
HRESULT DebugOutput(
[in] LPCOLESTR pstr);
HRESULT StartDebugSession();
HRESULT HandleBreakPoint(
[in] BREAKREASON br,
[out] BREAKRESUMEACTION *pbra);
HRESULT Close();
HRESULT GetBreakFlags(
[out] APPBREAKFLAGS *pabf,
[out] IRemoteDebugApplicationThread **pprdatSteppingThread);
HRESULT GetCurrentThread(
[out] IDebugApplicationThread **pat);
HRESULT CreateAsyncDebugOperation(
[in] IDebugSyncOperation *psdo,
[out] IDebugAsyncOperation **ppado);
HRESULT AddStackFrameSniffer(
[in] IDebugStackFrameSniffer *pdsfs,
[out] DWORD *pdwCookie);
HRESULT RemoveStackFrameSniffer(
[in] DWORD dwCookie);
HRESULT QueryCurrentThreadIsDebuggerThread();
HRESULT SynchronousCallInDebuggerThread(
[in] IDebugThreadCall32 *pptc,
[in] DWORD dwParam1,
[in] DWORD dwParam2,
[in] DWORD dwParam3);
HRESULT CreateApplicationNode(
[out] IDebugApplicationNode **ppdanNew);
HRESULT FireDebuggerEvent(
[in] REFGUID riid,
[in] IUnknown *punk);
HRESULT HandleRuntimeError(
[in] IActiveScriptErrorDebug *pErrorDebug,
[in] IActiveScriptSite *pScriptSite,
[out] BREAKRESUMEACTION *pbra,
[out] ERRORRESUMEACTION *perra,
[out] BOOL *pfCallOnScriptError);
BOOL FCanJitDebug();
BOOL FIsAutoJitDebugEnabled();
HRESULT AddGlobalExpressionContextProvider(
[in] IProvideExpressionContexts *pdsfs,
[out] DWORD *pdwCookie);
HRESULT RemoveGlobalExpressionContextProvider(
[in] DWORD dwCookie);
}
/************************************************************
* interface IDebugApplication64
*/
[
object,
uuid(4dedc754-04c7-4f10-9e60-16a390fe6e62),
pointer_default(unique),
local
]
interface IDebugApplication64 : IRemoteDebugApplication
{
HRESULT SetName(
[in] LPCOLESTR pstrName);
HRESULT StepOutComplete();
HRESULT DebugOutput(
[in] LPCOLESTR pstr);
HRESULT StartDebugSession();
HRESULT HandleBreakPoint(
[in] BREAKREASON br,
[out] BREAKRESUMEACTION *pbra);
HRESULT Close();
HRESULT GetBreakFlags(
[out] APPBREAKFLAGS *pabf,
[out] IRemoteDebugApplicationThread **pprdatSteppingThread);
HRESULT GetCurrentThread(
[out] IDebugApplicationThread **pat);
HRESULT CreateAsyncDebugOperation(
[in] IDebugSyncOperation *psdo,
[out] IDebugAsyncOperation **ppado);
HRESULT AddStackFrameSniffer(
[in] IDebugStackFrameSniffer *pdsfs,
[out] DWORD *pdwCookie);
HRESULT RemoveStackFrameSniffer(
[in] DWORD dwCookie);
HRESULT QueryCurrentThreadIsDebuggerThread();
HRESULT SynchronousCallInDebuggerThread(
[in] IDebugThreadCall32 *pptc,
[in] DWORDLONG dwParam1,
[in] DWORDLONG dwParam2,
[in] DWORDLONG dwParam3);
HRESULT CreateApplicationNode(
[out] IDebugApplicationNode **ppdanNew);
HRESULT FireDebuggerEvent(
[in] REFGUID riid,
[in] IUnknown *punk);
HRESULT HandleRuntimeError(
[in] IActiveScriptErrorDebug *pErrorDebug,
[in] IActiveScriptSite *pScriptSite,
[out] BREAKRESUMEACTION *pbra,
[out] ERRORRESUMEACTION *perra,
[out] BOOL *pfCallOnScriptError);
BOOL FCanJitDebug();
BOOL FIsAutoJitDebugEnabled();
HRESULT AddGlobalExpressionContextProvider(
[in] IProvideExpressionContexts *pdsfs,
[out] DWORDLONG *pdwCookie);
HRESULT RemoveGlobalExpressionContextProvider(
[in] DWORDLONG dwCookie);
}
/************************************************************
* interface IActiveScriptSiteDebug32
*/
[
object,
uuid(51973c11-cb0c-11d0-b5c9-00a0244a0e7a),
pointer_default(unique),
local
]
interface IActiveScriptSiteDebug32 : IUnknown
{
HRESULT GetDocumentContextFromPosition(
[in] DWORD dwSourceContext,
[in] ULONG uCharacterOffset,
[in] ULONG uNumChars,
[out] IDebugDocumentContext **ppsc);
HRESULT GetApplication(
[out] IDebugApplication32 **ppda);
HRESULT GetRootApplicationNode(
[out] IDebugApplicationNode **ppdanRoot);
HRESULT OnScriptErrorDebug(
[in] IActiveScriptErrorDebug *pErrorDebug,
[out] BOOL *pfEnterDebugger,
[out] BOOL *pfCallOnScriptErrorWhenContinuing);
}
/************************************************************
* interface IActiveScriptSiteDebug64
*/
[
object,
uuid(d6b96b0a-7463-402c-92ac-89984226942f),
pointer_default(unique),
local
]
interface IActiveScriptSiteDebug64 : IUnknown
{
HRESULT GetDocumentContextFromPosition(
[in] DWORDLONG dwSourceContext,
[in] ULONG uCharacterOffset,
[in] ULONG uNumChars,
[out] IDebugDocumentContext **ppsc);
HRESULT GetApplication(
[out] IDebugApplication64 **ppda);
HRESULT GetRootApplicationNode(
[out] IDebugApplicationNode **ppdanRoot);
HRESULT OnScriptErrorDebug(
[in] IActiveScriptErrorDebug *pErrorDebug,
[out] BOOL *pfEnterDebugger,
[out] BOOL *pfCallOnScriptErrorWhenContinuing);
}
cpp_quote("#ifndef DISABLE_ACTIVDBG_INTERFACE_WRAPPERS")
cpp_quote("#ifdef _WIN64")
cpp_quote("#define IActiveScriptDebug IActiveScriptDebug64")
cpp_quote("#define IID_IActiveScriptDebug IID_IActiveScriptDebug64")
cpp_quote("#define IActiveScriptSiteDebug IActiveScriptSiteDebug64")
cpp_quote("#define IID_IActiveScriptSiteDebug IID_IActiveScriptSiteDebug64")
cpp_quote("#define IDebugApplication IDebugApplication64")
cpp_quote("#define IID_IDebugApplication IID_IDebugApplication64")
cpp_quote("#else")
cpp_quote("#define IActiveScriptDebug IActiveScriptDebug32")
cpp_quote("#define IID_IActiveScriptDebug IID_IActiveScriptDebug32")
cpp_quote("#define IActiveScriptSiteDebug IActiveScriptSiteDebug32")
cpp_quote("#define IID_IActiveScriptSiteDebug IID_IActiveScriptSiteDebug32")
cpp_quote("#define IDebugApplication IDebugApplication32")
cpp_quote("#define IID_IDebugApplication IID_IDebugApplication32")
cpp_quote("#endif")
cpp_quote("#endif")