/* * 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")