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