hlink: Fix memory leaks in test.
[wine] / include / activdbg.idl
1 /*
2  * Copyright 2008 Jacek Caban for CodeWeavers
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 import "ocidl.idl";
20 import "activscp.idl";
21 /* import "dbgprop.idl"; */
22
23 interface IDebugDocumentContext;
24 interface IRemoteDebugApplication;
25 interface IEnumDebugCodeContexts;
26
27 /* FIXME: */
28 interface IEnumDebugStackFrames;
29 interface IDebugStackFrame;
30 interface IApplicationDebugger;
31 interface IEnumRemoteDebugApplicationThreads;
32 interface IDebugApplicationNode;
33 interface IEnumDebugExpressionContexts;
34 interface IDebugApplicationThread;
35 interface IDebugSyncOperation;
36 interface IDebugAsyncOperation;
37 interface IDebugStackFrameSniffer;
38 interface IDebugThreadCall32;
39 interface IActiveScriptErrorDebug;
40 interface IProvideExpressionContexts;
41
42 typedef enum tagBREAKPOINT_STATE {
43     BREAKPOINT_DELETED,
44     BREAKPOINT_DISABLED,
45     BREAKPOINT_ENABLED
46 } BREAKPOINT_STATE;
47
48 typedef DWORD APPBREAKFLAGS;
49
50 typedef enum tagBREAKREASON {
51     BREAKREASON_STEP,
52     BREAKREASON_BREAKPOINT,
53     BREAKREASON_DEBUGGER_BLOCK,
54     BREAKREASON_HOST_INITIATED,
55     BREAKREASON_LANGUAGE_INITIATED,
56     BREAKREASON_DEBUGGER_HALT,
57     BREAKREASON_ERROR,
58     BREAKREASON_JIT
59 } BREAKREASON;
60
61 typedef enum tagBREAKRESUME_ACTION {
62     BREAKRESUMEACTION_ABORT,
63     BREAKRESUMEACTION_CONTINUE,
64     BREAKRESUMEACTION_STEP_INTO,
65     BREAKRESUMEACTION_STEP_OVER,
66     BREAKRESUMEACTION_STEP_OUT,
67     BREAKRESUMEACTION_IGNORE
68 } BREAKRESUMEACTION;
69
70 typedef enum tagDOCUMENTNAMETYPE {
71     DOCUMENTNAMETYPE_APPNODE,
72     DOCUMENTNAMETYPE_TITLE,
73     DOCUMENTNAMETYPE_FILE_TAIL,
74     DOCUMENTNAMETYPE_URL
75 } DOCUMENTNAMETYPE;
76
77 typedef enum tagERRORRESUMEACTION {
78     ERRORRESUMEACTION_ReexecuteErrorStatement,
79     ERRORRESUMEACTION_AbortCallAndReturnErrorToCaller,
80     ERRORRESUMEACTION_SkipErrorStatement,
81 } ERRORRESUMEACTION;
82
83 typedef WORD SOURCE_TEXT_ATTR;
84
85 #ifdef INTEROPLIB
86 enum enum_SOURCE_TEXT_ATTR
87 {
88     SOURCETEXT_ATTR_KEYWORD        = 0x01,
89     SOURCETEXT_ATTR_COMMENT        = 0x02,
90     SOURCETEXT_ATTR_NONSOURCE      = 0x04,
91     SOURCETEXT_ATTR_OPERATOR       = 0x08,
92     SOURCETEXT_ATTR_NUMBER         = 0x10,
93     SOURCETEXT_ATTR_STRING         = 0x20,
94     SOURCETEXT_ATTR_FUNCTION_START = 0x40
95 };
96 #endif
97
98 const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_KEYWORD         = 0x01;
99 const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_COMMENT         = 0x02;
100 const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_NONSOURCE       = 0x04;
101 const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_OPERATOR        = 0x08;
102 const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_NUMBER          = 0x10;
103 const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_STRING          = 0x20;
104 const SOURCE_TEXT_ATTR SOURCETEXT_ATTR_FUNCTION_START  = 0x40;
105
106 /************************************************************
107  *      interface IActiveScriptDebug32
108  */
109 [
110     object,
111     uuid(51973c10-cb0c-11d0-b5c9-00a0244a0e7a),
112     pointer_default(unique)
113 ]
114 interface IActiveScriptDebug32 : IUnknown
115 {
116     HRESULT GetScriptTextAttributes(
117             [in, size_is(uNumCodeChars)] LPCOLESTR pstrCode,
118             [in] ULONG uNumCodeChars,
119             [in] LPCOLESTR pstrDelimiter,
120             [in] DWORD dwFlags,
121             [in, out, size_is(uNumCodeChars)] SOURCE_TEXT_ATTR *pattr);
122
123     HRESULT GetScriptletTextAttributes(
124             [in, size_is(uNumCodeChars)] LPCOLESTR pstrCode,
125             [in] ULONG uNumCodeChars,
126             [in] LPCOLESTR pstrDelimiter,
127             [in] DWORD dwFlags,
128             [in, out, size_is(uNumCodeChars)] SOURCE_TEXT_ATTR *pattr);
129
130     HRESULT EnumCodeContextsOfPosition(
131             [in] DWORD dwSourceContext,
132             [in] ULONG uCharacterOffset,
133             [in] ULONG uNumChars,
134             [out] IEnumDebugCodeContexts **ppescc);
135 }
136
137 [
138     object,
139     uuid(bc437e23-f5b8-47f4-bb79-7d1ce5483b86),
140     pointer_default(unique)
141 ]
142 interface IActiveScriptDebug64 : IUnknown
143 {
144     HRESULT GetScriptTextAttributes(
145             [in, size_is(uNumCodeChars)] LPCOLESTR pstrCode,
146             [in] ULONG uNumCodeChars,
147             [in] LPCOLESTR pstrDelimiter,
148             [in] DWORD dwFlags,
149             [in, out, size_is(uNumCodeChars)] SOURCE_TEXT_ATTR *pattr);
150
151     HRESULT GetScriptletTextAttributes(
152             [in, size_is(uNumCodeChars)] LPCOLESTR pstrCode,
153             [in] ULONG uNumCodeChars,
154             [in] LPCOLESTR pstrDelimiter,
155             [in] DWORD dwFlags,
156             [in, out, size_is(uNumCodeChars)] SOURCE_TEXT_ATTR *pattr);
157
158     HRESULT EnumCodeContextsOfPosition(
159            [in] DWORDLONG dwSourceContext,
160            [in] ULONG uCharacterOffset,
161            [in] ULONG uNumChars,
162            [out] IEnumDebugCodeContexts **ppescc);
163 }
164
165 /************************************************************
166  *      interface IDebugDocumentInfo
167  */
168 [
169     object,
170     uuid(51973c1f-cb0c-11d0-b5c9-00a0244a0e7a),
171     pointer_default(unique)
172 ]
173 interface IDebugDocumentInfo : IUnknown
174 {
175     HRESULT GetName(
176             [in]  DOCUMENTNAMETYPE dnt,
177             [out] BSTR *pbstrName);
178
179     HRESULT GetDocumentClassId(
180             [out] CLSID *pclsidDocument);
181 }
182
183 /************************************************************
184  *      interface IDebugDocument
185  */
186 [
187     object,
188     uuid(51973c21-cb0c-11d0-b5c9-00a0244a0e7a),
189     pointer_default(unique)
190 ]
191 interface IDebugDocument : IDebugDocumentInfo
192 {
193 }
194
195 /************************************************************
196  *      interface IDebugCodeContext
197  */
198 [
199     object,
200     uuid(51973c13-cb0c-11d0-b5c9-00a0244a0e7a),
201     pointer_default(unique)
202 ]
203 interface IDebugCodeContext : IUnknown
204 {
205     HRESULT GetDocumentContext(
206             [out] IDebugDocumentContext **ppsc);
207
208     HRESULT SetBreakPoint(
209             [in]  BREAKPOINT_STATE bps);
210 }
211
212 /************************************************************
213  *      interface IEnumDebugCodeContexts
214  */
215 [
216     object,
217     uuid(51973c1d-cb0c-11d0-b5c9-00a0244a0e7a),
218     pointer_default(unique)
219 ]
220 interface IEnumDebugCodeContexts : IUnknown
221 {
222     HRESULT Next(
223             [in]  ULONG celt,
224             [out] IDebugCodeContext **pscc,
225             [out] ULONG *pceltFetched);
226
227     HRESULT Skip(
228             [in]  ULONG celt);
229
230     HRESULT Reset();
231
232     HRESULT Clone(
233             [out] IEnumDebugCodeContexts **ppescc);
234 }
235
236 /************************************************************
237  *      interface IDebugDocumentContext
238  */
239 [
240     object,
241     uuid(51973c28-cb0c-11d0-b5c9-00a0244a0e7a),
242     pointer_default(unique)
243 ]
244 interface IDebugDocumentContext : IUnknown
245 {
246     HRESULT GetDocument(
247             [out] IDebugDocument **ppsd);
248
249     HRESULT EnumCodeContexts(
250             [out] IEnumDebugCodeContexts **ppescc);
251 }
252
253 /************************************************************
254  *      interface IRemoteDebugApplicationThread
255  */
256 [
257     object,
258     uuid(51973c37-cb0c-11d0-b5c9-00a0244a0e7a),
259     pointer_default(unique)
260 ]
261 interface IRemoteDebugApplicationThread : IUnknown
262 {
263     HRESULT GetSystemThreadId(
264             [out] DWORD *dwThreadId);
265
266     HRESULT GetApplication(
267             [out] IRemoteDebugApplication **pprda);
268
269     HRESULT EnumStackFrames(
270             [out] IEnumDebugStackFrames **ppedsf);
271
272     HRESULT GetDescription(
273             [out] BSTR *pbstrDescription,
274             [out] BSTR *pbstrState);
275
276     HRESULT SetNextStatement(
277             [in]  IDebugStackFrame *pStackFrame,
278             [in]  IDebugCodeContext *pCodeContext);
279
280     HRESULT GetState(
281             [out] DWORD *pState);
282
283     HRESULT Suspend(
284             [out] DWORD *pdwCount);
285
286     HRESULT Resume(
287             [out] DWORD *pdwCount);
288
289     HRESULT GetSuspendCount(
290             [out] DWORD *pdwCount);
291 }
292
293 /************************************************************
294  *      interface IRemoteDebugApplication
295  */
296 [
297     object,
298     uuid(51973c30-cb0c-11d0-b5c9-00a0244Aae7a),
299     pointer_default(unique)
300 ]
301 interface IRemoteDebugApplication : IUnknown
302 {
303     HRESULT ResumeFromBreakPoint(
304             [in]  IRemoteDebugApplicationThread *prptFocus,
305             [in]  BREAKRESUMEACTION bra,
306             [in]  ERRORRESUMEACTION era);
307
308     HRESULT CauseBreak();
309
310     HRESULT ConnectDebugger(
311             [in]  IApplicationDebugger *pad);
312
313     HRESULT DisconnectDebugger();
314
315     HRESULT GetDebugger(
316             [out] IApplicationDebugger **pad);
317
318     HRESULT CreateInstanceAtApplication(
319             [in]  REFCLSID rclsid,
320             [in]  IUnknown *pUnkOuter,
321             [in]  DWORD dwClsContext,
322             [in]  REFIID riid,
323             [out, iid_is(riid)] IUnknown **ppvObject);
324
325     HRESULT QueryAlive();
326
327     HRESULT EnumThreads(
328             [out] IEnumRemoteDebugApplicationThreads **pperdat);
329
330     HRESULT GetName(
331             [out] BSTR *pbstrName);
332
333     HRESULT GetRootNode(
334             [out] IDebugApplicationNode **ppdanRoot);
335
336     HRESULT EnumGlobalExpressionContexts(
337             [out] IEnumDebugExpressionContexts **ppedec);
338 }
339
340 /************************************************************
341  *      interface IDebugApplication32
342  */
343 [
344     object,
345     uuid(51973c32-cb0c-11d0-b5c9-00a0244a0e7a),
346     pointer_default(unique),
347     local
348 ]
349 interface IDebugApplication32 : IRemoteDebugApplication
350 {
351     HRESULT SetName(
352             [in] LPCOLESTR pstrName);
353
354     HRESULT StepOutComplete();
355
356     HRESULT DebugOutput(
357             [in] LPCOLESTR pstr);
358
359     HRESULT StartDebugSession();
360
361     HRESULT HandleBreakPoint(
362             [in]  BREAKREASON br,
363             [out] BREAKRESUMEACTION *pbra);
364
365     HRESULT Close();
366
367     HRESULT GetBreakFlags(
368             [out] APPBREAKFLAGS *pabf,
369             [out] IRemoteDebugApplicationThread **pprdatSteppingThread);
370
371     HRESULT GetCurrentThread(
372             [out] IDebugApplicationThread **pat);
373
374     HRESULT CreateAsyncDebugOperation(
375             [in]  IDebugSyncOperation *psdo,
376             [out] IDebugAsyncOperation **ppado);
377
378     HRESULT AddStackFrameSniffer(
379             [in]  IDebugStackFrameSniffer *pdsfs,
380             [out] DWORD *pdwCookie);
381
382     HRESULT RemoveStackFrameSniffer(
383             [in]  DWORD dwCookie);
384
385     HRESULT QueryCurrentThreadIsDebuggerThread();
386
387     HRESULT SynchronousCallInDebuggerThread(
388             [in]  IDebugThreadCall32 *pptc,
389             [in]  DWORD dwParam1,
390             [in]  DWORD dwParam2,
391             [in]  DWORD dwParam3);
392
393     HRESULT CreateApplicationNode(
394             [out] IDebugApplicationNode **ppdanNew);
395
396     HRESULT FireDebuggerEvent(
397             [in]  REFGUID riid,
398             [in]  IUnknown *punk);
399
400     HRESULT HandleRuntimeError(
401             [in]  IActiveScriptErrorDebug *pErrorDebug,
402             [in]  IActiveScriptSite *pScriptSite,
403             [out] BREAKRESUMEACTION *pbra,
404             [out] ERRORRESUMEACTION *perra,
405             [out] BOOL *pfCallOnScriptError);
406
407     BOOL FCanJitDebug();
408
409     BOOL FIsAutoJitDebugEnabled();
410
411     HRESULT AddGlobalExpressionContextProvider(
412             [in]  IProvideExpressionContexts *pdsfs,
413             [out] DWORD *pdwCookie);
414
415     HRESULT RemoveGlobalExpressionContextProvider(
416             [in]  DWORD dwCookie);
417 }
418
419 /************************************************************
420  *      interface IDebugApplication64
421  */
422 [
423     object,
424     uuid(4dedc754-04c7-4f10-9e60-16a390fe6e62),
425     pointer_default(unique),
426     local
427 ]
428 interface IDebugApplication64 : IRemoteDebugApplication
429 {
430     HRESULT SetName(
431             [in] LPCOLESTR pstrName);
432
433     HRESULT StepOutComplete();
434
435     HRESULT DebugOutput(
436             [in] LPCOLESTR pstr);
437
438     HRESULT StartDebugSession();
439
440     HRESULT HandleBreakPoint(
441             [in]  BREAKREASON br,
442             [out] BREAKRESUMEACTION *pbra);
443
444     HRESULT Close();
445
446     HRESULT GetBreakFlags(
447             [out] APPBREAKFLAGS *pabf,
448             [out] IRemoteDebugApplicationThread **pprdatSteppingThread);
449
450     HRESULT GetCurrentThread(
451             [out] IDebugApplicationThread **pat);
452
453     HRESULT CreateAsyncDebugOperation(
454             [in]  IDebugSyncOperation *psdo,
455             [out] IDebugAsyncOperation **ppado);
456
457     HRESULT AddStackFrameSniffer(
458             [in]  IDebugStackFrameSniffer *pdsfs,
459             [out] DWORD *pdwCookie);
460
461     HRESULT RemoveStackFrameSniffer(
462             [in]  DWORD dwCookie);
463
464     HRESULT QueryCurrentThreadIsDebuggerThread();
465
466     HRESULT SynchronousCallInDebuggerThread(
467             [in]  IDebugThreadCall32 *pptc,
468             [in]  DWORDLONG dwParam1,
469             [in]  DWORDLONG dwParam2,
470             [in]  DWORDLONG dwParam3);
471
472     HRESULT CreateApplicationNode(
473             [out] IDebugApplicationNode **ppdanNew);
474
475     HRESULT FireDebuggerEvent(
476             [in]  REFGUID riid,
477             [in]  IUnknown *punk);
478
479     HRESULT HandleRuntimeError(
480             [in]  IActiveScriptErrorDebug *pErrorDebug,
481             [in]  IActiveScriptSite *pScriptSite,
482             [out] BREAKRESUMEACTION *pbra,
483             [out] ERRORRESUMEACTION *perra,
484             [out] BOOL *pfCallOnScriptError);
485
486     BOOL FCanJitDebug();
487
488     BOOL FIsAutoJitDebugEnabled();
489
490     HRESULT AddGlobalExpressionContextProvider(
491             [in]  IProvideExpressionContexts *pdsfs,
492             [out] DWORDLONG *pdwCookie);
493
494     HRESULT RemoveGlobalExpressionContextProvider(
495             [in]  DWORDLONG dwCookie);
496 }
497
498 /************************************************************
499  *      interface IActiveScriptSiteDebug32
500  */
501 [
502     object,
503     uuid(51973c11-cb0c-11d0-b5c9-00a0244a0e7a),
504     pointer_default(unique),
505     local
506 ]
507 interface IActiveScriptSiteDebug32 : IUnknown
508 {
509     HRESULT GetDocumentContextFromPosition(
510             [in]  DWORD dwSourceContext,
511             [in]  ULONG uCharacterOffset,
512             [in]  ULONG uNumChars,
513             [out] IDebugDocumentContext **ppsc);
514
515     HRESULT GetApplication(
516             [out] IDebugApplication32 **ppda);
517
518     HRESULT GetRootApplicationNode(
519             [out] IDebugApplicationNode **ppdanRoot);
520
521     HRESULT OnScriptErrorDebug(
522             [in]  IActiveScriptErrorDebug *pErrorDebug,
523             [out] BOOL *pfEnterDebugger,
524             [out] BOOL *pfCallOnScriptErrorWhenContinuing);
525 }
526
527 /************************************************************
528  *      interface IActiveScriptSiteDebug64
529  */
530 [
531     object,
532     uuid(d6b96b0a-7463-402c-92ac-89984226942f),
533     pointer_default(unique),
534     local
535 ]
536 interface IActiveScriptSiteDebug64 : IUnknown
537 {
538     HRESULT GetDocumentContextFromPosition(
539             [in]  DWORDLONG dwSourceContext,
540             [in]  ULONG uCharacterOffset,
541             [in]  ULONG uNumChars,
542             [out] IDebugDocumentContext **ppsc);
543
544     HRESULT GetApplication(
545             [out] IDebugApplication64 **ppda);
546
547     HRESULT GetRootApplicationNode(
548             [out] IDebugApplicationNode **ppdanRoot);
549
550     HRESULT OnScriptErrorDebug(
551             [in]  IActiveScriptErrorDebug *pErrorDebug,
552             [out] BOOL *pfEnterDebugger,
553             [out] BOOL *pfCallOnScriptErrorWhenContinuing);
554 }
555
556 cpp_quote("#ifndef DISABLE_ACTIVDBG_INTERFACE_WRAPPERS")
557 cpp_quote("#ifdef _WIN64")
558
559 cpp_quote("#define IActiveScriptDebug IActiveScriptDebug64")
560 cpp_quote("#define IID_IActiveScriptDebug IID_IActiveScriptDebug64")
561
562 cpp_quote("#define IActiveScriptSiteDebug IActiveScriptSiteDebug64")
563 cpp_quote("#define IID_IActiveScriptSiteDebug IID_IActiveScriptSiteDebug64")
564
565 cpp_quote("#define IDebugApplication IDebugApplication64")
566 cpp_quote("#define IID_IDebugApplication IID_IDebugApplication64")
567
568 cpp_quote("#else")
569
570 cpp_quote("#define IActiveScriptDebug IActiveScriptDebug32")
571 cpp_quote("#define IID_IActiveScriptDebug IID_IActiveScriptDebug32")
572
573 cpp_quote("#define IActiveScriptSiteDebug IActiveScriptSiteDebug32")
574 cpp_quote("#define IID_IActiveScriptSiteDebug IID_IActiveScriptSiteDebug32")
575
576 cpp_quote("#define IDebugApplication IDebugApplication32")
577 cpp_quote("#define IID_IDebugApplication IID_IDebugApplication32")
578
579 cpp_quote("#endif")
580 cpp_quote("#endif")