dmusic: COM cleanup of IDirectMusic8.
[wine] / dlls / oleaut32 / tests / tmarshal.idl
1 /*
2  * Copyright (C) 2005 Robert Shearman
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
20 #include "tmarshal_dispids.h"
21 import "ocidl.idl";
22
23 [
24   uuid(d96d8a3e-78b6-4c8d-8f27-059db959be8a),
25   version(1.0),
26   helpstring("Test Typelib")
27 ]
28 library TestTypelib
29 {
30     importlib("stdole2.tlb");
31
32     typedef enum tagSTATE
33     {
34         STATE_UNWIDGETIFIED = 1,
35         STATE_WIDGETIFIED
36     } STATE;
37
38     typedef struct tagMYSTRUCT
39     {
40         INT field1;
41         ULONGLONG field2;
42         UINT uarr[8];
43     } MYSTRUCT;
44
45     coclass ApplicationObject2;
46
47     [
48         odl,
49         uuid(12345678-1234-4321-1234-121212121212)
50     ]
51     interface ISomethingFromDispatch : IDispatch
52     {
53         HRESULT anotherfn(void);
54     }
55
56     [
57         odl,
58         oleautomation,
59         dual,
60         uuid(3f7e06fe-0bce-46f0-8b7d-3a68393c7967)
61     ]
62     interface ItestDual : IDispatch
63     {
64         HRESULT test();
65     }
66
67     [
68         odl,
69         uuid(a1f8cae3-c947-4c5f-b57d-c87b9b5f3586),
70         oleautomation,
71         dual
72     ]
73     interface IWidget : IDispatch
74     {
75         [propput, id(DISPID_TM_NAME)]
76         HRESULT Name([in] BSTR name);
77         [propget, id(DISPID_TM_NAME)]
78         HRESULT Name([out, retval] BSTR *name);
79
80         [id(DISPID_TM_DOSOMETHING)]
81         HRESULT DoSomething([in] double number, [out] BSTR *str1, [in, defaultvalue("")] BSTR str2, [in, optional] VARIANT *opt);
82
83         [propget, id(DISPID_TM_STATE)]
84         HRESULT State([out, retval] STATE *state);
85         [propput, id(DISPID_TM_STATE)]
86         HRESULT State([in] STATE state);
87
88         [id(DISPID_TM_MAP)]
89         HRESULT Map([in] BSTR bstrId, [out, retval] BSTR *sValue);
90
91         [id(DISPID_TM_SETOLECOLOR)]
92         HRESULT SetOleColor([in] OLE_COLOR val);
93
94         [id(DISPID_TM_GETOLECOLOR)]
95         HRESULT GetOleColor([out, retval] OLE_COLOR *pVal);
96
97         [propget, id(DISPID_TM_CLONE)]
98         HRESULT Clone([out, retval] IWidget **ppVal);
99
100         [propget, id(DISPID_TM_CLONEDISPATCH)]
101         HRESULT CloneDispatch([out, retval] IDispatch **ppVal);
102
103         [propget, id(DISPID_TM_CLONECOCLASS)]
104         HRESULT CloneCoclass([out, retval] ApplicationObject2 **ppVal);
105
106         [propget, id(DISPID_VALUE)]
107         HRESULT Value([in] VARIANT *value, [out, retval] VARIANT *retval);
108
109         [id(DISPID_TM_ARRAY)]
110         HRESULT Array([in] SAFEARRAY(BSTR) values);
111
112         [id(DISPID_TM_VARARRAYPTR)]
113         HRESULT VariantArrayPtr([in] SAFEARRAY(VARIANT) *values);
114
115         [id(DISPID_TM_VARCARRAY)]
116         HRESULT VariantCArray([in] ULONG count, [in, out] VARIANT values[2]);
117
118         [id(DISPID_TM_VARIANT)]
119         HRESULT Variant([in] VARIANT var);
120
121         [vararg, id(DISPID_TM_VARARG)]
122         HRESULT VarArg([in] int numexpect, [in] SAFEARRAY(VARIANT) values);
123
124         [id(DISPID_TM_STRUCTARGS)]
125         HRESULT StructArgs([in] MYSTRUCT byval, [in] MYSTRUCT *byptr, [in] MYSTRUCT arr[5]);
126
127         [id(DISPID_TM_ERROR)]
128         HRESULT Error();
129
130         [propget, id(DISPID_TM_CLONEINTERFACE)]
131         HRESULT CloneInterface([out, retval] ISomethingFromDispatch **ppVal);
132
133         [id(DISPID_TM_PROP_WITH_LCID), propput]
134         HRESULT prop_with_lcid([in,lcid] long lcid, [in] INT i);
135
136         [id(DISPID_TM_PROP_WITH_LCID), propget]
137         HRESULT prop_with_lcid([in,lcid] long lcid, [out,retval] INT *i);
138
139         [id(DISPID_TM_PROP_INT), propget]
140         HRESULT prop_int([out,retval] INT *i);
141
142         [id(DISPID_TM_PROP_UINT), propget]
143         HRESULT prop_uint([out,retval] UINT *i);
144
145         [id(DISPID_TM_BYREF_UINT)]
146         HRESULT ByRefUInt([in, out] UINT *i);
147
148         [id(DISPID_TM_PROP_OPT_ARG), propput]
149         HRESULT prop_opt_arg([in,optional] INT opt, [in] INT i);
150
151         [id(DISPID_TM_PROP_REQ_ARG), propput]
152         HRESULT prop_req_arg([in] INT req, [in] INT i);
153
154         [id(DISPID_TM_RESTRICTED), restricted]
155         HRESULT restrict([out, retval] INT *i);
156
157         [id(DISPID_TM_NEG_RESTRICTED), restricted]
158         HRESULT neg_restrict([out, retval] INT *i);
159     }
160
161     [
162         odl,
163         uuid(a1f8cae3-c947-3c5f-a57c-c88b9b6f3586),
164         oleautomation,
165         dual
166     ]
167     interface IStaticWidget : IDispatch
168     {
169         [id(DISPID_TM_TESTDUAL)]
170         HRESULT TestDual([in] ItestDual *p);
171     }
172
173     [
174         odl,
175         uuid(a028db05-30f0-4b93-b17a-41c72f831d84),
176 #if 0 /* FIXME: commented out as causes widl to generate incorrect typelib */
177         dual,
178 #endif
179         oleautomation
180     ]
181     interface IKindaEnumWidget : IUnknown
182     {
183         HRESULT Next(
184                      [out] IWidget **widget);
185
186         HRESULT Count(
187                       [out] unsigned long *count);
188
189         HRESULT Reset();
190
191         HRESULT Clone(
192                       [out] IKindaEnumWidget **ppenum);
193     }
194
195     [
196         odl,
197         uuid(a028db06-30f0-4b93-b17a-41c72f831d84),
198     ]
199     interface INonOleAutomation : IUnknown
200     {
201         [id(DISPID_NOA_BSTRRET)]
202         BSTR BstrRet();
203
204         [id(DISPID_NOA_ERROR)]
205         HRESULT Error();
206     }
207
208
209     [
210         dllname("comm.drv"),
211         uuid(d377f60b-8639-4261-8ee7-75c8340d2cc9),
212     ]
213     module BadModule
214     {
215         [
216             entry("Foo"),
217         ]
218         HRESULT BadModuleFoo();
219     };
220
221     [
222         dllname("oleaut32.dll"),
223         uuid(d377f60c-8639-4261-8ee7-75c8340d2cc9),
224     ]
225     module BadEntry
226     {
227         [
228             entry("Foo"),
229         ]
230         HRESULT BadEntryFoo();
231     };
232
233     [
234         uuid(bb171948-10ec-407a-9a57-2f85f797ff1a),
235         appobject,
236     ]
237     coclass ApplicationObject2
238     {
239         interface IWidget;
240         [source] interface IWidget;
241     };
242
243     [
244         odl,
245         uuid(375f8a9d-33d0-44f3-b972-61f8407899e0)
246     ]
247         interface ItestIF1 : IUnknown
248     {
249         HRESULT fn1([in] int x);
250         HRESULT fn2([out,retval] int *x);
251     }
252
253     [
254         odl,
255         uuid(094056a3-666f-4956-be12-1859668310b8)
256     ]
257     interface ItestIF2 : ItestIF1
258     {
259         HRESULT fn3([in] int y);
260     }
261
262     [
263         odl,
264         uuid(33baba09-2e68-43ab-81fe-d84b403df2e5)
265     ]
266     dispinterface ItestIF3
267     {
268         interface ItestIF2;
269     }
270
271     [
272         odl,
273         uuid(a01005c7-7491-42eb-94f3-668e37ce60a6)
274     ]
275     dispinterface ItestIF4
276     {
277         properties:
278         methods:
279         [id(0x1c)] HRESULT fn([in] int z);
280     }
281
282     [
283         odl,
284         uuid(4ab61e25-c09f-4239-8f7f-7a018ea0199f),
285         dual
286     ]
287     interface ItestIF5 : ItestIF2
288     {
289         [id(0x1234)] HRESULT fn4([in] int a);
290         [id(0x1235)] HRESULT fn5([in] int a);
291     }
292
293     [
294         odl,
295         uuid(ec236d8e-2cc7-44f2-b394-36c86ff3da74)
296     ]
297     interface ItestIF6 : IDispatch
298     {
299         [id(0x1234)] HRESULT fn4([in] int a);
300         [id(0x1235)] HRESULT fn5([in] int a);
301     }
302
303     [
304         odl,
305         uuid(f711b105-554d-4751-818c-46fcc5d7c0d5),
306         dual
307     ]
308     interface ItestIF7 : ItestIF6
309     {
310         [id(0x1236)] HRESULT fn6([in] GUID a);
311     }
312
313     [
314         odl,
315         uuid(bdfa260b-ef40-43d3-b071-cddec919f132)
316     ]
317         interface ItestIF8
318     {
319         HRESULT fn1([in] int x);
320         HRESULT fn2([out,retval] int *x);
321     }
322
323     [
324         odl,
325         uuid(51033a23-dc37-4f19-aa34-4d8a670458a0)
326
327     ]
328     interface ItestIF9 : ItestIF8
329     {
330         HRESULT fn3([in] int y);
331     }
332
333     [
334         odl,
335         uuid(2e8f14fe-0bce-42f0-8b7d-3af8393c7967)
336     ]
337     dispinterface ItestIF10
338     {
339         interface ItestIF9;
340     }
341
342     [
343         odl,
344         uuid(7d9e9371-482e-4944-9b19-511fc705236f)
345     ]
346     dispinterface ItestIF11
347     {
348         interface ItestIF7;
349     }
350
351 };