oleaut32/tests: Use GetModuleHandle and add a few skip's.
[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     coclass ApplicationObject2;
39
40     [
41         odl,
42         uuid(12345678-1234-4321-1234-121212121212)
43     ]
44     interface ISomethingFromDispatch : IDispatch
45     {
46         HRESULT anotherfn(void);
47     }
48
49     [
50         odl,
51         uuid(a1f8cae3-c947-4c5f-b57d-c87b9b5f3586),
52         oleautomation,
53         dual
54     ]
55     interface IWidget : IDispatch
56     {
57         [propput, id(DISPID_TM_NAME)]
58         HRESULT Name([in] BSTR name);
59         [propget, id(DISPID_TM_NAME)]
60         HRESULT Name([out, retval] BSTR *name);
61
62         [id(DISPID_TM_DOSOMETHING)]
63         HRESULT DoSomething([in] double number, [out] BSTR *str1, [in, defaultvalue("")] BSTR str2, [in, optional] VARIANT *opt);
64
65         [propget, id(DISPID_TM_STATE)]
66         HRESULT State([out, retval] STATE *state);
67         [propput, id(DISPID_TM_STATE)]
68         HRESULT State([in] STATE state);
69
70         [id(DISPID_TM_MAP)]
71         HRESULT Map([in] BSTR bstrId, [out, retval] BSTR *sValue);
72
73         [id(DISPID_TM_SETOLECOLOR)]
74         HRESULT SetOleColor([in] OLE_COLOR val);
75
76         [id(DISPID_TM_GETOLECOLOR)]
77         HRESULT GetOleColor([out, retval] OLE_COLOR *pVal);
78
79         [propget, id(DISPID_TM_CLONE)]
80         HRESULT Clone([out, retval] IWidget **ppVal);
81
82         [propget, id(DISPID_TM_CLONEDISPATCH)]
83         HRESULT CloneDispatch([out, retval] IDispatch **ppVal);
84
85         [propget, id(DISPID_TM_CLONECOCLASS)]
86         HRESULT CloneCoclass([out, retval] ApplicationObject2 **ppVal);
87
88         [propget, id(DISPID_VALUE)]
89         HRESULT Value([in] VARIANT *value, [out, retval] VARIANT *retval);
90
91         [id(DISPID_TM_ARRAY)]
92         HRESULT Array([in] SAFEARRAY(BSTR) values);
93
94         [id(DISPID_TM_VARARRAYPTR)]
95         HRESULT VariantArrayPtr([in] SAFEARRAY(VARIANT) *values);
96
97         [id(DISPID_TM_VARIANT)]
98         void Variant([in] VARIANT var);
99
100         [vararg, id(DISPID_TM_VARARG)]
101         void VarArg([in] int numexpect, [in] SAFEARRAY(VARIANT) values);
102
103         [id(DISPID_TM_ERROR)]
104         HRESULT Error();
105
106         [propget, id(DISPID_TM_CLONEINTERFACE)]
107         HRESULT CloneInterface([out, retval] ISomethingFromDispatch **ppVal);
108
109     }
110
111     [
112         odl,
113         uuid(a028db05-30f0-4b93-b17a-41c72f831d84),
114 #if 0 /* FIXME: commented out as causes widl to generate incorrect typelib */
115         dual,
116 #endif
117         oleautomation
118     ]
119     interface IKindaEnumWidget : IUnknown
120     {
121         HRESULT Next(
122                      [out] IWidget **widget);
123
124         HRESULT Count(
125                       [out] unsigned long *count);
126
127         HRESULT Reset();
128
129         HRESULT Clone(
130                       [out] IKindaEnumWidget **ppenum);
131     }
132
133     [
134         odl,
135         uuid(a028db06-30f0-4b93-b17a-41c72f831d84),
136     ]
137     interface INonOleAutomation : IUnknown
138     {
139         [id(DISPID_NOA_BSTRRET)]
140         BSTR BstrRet();
141     }
142
143
144     [
145         dllname("comm.drv"),
146         uuid(d377f60b-8639-4261-8ee7-75c8340d2cc9),
147     ]
148     module BadModule
149     {
150         [
151             entry("Foo"),
152         ]
153         HRESULT BadModuleFoo();
154     };
155
156     [
157         dllname("oleaut32.dll"),
158         uuid(d377f60c-8639-4261-8ee7-75c8340d2cc9),
159     ]
160     module BadEntry
161     {
162         [
163             entry("Foo"),
164         ]
165         HRESULT BadEntryFoo();
166     };
167
168     [
169         uuid(bb171948-10ec-407a-9a57-2f85f797ff1a),
170         appobject,
171     ]
172     coclass ApplicationObject2
173     {
174         interface IWidget;
175         [source] interface IWidget;
176     };
177
178     [
179         odl,
180         uuid(375f8a9d-33d0-44f3-b972-61f8407899e0)
181     ]
182         interface ItestIF1 : IUnknown
183     {
184         HRESULT fn1([in] int x);
185         HRESULT fn2([out,retval] int *x);
186     }
187
188     [
189         odl,
190         uuid(094056a3-666f-4956-be12-1859668310b8)
191     ]
192     interface ItestIF2 : ItestIF1
193     {
194         HRESULT fn3([in] int y);
195     }
196
197     [
198         odl,
199         uuid(33baba09-2e68-43ab-81fe-d84b403df2e5)
200     ]
201     dispinterface ItestIF3
202     {
203         interface ItestIF2;
204     }
205
206     [
207         odl,
208         uuid(a01005c7-7491-42eb-94f3-668e37ce60a6)
209     ]
210     dispinterface ItestIF4
211     {
212         properties:
213         methods:
214         [id(0x1c)] HRESULT fn([in] int z);
215     }
216
217     [
218         odl,
219         uuid(4ab61e25-c09f-4239-8f7f-7a018ea0199f),
220         dual
221     ]
222     interface ItestIF5 : ItestIF2
223     {
224         [id(0x1234)] HRESULT fn4([in] int a);
225         [id(0x1235)] HRESULT fn5([in] int a);
226     }
227
228     [
229         odl,
230         uuid(ec236d8e-2cc7-44f2-b394-36c86ff3da74)
231     ]
232     interface ItestIF6 : IDispatch
233     {
234         [id(0x1234)] HRESULT fn4([in] int a);
235         [id(0x1235)] HRESULT fn5([in] int a);
236     }
237
238     [
239         odl,
240         uuid(f711b105-554d-4751-818c-46fcc5d7c0d5),
241         dual
242     ]
243     interface ItestIF7 : ItestIF6
244     {
245         [id(0x1236)] HRESULT fn6([in] int a);
246     }
247
248     [
249         odl,
250         uuid(bdfa260b-ef40-43d3-b071-cddec919f132)
251     ]
252         interface ItestIF8
253     {
254         HRESULT fn1([in] int x);
255         HRESULT fn2([out,retval] int *x);
256     }
257
258     [
259         odl,
260         uuid(51033a23-dc37-4f19-aa34-4d8a670458a0)
261
262     ]
263     interface ItestIF9 : ItestIF8
264     {
265         HRESULT fn3([in] int y);
266     }
267
268     [
269         odl,
270         uuid(2e8f14fe-0bce-42f0-8b7d-3af8393c7967)
271     ]
272     dispinterface ItestIF10
273     {
274         interface ItestIF9;
275     }
276
277     [
278         odl,
279         uuid(7d9e9371-482e-4944-9b19-511fc705236f)
280     ]
281     dispinterface ItestIF11
282     {
283         interface ItestIF7;
284     }
285
286 };