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