1/*
2 * A typelib to test registration.
3 *
4 * Copyright 2010 Huw Davies
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21#pragma makedep ident
22#pragma makedep typelib
23
24import "oaidl.idl"; /* needed by widl */
25
26[
27    uuid(a2cfdbd3-2bbf-4b1c-a414-5a5904e634c9),
28    version(1.0)
29]
30library register_test
31{
32    importlib("stdole2.tlb");
33
34    [
35        uuid(06c1f5f0-ea49-44f9-8e3b-4be00c7a0689)
36    ]
37    interface Inon_ole : IUnknown
38    {
39        HRESULT test();
40    }
41
42    [
43        uuid(06c1f5f1-ea49-44f9-8e3b-4be00c7a0689)
44    ]
45    interface Inon_ole_from_disp : IDispatch
46    {
47        HRESULT test();
48    }
49
50    [
51        uuid(06c1f5f2-ea49-44f9-8e3b-4be00c7a0689),
52        oleautomation
53    ]
54    interface Iole : IUnknown
55    {
56        HRESULT test();
57    }
58
59    [
60        uuid(06c1f5f3-ea49-44f9-8e3b-4be00c7a0689),
61        oleautomation
62    ]
63    interface Iole_from_disp : IDispatch
64    {
65        HRESULT test();
66    }
67
68    [
69        uuid(06c1f5f4-ea49-44f9-8e3b-4be00c7a0689),
70        dual
71    ]
72    interface Inon_ole_dual : IUnknown
73    {
74        HRESULT test();
75    }
76
77    [
78        uuid(06c1f5f5-ea49-44f9-8e3b-4be00c7a0689),
79        oleautomation,
80        dual
81    ]
82    interface Iole_dual : IUnknown
83    {
84        HRESULT test();
85    }
86
87    [
88        uuid(06c1f5f6-ea49-44f9-8e3b-4be00c7a0689),
89        dual
90    ]
91    interface Inon_ole_dual_from_disp : IDispatch
92    {
93        HRESULT test();
94    }
95
96    [
97        uuid(06c1f5f7-ea49-44f9-8e3b-4be00c7a0689),
98        oleautomation,
99        dual
100    ]
101    interface Iole_dual_from_disp : IDispatch
102    {
103        HRESULT test();
104    }
105
106    /* oleautomation not allowed with dispinterfaces */
107    [
108        uuid(06c1f5f8-ea49-44f9-8e3b-4be00c7a0689)
109    ]
110    dispinterface Idisp
111    {
112    properties:
113        [id(0x0)] BSTR Name;
114    methods:
115    }
116
117    [
118        uuid(06c1f5f9-ea49-44f9-8e3b-4be00c7a0689)
119    ]
120    dispinterface Idisp_from_non_ole_iface
121    {
122        interface Inon_ole;
123    }
124
125    [
126        uuid(06c1f5fa-ea49-44f9-8e3b-4be00c7a0689)
127    ]
128    dispinterface Idisp_from_ole_from_disp_iface
129    {
130        interface Iole_from_disp;
131    }
132
133    [
134        uuid(fed318b2-c2ed-11e7-abc4-cec278b6b50a)
135    ]
136    interface ICollection : IDispatch
137    {
138        [id(DISPID_VALUE)]
139        HRESULT Item([in] int i, [out, retval] int *p);
140    }
141
142    [
143        uuid(f1b68c3b-02a3-4110-bc4c-cf9bc7e7f177)
144    ]
145    interface IInvokeTest : IDispatch
146    {
147        [propget, id(DISPID_VALUE)]
148        LONG test([in] LONG i);
149        [propputref, id(1)]
150        LONG testprop([in] LONG *i);
151        [propputref, id(2)]
152        LONG testprop2([in] IUnknown *i);
153        [id(3)]
154        HRESULT testfunc([in] int i, [out, retval] int *p);
155        [propget, id(4)]
156        HRESULT testget([out, retval] ICollection **p);
157    }
158
159    /* uuid is same as for test_struct2 in test_tlb.idl, fields are different */
160    [uuid(4029f190-ca4a-4611-aeb9-673983cb96de)]
161    struct test_struct3
162    {
163        UINT32 field;
164        HRESULT hr;
165    };
166}
167