1*b1cdbd2cSJim Jagielski/**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski// XCallback_Impl.idl : IDL source for XCallback_Impl.dll
24*b1cdbd2cSJim Jagielski//
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski// This file will be processed by the MIDL tool to
27*b1cdbd2cSJim Jagielski// produce the type library (XCallback_Impl.tlb) and marshalling code.
28*b1cdbd2cSJim Jagielski
29*b1cdbd2cSJim Jagielskiimport "oaidl.idl";
30*b1cdbd2cSJim Jagielskiimport "ocidl.idl";
31*b1cdbd2cSJim Jagielski	[
32*b1cdbd2cSJim Jagielski		object,
33*b1cdbd2cSJim Jagielski		uuid(180FF55F-6F5C-11D4-8330-005004526AB4),
34*b1cdbd2cSJim Jagielski		dual,
35*b1cdbd2cSJim Jagielski		helpstring("ICallback Interface"),
36*b1cdbd2cSJim Jagielski		pointer_default(unique)
37*b1cdbd2cSJim Jagielski	]
38*b1cdbd2cSJim Jagielski	interface ICallback : IDispatch
39*b1cdbd2cSJim Jagielski	{
40*b1cdbd2cSJim Jagielski		[id(1), helpstring("method func1")] HRESULT func1();
41*b1cdbd2cSJim Jagielski		[id(2), helpstring("method returnInterface")] HRESULT returnInterface([out, retval] IDispatch** ppdisp);
42*b1cdbd2cSJim Jagielski		[id(3), helpstring("method outInterface")] HRESULT outInterface([out] IDispatch** ppdisp);
43*b1cdbd2cSJim Jagielski		[id(4), helpstring("method outValuesMixed")] HRESULT outValuesMixed([in] long val, [out] long* pval, [in] BSTR string);
44*b1cdbd2cSJim Jagielski		[id(5), helpstring("method outValuesAll")] HRESULT outValuesAll([out] IDispatch** ppdisp, [out] IDispatch** ppSimpleStruct, [out] long* aSimpleEnum,
45*b1cdbd2cSJim Jagielski		[out] SAFEARRAY( VARIANT)* outSeq,
46*b1cdbd2cSJim Jagielski		[out] VARIANT* varAny,
47*b1cdbd2cSJim Jagielski		[out] VARIANT_BOOL * aBool,
48*b1cdbd2cSJim Jagielski		   [out] short* aChar,
49*b1cdbd2cSJim Jagielski		    [out] BSTR* aString ,
50*b1cdbd2cSJim Jagielski			[out] float* aFloat,
51*b1cdbd2cSJim Jagielski			[out] double* aDouble,
52*b1cdbd2cSJim Jagielski			[out] unsigned char*  aByte,
53*b1cdbd2cSJim Jagielski			[out] short* aShort,
54*b1cdbd2cSJim Jagielski			[out]long* aLong);
55*b1cdbd2cSJim Jagielski//		);
56*b1cdbd2cSJim Jagielski		[id(6), helpstring("method outStruct")] HRESULT outStruct([out] IDispatch** outStruct);
57*b1cdbd2cSJim Jagielski		[id(7), helpstring("method outEnum")] HRESULT outEnum([out] long* outEnum);
58*b1cdbd2cSJim Jagielski		[id(8), helpstring("method outSeqAny")] HRESULT outSeqAny([out] SAFEARRAY( VARIANT)* outSeq);
59*b1cdbd2cSJim Jagielski		[id(9), helpstring("method outAny")] HRESULT outAny([out] VARIANT* outAny);
60*b1cdbd2cSJim Jagielski		[id(10), helpstring("method outBool")] HRESULT outBool([out]VARIANT_BOOL* outBool);
61*b1cdbd2cSJim Jagielski		[id(11), helpstring("method outChar")] HRESULT outChar([out] short* outChar);
62*b1cdbd2cSJim Jagielski		[id(12), helpstring("method outString")] HRESULT outString([out] BSTR * outString);
63*b1cdbd2cSJim Jagielski		[id(13), helpstring("method outFloat")] HRESULT outFloat([out] float* outFloat);
64*b1cdbd2cSJim Jagielski		[id(14), helpstring("method outDouble")] HRESULT outDouble([out] double* outDouble);
65*b1cdbd2cSJim Jagielski		[id(16), helpstring("method outShort")] HRESULT outShort([out] short *outShort);
66*b1cdbd2cSJim Jagielski		[id(17), helpstring("method outLong")] HRESULT outLong([out] long* outLong);
67*b1cdbd2cSJim Jagielski		[id(20), helpstring("method outByte")] HRESULT outByte([out] unsigned char* outByte);
68*b1cdbd2cSJim Jagielski		[id(21), helpstring("method inoutInterface")] HRESULT inoutInterface([in,out] IDispatch** ppdisp);
69*b1cdbd2cSJim Jagielski		[id(22), helpstring("method inoutStruct")] HRESULT inoutStruct([in,out] IDispatch** inoutVal);
70*b1cdbd2cSJim Jagielski		[id(23), helpstring("method inoutEnum")] HRESULT inoutEnum([in,out] long * inoutVal);
71*b1cdbd2cSJim Jagielski		[id(24), helpstring("method inoutSeqAny")] HRESULT inoutSeqAny([in,out] SAFEARRAY(VARIANT)* pArray);
72*b1cdbd2cSJim Jagielski		[id(25), helpstring("method inoutAny")] HRESULT inoutAny([in,out] VARIANT* inoutVal);
73*b1cdbd2cSJim Jagielski		[id(26), helpstring("method inoutBool")] HRESULT inoutBool([in,out] VARIANT_BOOL * inoutVal);
74*b1cdbd2cSJim Jagielski		[id(27), helpstring("method inoutChar")] HRESULT inoutChar([in,out] short* inoutVal);
75*b1cdbd2cSJim Jagielski		[id(28), helpstring("method inoutString")] HRESULT inoutString([in,out] BSTR *inoutVal);
76*b1cdbd2cSJim Jagielski		[id(29), helpstring("method inoutFloat")] HRESULT inoutFloat([in,out] float* inoutVal);
77*b1cdbd2cSJim Jagielski		[id(30), helpstring("method inoutDouble")] HRESULT inoutDouble([in,out] double* inoutVal);
78*b1cdbd2cSJim Jagielski		[id(31), helpstring("method inoutByte")] HRESULT inoutByte([in,out] unsigned char* inoutVal);
79*b1cdbd2cSJim Jagielski		[id(32), helpstring("method inoutShort")] HRESULT inoutShort([in,out] short* inoutVal);
80*b1cdbd2cSJim Jagielski		[id(33), helpstring("method inoutLong")] HRESULT inoutLong([in,out] long* inoutVal);
81*b1cdbd2cSJim Jagielski		[id(34), helpstring("method inoutValueAll")] HRESULT inoutValuesAll(
82*b1cdbd2cSJim Jagielski						 [in,out] IDispatch** aXSimple,
83*b1cdbd2cSJim Jagielski						 [in,out] IDispatch** aStruct,
84*b1cdbd2cSJim Jagielski						 [in,out] long* aEnum,
85*b1cdbd2cSJim Jagielski						 [in,out]  SAFEARRAY( VARIANT)* aSeq,
86*b1cdbd2cSJim Jagielski						 [in,out] VARIANT* aAny,
87*b1cdbd2cSJim Jagielski						 [in,out] VARIANT_BOOL* aBool,
88*b1cdbd2cSJim Jagielski						 [in,out] short* aChar,
89*b1cdbd2cSJim Jagielski						 [in,out] BSTR* aString,
90*b1cdbd2cSJim Jagielski						 [in,out] float* aFloat,
91*b1cdbd2cSJim Jagielski						 [in,out] double* aDouble,
92*b1cdbd2cSJim Jagielski						 [in,out] unsigned char* aByte,
93*b1cdbd2cSJim Jagielski						 [in,out] short* aShort,
94*b1cdbd2cSJim Jagielski						 [in,out] long* aLong);
95*b1cdbd2cSJim Jagielski		[id(35), helpstring("method inValues")] HRESULT inValues([in]short aChar, [in] long aLong, [in] BSTR aString);
96*b1cdbd2cSJim Jagielski		[id(36), helpstring("method outSeqByte")] HRESULT outSeqByte([out] SAFEARRAY(unsigned char)* outVal);
97*b1cdbd2cSJim Jagielski		[id(37), helpstring("method inSeqByte")] HRESULT inSeqByte([in] SAFEARRAY(VARIANT) val);
98*b1cdbd2cSJim Jagielski		[id(38), helpstring("method inSeqXEventListener")] HRESULT inSeqXEventListener([in] SAFEARRAY(VARIANT) listener,
99*b1cdbd2cSJim Jagielski																		[in] SAFEARRAY(VARIANT) event);
100*b1cdbd2cSJim Jagielski
101*b1cdbd2cSJim Jagielski	};
102*b1cdbd2cSJim Jagielski	[
103*b1cdbd2cSJim Jagielski		object,
104*b1cdbd2cSJim Jagielski		uuid(180FF564-6F5C-11D4-8330-005004526AB4),
105*b1cdbd2cSJim Jagielski		dual,
106*b1cdbd2cSJim Jagielski		helpstring("ISimple Interface"),
107*b1cdbd2cSJim Jagielski		pointer_default(unique)
108*b1cdbd2cSJim Jagielski	]
109*b1cdbd2cSJim Jagielski	interface ISimple : IDispatch
110*b1cdbd2cSJim Jagielski	{
111*b1cdbd2cSJim Jagielski		[id(1), helpstring("method func")] HRESULT func( [in] BSTR message);
112*b1cdbd2cSJim Jagielski		[id(2), helpstring("method func2")] HRESULT func2([in] BSTR message);
113*b1cdbd2cSJim Jagielski		[id(3), helpstring("method func3")] HRESULT func3([in] BSTR message);
114*b1cdbd2cSJim Jagielski		[propget, id(4), helpstring("property _implementedInterfaces")] HRESULT _implementedInterfaces([out, retval] SAFEARRAY(BSTR) *pVal);
115*b1cdbd2cSJim Jagielski	};
116*b1cdbd2cSJim Jagielski
117*b1cdbd2cSJim Jagielski
118*b1cdbd2cSJim Jagielski
119*b1cdbd2cSJim Jagielski[
120*b1cdbd2cSJim Jagielski	uuid(180FF553-6F5C-11D4-8330-005004526AB4),
121*b1cdbd2cSJim Jagielski	version(1.0),
122*b1cdbd2cSJim Jagielski	helpstring("XCallback_Impl 1.0 Type Library")
123*b1cdbd2cSJim Jagielski]
124*b1cdbd2cSJim Jagielskilibrary XCALLBACK_IMPLLib
125*b1cdbd2cSJim Jagielski{
126*b1cdbd2cSJim Jagielski	importlib("stdole32.tlb");
127*b1cdbd2cSJim Jagielski	importlib("stdole2.tlb");
128*b1cdbd2cSJim Jagielski
129*b1cdbd2cSJim Jagielski	[
130*b1cdbd2cSJim Jagielski		uuid(180FF560-6F5C-11D4-8330-005004526AB4),
131*b1cdbd2cSJim Jagielski		helpstring("Callback Class")
132*b1cdbd2cSJim Jagielski	]
133*b1cdbd2cSJim Jagielski	coclass Callback
134*b1cdbd2cSJim Jagielski	{
135*b1cdbd2cSJim Jagielski		[default] interface ICallback;
136*b1cdbd2cSJim Jagielski	};
137*b1cdbd2cSJim Jagielski	[
138*b1cdbd2cSJim Jagielski		uuid(180FF565-6F5C-11D4-8330-005004526AB4),
139*b1cdbd2cSJim Jagielski		helpstring("Simple Class")
140*b1cdbd2cSJim Jagielski	]
141*b1cdbd2cSJim Jagielski	coclass Simple
142*b1cdbd2cSJim Jagielski	{
143*b1cdbd2cSJim Jagielski		[default] interface ISimple;
144*b1cdbd2cSJim Jagielski	};
145*b1cdbd2cSJim Jagielski};
146*b1cdbd2cSJim Jagielski
147*b1cdbd2cSJim Jagielski
148