1/*************************************************************************
2 *
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
6 *
7 * OpenOffice.org - a multi-platform office productivity suite
8 *
9 * This file is part of OpenOffice.org.
10 *
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
14 *
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
20 *
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org.  If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
25 *
26 ************************************************************************/
27// AxTestComponents.idl : IDL source for AxTestComponents.dll
28//
29
30// This file will be processed by the MIDL tool to
31// produce the type library (AxTestComponents.tlb) and marshalling code.
32// next id 86
33import "oaidl.idl";
34import "ocidl.idl";
35	[
36		object,
37		uuid(BFE10EBD-8584-11D4-8335-005004526AB4),
38		dual,
39		helpstring("IBasic Interface"),
40		pointer_default(unique)
41	]
42	interface IBasic : IDispatch
43	{
44		[id(82), helpstring("method inBool")] HRESULT inBool([in]VARIANT_BOOL val);
45		[id(1), helpstring("method inByte")] HRESULT inByte([in] unsigned char val);
46		[id(2), helpstring("method inShort")] HRESULT inShort([in] short val);
47		[id(3), helpstring("method inLong")] HRESULT inLong([in] long val);
48		[id(4), helpstring("method inString")] HRESULT inString([in] BSTR val);
49		[id(5), helpstring("method inFloat")] HRESULT inFloat([in] float val);
50		[id(6), helpstring("method inDouble")] HRESULT inDouble([in] double val);
51		[id(7), helpstring("method inVariant")] HRESULT inVariant([in] VARIANT val);
52		[id(8), helpstring("method inArray")] HRESULT inArray([in] SAFEARRAY(VARIANT) val);
53		[id(9), helpstring("method inObject")] HRESULT inObject([in] IDispatch* val);
54		[id(83), helpstring("method inoutBool")] HRESULT inoutBool([in,out]VARIANT_BOOL* val);
55		[id(12), helpstring("method inoutByte")] HRESULT inoutByte([in,out] unsigned char* val);
56		[id(13), helpstring("method inoutShort")] HRESULT inoutShort([in,out] short* val);
57		[id(14), helpstring("method inoutLong")] HRESULT inoutLong([in,out] long * val);
58		[id(15), helpstring("method inoutString")] HRESULT inoutString([in, out] BSTR* val);
59		[id(16), helpstring("method inoutFloat")] HRESULT inoutFloat([in,out] float * val);
60		[id(17), helpstring("method inoutDouble")] HRESULT inoutDouble([in,out] double * val);
61		[id(18), helpstring("method inoutVariant")] HRESULT inoutVariant([in,out] VARIANT * val);
62		[id(19), helpstring("method inoutArray")] HRESULT inoutArray([in,out] SAFEARRAY(VARIANT) * val);
63		[id(20), helpstring("method inoutObject")] HRESULT inoutObject([in,out] IDispatch** val);
64		[id(84), helpstring("method outBool")] HRESULT outBool([out] VARIANT_BOOL* val);
65		[id(23), helpstring("method outByte")] HRESULT outByte([out] unsigned char* val);
66		[id(24), helpstring("method outShort")] HRESULT outShort([out] short* val);
67		[id(25), helpstring("method outLong")] HRESULT outLong([out] long* val);
68		[id(26), helpstring("method outString")] HRESULT outString([out] BSTR* val);
69		[id(27), helpstring("method outFloat")] HRESULT outFloat([out] float* val);
70		[id(28), helpstring("method outDouble")] HRESULT outDouble([out] double* val);
71		[id(29), helpstring("method outVariant")] HRESULT outVariant([out] VARIANT* val);
72		[id(30), helpstring("method outArray")] HRESULT outArray([out] SAFEARRAY(VARIANT) * val);
73		[id(31), helpstring("method outObject")] HRESULT outObject([out] IDispatch** val);
74		[propget, id(85), helpstring("property prpBool")] HRESULT prpBool([out, retval] VARIANT_BOOL *pVal);
75		[propput, id(85), helpstring("property prpBool")] HRESULT prpBool([in] VARIANT_BOOL newVal);
76		[propget, id(34), helpstring("property prpByte")] HRESULT prpByte([out, retval] unsigned char *pVal);
77		[propput, id(34), helpstring("property prpByte")] HRESULT prpByte([in] unsigned char newVal);
78		[propget, id(35), helpstring("property prpShort")] HRESULT prpShort([out, retval] short *pVal);
79		[propput, id(35), helpstring("property prpShort")] HRESULT prpShort([in] short newVal);
80		[propget, id(36), helpstring("property prpLong")] HRESULT prpLong([out, retval] long *pVal);
81		[propput, id(36), helpstring("property prpLong")] HRESULT prpLong([in] long newVal);
82		[propget, id(37), helpstring("property prpString")] HRESULT prpString([out, retval] BSTR *pVal);
83		[propput, id(37), helpstring("property prpString")] HRESULT prpString([in] BSTR newVal);
84		[propget, id(38), helpstring("property prpFloat")] HRESULT prpFloat([out, retval] float *pVal);
85		[propput, id(38), helpstring("property prpFloat")] HRESULT prpFloat([in] float newVal);
86		[propget, id(39), helpstring("property prpDouble")] HRESULT prpDouble([out, retval] double *pVal);
87		[propput, id(39), helpstring("property prpDouble")] HRESULT prpDouble([in] double newVal);
88		[propget, id(40), helpstring("property prpVariant")] HRESULT prpVariant([out, retval] VARIANT *pVal);
89		[propput, id(40), helpstring("property prpVariant")] HRESULT prpVariant([in] VARIANT newVal);
90		[propget, id(41), helpstring("property prpArray")] HRESULT prpArray([out, retval]SAFEARRAY(VARIANT) *pVal);
91		[propput, id(41), helpstring("property prpArray")] HRESULT prpArray([in] SAFEARRAY(VARIANT) newVal);
92		[propget, id(42), helpstring("property prpObject")] HRESULT prpObject([out, retval] IDispatch* *pVal);
93		[propput, id(42), helpstring("property prpObject")] HRESULT prpObject([in] IDispatch* newVal);
94		[id(43), helpstring("method mixed1")] HRESULT mixed1(
95											  [in, out] unsigned char* aChar,
96											  [in, out] float *aFloat,
97											  [in,out] VARIANT* inoutVar);
98		[id(44), helpstring("method inSequenceLong")] HRESULT inSequenceLong([in] SAFEARRAY(long)  ar);
99		[id(45), helpstring("method inSequenceByte")] HRESULT inSequenceByte([in] SAFEARRAY(byte) ar);
100		[id(46), helpstring("method inSequenceShort")] HRESULT inSequenceShort([in] SAFEARRAY(short) ar);
101		[id(47), helpstring("method inSequenceString")] HRESULT inSequenceString([in] SAFEARRAY( BSTR) ar);
102		[id(48), helpstring("method inSequenceFloat")] HRESULT inSequenceFloat([in] SAFEARRAY(float) ar);
103		[id(49), helpstring("method inSequenceDouble")] HRESULT inSequenceDouble([in] SAFEARRAY(double) ar);
104		[id(50), helpstring("method inSequenceObject")] HRESULT inSequenceObject([in] SAFEARRAY(IDispatch*) ar);
105		[id(51), helpstring("method outSequenceByte")] HRESULT outSequenceByte([out] SAFEARRAY(unsigned char)* val);
106		[id(52), helpstring("method outSequenceShort")] HRESULT outSequenceShort([out] SAFEARRAY(short)* val);
107		[id(53), helpstring("method outSequenceLong")] HRESULT outSequenceLong([out] SAFEARRAY(long )*val);
108		[id(54), helpstring("method outSequenceString")] HRESULT outSequenceString([out] SAFEARRAY(BSTR)* val);
109		[id(55), helpstring("method outSequenceFloat")] HRESULT outSequenceFloat([out] SAFEARRAY(float)* val);
110		[id(56), helpstring("method outSequenceDouble")] HRESULT outSequenceDouble([out] SAFEARRAY(double)* val);
111		[id(57), helpstring("method outSequenceObject")] HRESULT outSequenceObject([out] SAFEARRAY(IDispatch*)* val);
112		[id(58), helpstring("method inoutSequenceByte")] HRESULT inoutSequenceByte([in,out] SAFEARRAY(unsigned char)* val);
113		[id(59), helpstring("method inoutSequenceShort")] HRESULT inoutSequenceShort([in,out] SAFEARRAY(short)* val);
114		[id(60), helpstring("method inoutSequenceLong")] HRESULT inoutSequenceLong([in,out] SAFEARRAY( long)*val);
115		[id(61), helpstring("method inoutSequenceString")] HRESULT inoutSequenceString([in,out] SAFEARRAY(BSTR)* val);
116		[id(62), helpstring("method inoutSequenceFloat")] HRESULT inoutSequenceFloat([in,out] SAFEARRAY(float)* val);
117		[id(63), helpstring("method inoutSequenceDouble")] HRESULT inoutSequenceDouble([in,out] SAFEARRAY(double)* val);
118		[id(64), helpstring("method inoutSequenceObject")] HRESULT inoutSequenceObject([in,out] SAFEARRAY(IDispatch*)* val);
119		[id(65), helpstring("method inMulDimArrayLong")] HRESULT inMulDimArrayLong([in] SAFEARRAY(long) val );
120		[id(66), helpstring("method inMulDimArrayVariant")] HRESULT inMulDimArrayVariant([in] SAFEARRAY(VARIANT) val);
121		[id(67), helpstring("method inMulDimArrayLong2")] HRESULT inMulDimArrayLong2([in] SAFEARRAY(long) val);
122		[id(68), helpstring("method inMulDimArrayVariant2")] HRESULT inMulDimArrayVariant2([in] SAFEARRAY(VARIANT) val);
123		[id(69), helpstring("method inMulDimArrayByte")] HRESULT inMulDimArrayByte([in] SAFEARRAY(unsigned char) val);
124		[id(70), helpstring("method inMulDimArrayByte2")] HRESULT inMulDimArrayByte2([in] SAFEARRAY(unsigned char) val);
125		[id(71), helpstring("method outMore")] HRESULT outMore([out]long* val1, [out]long* val2);
126
127		[id(72), helpstring("method optional1")]
128		HRESULT optional1([in] long val1, [in, optional] VARIANT* val2);
129		[id(73), helpstring("method optional2")]
130		HRESULT optional2([out] long* val1, [out, optional] VARIANT* val2);
131		[id(74), helpstring("method optional3")]
132		HRESULT optional3([in, optional] VARIANT* val1, [in, optional] VARIANT* val2);
133		[id(75), helpstring("method optional4")]
134		HRESULT optional4([in, out, optional] VARIANT* val1, [in, out, optional] VARIANT* val2);
135		[id(76), helpstring("method optional5")]
136		HRESULT optional5([out, optional] VARIANT* val1, [out, optional] VARIANT* val2);
137		//midl creates for val4 a BSTR "4" as default value in the TLB. The midl complains
138		//but the error message seems to be not for this case.
139		//in defaultvalue2 val4 has an VT_I4 in the TLB. This must be a bug!
140		[id(77), helpstring("method defaultvalue1")]
141		HRESULT defaultvalue1([in, defaultvalue(1)] long val1,
142							  [in, defaultvalue(2)] double* val2,
143							 // [in, defaultvalue(3)] VARIANT val3, //ok
144							  [in, defaultvalue(4)] VARIANT* val4);
145
146		// bug im midl: when val3 and val4 are pointers then the generated header cretates
147		// for all params default values:
148		//HRESULT STDMETHODCALLTYPE defaultvalue2(
149		//            /* [defaultvalue][in] */ long *val1 = 10,
150        //    /* [defaultvalue][in] */ double *val2 = 3.14,
151        //    /* [defaultvalue][in] */ VARIANT *val3 = 10,
152        //    /* [defaultvalue][in] */ VARIANT *val4 = 100) = 0;
153		// And that does not compile.
154		//Therefore we must not include the midl generated header, instead use
155		// #import to create the interface header
156		[id(78), helpstring("method defaultvalue2")]
157		HRESULT defaultvalue2([in, out, defaultvalue(1)]long* val1,
158							  [in, out, defaultvalue(2)] double* val2,
159							 // [in, out, defaultvalue(3)] VARIANT *val3,
160							  [in, out, defaultvalue(4)] VARIANT *val4);
161
162		[id(79), helpstring("method varargfunc1"),vararg]
163		HRESULT varargfunc1([in] long val1, [in] SAFEARRAY(VARIANT) val2);
164		[id(80), helpstring("method varargfunc2")]
165		HRESULT varargfunc2([out] long* val1, [out] SAFEARRAY(VARIANT)* val2);
166
167
168		[id(86), helpstring("method inSequenceByteDim2")] HRESULT inSequenceByteDim2([in] SAFEARRAY(byte) val);
169		[id(87), helpstring("method inCurrency")] HRESULT inCurrency([in] CY val);
170		[id(88), helpstring("method outCurrency")] HRESULT outCurrency([out] CY* val);
171		[id(89), helpstring("method inoutCurrency")] HRESULT inoutCurrency([in,out] CY* val);
172		[id(90), helpstring("method inDate")] HRESULT inDate([in] DATE val);
173		[id(91), helpstring("method outDate")] HRESULT outDate([out] DATE* val);
174		[id(92), helpstring("method inoutDate")] HRESULT inoutDate([in,out] DATE* val);
175		[propget, id(93), helpstring("property prpCY")] HRESULT prpCurrency([out, retval] CY* pVal);
176		[propput, id(93), helpstring("property prpCY")] HRESULT prpCurrency([in] CY newVal);
177		[propget, id(94), helpstring("property prpDate")] HRESULT prpDate([out, retval] DATE* pVal);
178		[propput, id(94), helpstring("property prpDate")] HRESULT prpDate([in] DATE newVal);
179		[id(95), helpstring("method inDecimal")] HRESULT inDecimal([in] DECIMAL val);
180		[id(96), helpstring("method outDecimal")] HRESULT outDecimal([out] DECIMAL* val);
181		[id(97), helpstring("method inoutDecimal")] HRESULT inoutDecimal([in,out] DECIMAL* val);
182		[propget, id(98), helpstring("property prpDecimal")] HRESULT prpDecimal([out, retval] DECIMAL* pVal);
183		[propput, id(98), helpstring("property prpDecimal")] HRESULT prpDecimal([in] DECIMAL newVal);
184		[id(99), helpstring("method inSCode")] HRESULT inSCode([in] SCODE val);
185		[id(100), helpstring("method outScode")] HRESULT outScode([out] SCODE* val);
186		[id(101), helpstring("method inoutSCode")] HRESULT inoutSCode([in,out] SCODE* val);
187		[propget, id(102), helpstring("property prpSCode")] HRESULT prpSCode([out, retval] SCODE* pVal);
188		[propput, id(102), helpstring("property prpSCode")] HRESULT prpSCode([in] SCODE newVal);
189		[id(103), helpstring("method inrefLong")] HRESULT inrefLong([in] LONG* val);
190		[id(104), helpstring("method inrefVARIANT")] HRESULT inrefVariant([in] VARIANT* val);
191		[id(105), helpstring("method inrefDecimal")] HRESULT inrefDecimal(DECIMAL* val);
192		[propget, id(106), helpstring("property prpRefLong")] HRESULT prpRefLong([out, retval] long* pVal);
193		[propputref, id(106), helpstring("property prpRefLong")] HRESULT prpRefLong([in] long* newVal);
194		[propget, id(107), helpstring("property prprefVariant")] HRESULT prprefVariant([out, retval] VARIANT* pVal);
195		[propputref, id(107), helpstring("property prprefVariant")] HRESULT prprefVariant([in] VARIANT* newVal);
196		[propget, id(108), helpstring("property prprefDecimal")] HRESULT prprefDecimal([out, retval] DECIMAL* pVal);
197		[propputref, id(108), helpstring("property prprefDecimal")] HRESULT prprefDecimal([in] DECIMAL* newVal);
198		[id(109), helpstring("method optional6")] HRESULT optional6([in,optional] VARIANT* val1,
199			[in,optional] VARIANT * val2, [in,optional] VARIANT* val3, [in,optional] VARIANT* val4);
200		[id(110), helpstring("method optional7")] HRESULT optional7([out,optional] VARIANT* val1,
201			[out,optional] VARIANT * val2, [out,optional] VARIANT* val3, [out,optional] VARIANT* val4);
202
203		[propget, id(111), helpstring("property prpMultiArg1")] HRESULT prpMultiArg1([in,out,optional] VARIANT* val1, [in,out,optional] VARIANT* val2, [out, optional, retval] VARIANT* pVal);
204		[propput, id(111), helpstring("property prpMultiArg1")] HRESULT prpMultiArg1([in,out,optional] VARIANT* val1, [in,out,optional] VARIANT* val2, [in] VARIANT* newVal);
205		[propget, id(112), helpstring("property prpMultiArg2")] HRESULT prpMultiArg2([in] VARIANT val1, [out, retval] VARIANT* pVal);
206		[propput, id(112), helpstring("property prpMultiArg2")] HRESULT prpMultiArg2([in] VARIANT val1, [in] VARIANT newVal);
207		[id(113), helpstring("method prpMultiArg2GetValues")] HRESULT prpMultiArg2GetValues([out] VARIANT* val1, [out] VARIANT* valProperty);
208		[propget, id(114), helpstring("property prpMultiArg3")] HRESULT prpMultiArg3([in,out] LONG* val1, [out, retval] LONG* pVal);
209		[propput, id(114), helpstring("property prpMultiArg3")] HRESULT prpMultiArg3([in,out] LONG* val1, [in] LONG newVal);
210		[id(115), helpstring("method inUnknown")] HRESULT inUnknown([in] IUnknown* val);
211		[id(116), helpstring("method outUnknown")] HRESULT outUnknown([out] IUnknown** val);
212		[id(117), helpstring("method inoutUnknown")] HRESULT inoutUnknown([in,out] IUnknown** val);
213		[propget, id(118), helpstring("property prpUnknown")] HRESULT prpUnknown([out, retval] IUnknown** pVal);
214		[propput, id(118), helpstring("property prpUnknown")] HRESULT prpUnknown([in] IUnknown* newVal);
215};
216
217[
218	object,
219	uuid(96E6105A-A436-48b3-BFE7-C9302D927CCF),
220	dual,
221	helpstring("IFoo Interface"),
222	pointer_default(unique)
223]
224interface IFoo : IUnknown
225{
226	HRESULT Foo([in] IUnknown* val);
227};
228
229[
230	uuid(BFE10EB1-8584-11D4-8335-005004526AB4),
231	version(1.0),
232	helpstring("AxTestComponents 1.0 Type Library")
233]
234library AXTESTCOMPONENTSLib
235{
236	importlib("stdole32.tlb");
237	importlib("stdole2.tlb");
238
239	[
240		uuid(BFE10EBE-8584-11D4-8335-005004526AB4),
241		helpstring("Basic Class")
242	]
243	coclass Basic
244	{
245		[default] interface IBasic;
246	};
247
248	[
249		uuid(14DE9D5D-EB9D-4091-8E1B-A1B1672D8C1D),
250		helpstring("Foo Class")
251	]
252	coclass Foo
253	{
254		[default] interface IFoo;
255	};
256
257};
258