/* * 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; /* 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; /************************************************************ * 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 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); } cpp_quote("#ifndef DISABLE_ACTIVDBG_INTERFACE_WRAPPERS") cpp_quote("#ifdef _WIN64") 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 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")