/**************************************************************
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 *************************************************************/


// AxTestComponents.idl : IDL source for AxTestComponents.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (AxTestComponents.tlb) and marshalling code.
// next id 86
import "oaidl.idl";
import "ocidl.idl";
	[
		object,
		uuid(BFE10EBD-8584-11D4-8335-005004526AB4),
		dual,
		helpstring("IBasic Interface"),
		pointer_default(unique)
	]
	interface IBasic : IDispatch
	{
		[id(82), helpstring("method inBool")] HRESULT inBool([in]VARIANT_BOOL val);
		[id(1), helpstring("method inByte")] HRESULT inByte([in] unsigned char val);
		[id(2), helpstring("method inShort")] HRESULT inShort([in] short val);
		[id(3), helpstring("method inLong")] HRESULT inLong([in] long val);
		[id(4), helpstring("method inString")] HRESULT inString([in] BSTR val);
		[id(5), helpstring("method inFloat")] HRESULT inFloat([in] float val);
		[id(6), helpstring("method inDouble")] HRESULT inDouble([in] double val);
		[id(7), helpstring("method inVariant")] HRESULT inVariant([in] VARIANT val);
		[id(8), helpstring("method inArray")] HRESULT inArray([in] SAFEARRAY(VARIANT) val);
		[id(9), helpstring("method inObject")] HRESULT inObject([in] IDispatch* val);
		[id(83), helpstring("method inoutBool")] HRESULT inoutBool([in,out]VARIANT_BOOL* val);
		[id(12), helpstring("method inoutByte")] HRESULT inoutByte([in,out] unsigned char* val);
		[id(13), helpstring("method inoutShort")] HRESULT inoutShort([in,out] short* val);
		[id(14), helpstring("method inoutLong")] HRESULT inoutLong([in,out] long * val);
		[id(15), helpstring("method inoutString")] HRESULT inoutString([in, out] BSTR* val);
		[id(16), helpstring("method inoutFloat")] HRESULT inoutFloat([in,out] float * val);
		[id(17), helpstring("method inoutDouble")] HRESULT inoutDouble([in,out] double * val);
		[id(18), helpstring("method inoutVariant")] HRESULT inoutVariant([in,out] VARIANT * val);
		[id(19), helpstring("method inoutArray")] HRESULT inoutArray([in,out] SAFEARRAY(VARIANT) * val);
		[id(20), helpstring("method inoutObject")] HRESULT inoutObject([in,out] IDispatch** val);
		[id(84), helpstring("method outBool")] HRESULT outBool([out] VARIANT_BOOL* val);
		[id(23), helpstring("method outByte")] HRESULT outByte([out] unsigned char* val);
		[id(24), helpstring("method outShort")] HRESULT outShort([out] short* val);
		[id(25), helpstring("method outLong")] HRESULT outLong([out] long* val);
		[id(26), helpstring("method outString")] HRESULT outString([out] BSTR* val);
		[id(27), helpstring("method outFloat")] HRESULT outFloat([out] float* val);
		[id(28), helpstring("method outDouble")] HRESULT outDouble([out] double* val);
		[id(29), helpstring("method outVariant")] HRESULT outVariant([out] VARIANT* val);
		[id(30), helpstring("method outArray")] HRESULT outArray([out] SAFEARRAY(VARIANT) * val);
		[id(31), helpstring("method outObject")] HRESULT outObject([out] IDispatch** val);
		[propget, id(85), helpstring("property prpBool")] HRESULT prpBool([out, retval] VARIANT_BOOL *pVal);
		[propput, id(85), helpstring("property prpBool")] HRESULT prpBool([in] VARIANT_BOOL newVal);
		[propget, id(34), helpstring("property prpByte")] HRESULT prpByte([out, retval] unsigned char *pVal);
		[propput, id(34), helpstring("property prpByte")] HRESULT prpByte([in] unsigned char newVal);
		[propget, id(35), helpstring("property prpShort")] HRESULT prpShort([out, retval] short *pVal);
		[propput, id(35), helpstring("property prpShort")] HRESULT prpShort([in] short newVal);
		[propget, id(36), helpstring("property prpLong")] HRESULT prpLong([out, retval] long *pVal);
		[propput, id(36), helpstring("property prpLong")] HRESULT prpLong([in] long newVal);
		[propget, id(37), helpstring("property prpString")] HRESULT prpString([out, retval] BSTR *pVal);
		[propput, id(37), helpstring("property prpString")] HRESULT prpString([in] BSTR newVal);
		[propget, id(38), helpstring("property prpFloat")] HRESULT prpFloat([out, retval] float *pVal);
		[propput, id(38), helpstring("property prpFloat")] HRESULT prpFloat([in] float newVal);
		[propget, id(39), helpstring("property prpDouble")] HRESULT prpDouble([out, retval] double *pVal);
		[propput, id(39), helpstring("property prpDouble")] HRESULT prpDouble([in] double newVal);
		[propget, id(40), helpstring("property prpVariant")] HRESULT prpVariant([out, retval] VARIANT *pVal);
		[propput, id(40), helpstring("property prpVariant")] HRESULT prpVariant([in] VARIANT newVal);
		[propget, id(41), helpstring("property prpArray")] HRESULT prpArray([out, retval]SAFEARRAY(VARIANT) *pVal);
		[propput, id(41), helpstring("property prpArray")] HRESULT prpArray([in] SAFEARRAY(VARIANT) newVal);
		[propget, id(42), helpstring("property prpObject")] HRESULT prpObject([out, retval] IDispatch* *pVal);
		[propput, id(42), helpstring("property prpObject")] HRESULT prpObject([in] IDispatch* newVal);
		[id(43), helpstring("method mixed1")] HRESULT mixed1(
											  [in, out] unsigned char* aChar,
											  [in, out] float *aFloat,
											  [in,out] VARIANT* inoutVar);
		[id(44), helpstring("method inSequenceLong")] HRESULT inSequenceLong([in] SAFEARRAY(long)  ar);
		[id(45), helpstring("method inSequenceByte")] HRESULT inSequenceByte([in] SAFEARRAY(byte) ar);
		[id(46), helpstring("method inSequenceShort")] HRESULT inSequenceShort([in] SAFEARRAY(short) ar);
		[id(47), helpstring("method inSequenceString")] HRESULT inSequenceString([in] SAFEARRAY( BSTR) ar);
		[id(48), helpstring("method inSequenceFloat")] HRESULT inSequenceFloat([in] SAFEARRAY(float) ar);
		[id(49), helpstring("method inSequenceDouble")] HRESULT inSequenceDouble([in] SAFEARRAY(double) ar);
		[id(50), helpstring("method inSequenceObject")] HRESULT inSequenceObject([in] SAFEARRAY(IDispatch*) ar);
		[id(51), helpstring("method outSequenceByte")] HRESULT outSequenceByte([out] SAFEARRAY(unsigned char)* val);
		[id(52), helpstring("method outSequenceShort")] HRESULT outSequenceShort([out] SAFEARRAY(short)* val);
		[id(53), helpstring("method outSequenceLong")] HRESULT outSequenceLong([out] SAFEARRAY(long )*val);
		[id(54), helpstring("method outSequenceString")] HRESULT outSequenceString([out] SAFEARRAY(BSTR)* val);
		[id(55), helpstring("method outSequenceFloat")] HRESULT outSequenceFloat([out] SAFEARRAY(float)* val);
		[id(56), helpstring("method outSequenceDouble")] HRESULT outSequenceDouble([out] SAFEARRAY(double)* val);
		[id(57), helpstring("method outSequenceObject")] HRESULT outSequenceObject([out] SAFEARRAY(IDispatch*)* val);
		[id(58), helpstring("method inoutSequenceByte")] HRESULT inoutSequenceByte([in,out] SAFEARRAY(unsigned char)* val);
		[id(59), helpstring("method inoutSequenceShort")] HRESULT inoutSequenceShort([in,out] SAFEARRAY(short)* val);
		[id(60), helpstring("method inoutSequenceLong")] HRESULT inoutSequenceLong([in,out] SAFEARRAY( long)*val);
		[id(61), helpstring("method inoutSequenceString")] HRESULT inoutSequenceString([in,out] SAFEARRAY(BSTR)* val);
		[id(62), helpstring("method inoutSequenceFloat")] HRESULT inoutSequenceFloat([in,out] SAFEARRAY(float)* val);
		[id(63), helpstring("method inoutSequenceDouble")] HRESULT inoutSequenceDouble([in,out] SAFEARRAY(double)* val);
		[id(64), helpstring("method inoutSequenceObject")] HRESULT inoutSequenceObject([in,out] SAFEARRAY(IDispatch*)* val);
		[id(65), helpstring("method inMulDimArrayLong")] HRESULT inMulDimArrayLong([in] SAFEARRAY(long) val );
		[id(66), helpstring("method inMulDimArrayVariant")] HRESULT inMulDimArrayVariant([in] SAFEARRAY(VARIANT) val);
		[id(67), helpstring("method inMulDimArrayLong2")] HRESULT inMulDimArrayLong2([in] SAFEARRAY(long) val);
		[id(68), helpstring("method inMulDimArrayVariant2")] HRESULT inMulDimArrayVariant2([in] SAFEARRAY(VARIANT) val);
		[id(69), helpstring("method inMulDimArrayByte")] HRESULT inMulDimArrayByte([in] SAFEARRAY(unsigned char) val);
		[id(70), helpstring("method inMulDimArrayByte2")] HRESULT inMulDimArrayByte2([in] SAFEARRAY(unsigned char) val);
		[id(71), helpstring("method outMore")] HRESULT outMore([out]long* val1, [out]long* val2);

		[id(72), helpstring("method optional1")]
		HRESULT optional1([in] long val1, [in, optional] VARIANT* val2);
		[id(73), helpstring("method optional2")]
		HRESULT optional2([out] long* val1, [out, optional] VARIANT* val2);
		[id(74), helpstring("method optional3")]
		HRESULT optional3([in, optional] VARIANT* val1, [in, optional] VARIANT* val2);
		[id(75), helpstring("method optional4")]
		HRESULT optional4([in, out, optional] VARIANT* val1, [in, out, optional] VARIANT* val2);
		[id(76), helpstring("method optional5")]
		HRESULT optional5([out, optional] VARIANT* val1, [out, optional] VARIANT* val2);
		//midl creates for val4 a BSTR "4" as default value in the TLB. The midl complains
		//but the error message seems to be not for this case.
		//in defaultvalue2 val4 has an VT_I4 in the TLB. This must be a bug!
		[id(77), helpstring("method defaultvalue1")]
		HRESULT defaultvalue1([in, defaultvalue(1)] long val1,
							  [in, defaultvalue(2)] double* val2,
							 // [in, defaultvalue(3)] VARIANT val3, //ok
							  [in, defaultvalue(4)] VARIANT* val4);

		// bug im midl: when val3 and val4 are pointers then the generated header creates
		// for all params default values:
		//HRESULT STDMETHODCALLTYPE defaultvalue2(
		//            /* [defaultvalue][in] */ long *val1 = 10,
        //    /* [defaultvalue][in] */ double *val2 = 3.14,
        //    /* [defaultvalue][in] */ VARIANT *val3 = 10,
        //    /* [defaultvalue][in] */ VARIANT *val4 = 100) = 0;
		// And that does not compile.
		//Therefore we must not include the midl generated header, instead use
		// #import to create the interface header
		[id(78), helpstring("method defaultvalue2")]
		HRESULT defaultvalue2([in, out, defaultvalue(1)]long* val1,
							  [in, out, defaultvalue(2)] double* val2,
							 // [in, out, defaultvalue(3)] VARIANT *val3,
							  [in, out, defaultvalue(4)] VARIANT *val4);

		[id(79), helpstring("method varargfunc1"),vararg]
		HRESULT varargfunc1([in] long val1, [in] SAFEARRAY(VARIANT) val2);
		[id(80), helpstring("method varargfunc2")]
		HRESULT varargfunc2([out] long* val1, [out] SAFEARRAY(VARIANT)* val2);


		[id(86), helpstring("method inSequenceByteDim2")] HRESULT inSequenceByteDim2([in] SAFEARRAY(byte) val);
		[id(87), helpstring("method inCurrency")] HRESULT inCurrency([in] CY val);
		[id(88), helpstring("method outCurrency")] HRESULT outCurrency([out] CY* val);
		[id(89), helpstring("method inoutCurrency")] HRESULT inoutCurrency([in,out] CY* val);
		[id(90), helpstring("method inDate")] HRESULT inDate([in] DATE val);
		[id(91), helpstring("method outDate")] HRESULT outDate([out] DATE* val);
		[id(92), helpstring("method inoutDate")] HRESULT inoutDate([in,out] DATE* val);
		[propget, id(93), helpstring("property prpCY")] HRESULT prpCurrency([out, retval] CY* pVal);
		[propput, id(93), helpstring("property prpCY")] HRESULT prpCurrency([in] CY newVal);
		[propget, id(94), helpstring("property prpDate")] HRESULT prpDate([out, retval] DATE* pVal);
		[propput, id(94), helpstring("property prpDate")] HRESULT prpDate([in] DATE newVal);
		[id(95), helpstring("method inDecimal")] HRESULT inDecimal([in] DECIMAL val);
		[id(96), helpstring("method outDecimal")] HRESULT outDecimal([out] DECIMAL* val);
		[id(97), helpstring("method inoutDecimal")] HRESULT inoutDecimal([in,out] DECIMAL* val);
		[propget, id(98), helpstring("property prpDecimal")] HRESULT prpDecimal([out, retval] DECIMAL* pVal);
		[propput, id(98), helpstring("property prpDecimal")] HRESULT prpDecimal([in] DECIMAL newVal);
		[id(99), helpstring("method inSCode")] HRESULT inSCode([in] SCODE val);
		[id(100), helpstring("method outScode")] HRESULT outScode([out] SCODE* val);
		[id(101), helpstring("method inoutSCode")] HRESULT inoutSCode([in,out] SCODE* val);
		[propget, id(102), helpstring("property prpSCode")] HRESULT prpSCode([out, retval] SCODE* pVal);
		[propput, id(102), helpstring("property prpSCode")] HRESULT prpSCode([in] SCODE newVal);
		[id(103), helpstring("method inrefLong")] HRESULT inrefLong([in] LONG* val);
		[id(104), helpstring("method inrefVARIANT")] HRESULT inrefVariant([in] VARIANT* val);
		[id(105), helpstring("method inrefDecimal")] HRESULT inrefDecimal(DECIMAL* val);
		[propget, id(106), helpstring("property prpRefLong")] HRESULT prpRefLong([out, retval] long* pVal);
		[propputref, id(106), helpstring("property prpRefLong")] HRESULT prpRefLong([in] long* newVal);
		[propget, id(107), helpstring("property prprefVariant")] HRESULT prprefVariant([out, retval] VARIANT* pVal);
		[propputref, id(107), helpstring("property prprefVariant")] HRESULT prprefVariant([in] VARIANT* newVal);
		[propget, id(108), helpstring("property prprefDecimal")] HRESULT prprefDecimal([out, retval] DECIMAL* pVal);
		[propputref, id(108), helpstring("property prprefDecimal")] HRESULT prprefDecimal([in] DECIMAL* newVal);
		[id(109), helpstring("method optional6")] HRESULT optional6([in,optional] VARIANT* val1,
			[in,optional] VARIANT * val2, [in,optional] VARIANT* val3, [in,optional] VARIANT* val4);
		[id(110), helpstring("method optional7")] HRESULT optional7([out,optional] VARIANT* val1,
			[out,optional] VARIANT * val2, [out,optional] VARIANT* val3, [out,optional] VARIANT* val4);

		[propget, id(111), helpstring("property prpMultiArg1")] HRESULT prpMultiArg1([in,out,optional] VARIANT* val1, [in,out,optional] VARIANT* val2, [out, optional, retval] VARIANT* pVal);
		[propput, id(111), helpstring("property prpMultiArg1")] HRESULT prpMultiArg1([in,out,optional] VARIANT* val1, [in,out,optional] VARIANT* val2, [in] VARIANT* newVal);
		[propget, id(112), helpstring("property prpMultiArg2")] HRESULT prpMultiArg2([in] VARIANT val1, [out, retval] VARIANT* pVal);
		[propput, id(112), helpstring("property prpMultiArg2")] HRESULT prpMultiArg2([in] VARIANT val1, [in] VARIANT newVal);
		[id(113), helpstring("method prpMultiArg2GetValues")] HRESULT prpMultiArg2GetValues([out] VARIANT* val1, [out] VARIANT* valProperty);
		[propget, id(114), helpstring("property prpMultiArg3")] HRESULT prpMultiArg3([in,out] LONG* val1, [out, retval] LONG* pVal);
		[propput, id(114), helpstring("property prpMultiArg3")] HRESULT prpMultiArg3([in,out] LONG* val1, [in] LONG newVal);
		[id(115), helpstring("method inUnknown")] HRESULT inUnknown([in] IUnknown* val);
		[id(116), helpstring("method outUnknown")] HRESULT outUnknown([out] IUnknown** val);
		[id(117), helpstring("method inoutUnknown")] HRESULT inoutUnknown([in,out] IUnknown** val);
		[propget, id(118), helpstring("property prpUnknown")] HRESULT prpUnknown([out, retval] IUnknown** pVal);
		[propput, id(118), helpstring("property prpUnknown")] HRESULT prpUnknown([in] IUnknown* newVal);
};

[
	object,
	uuid(96E6105A-A436-48b3-BFE7-C9302D927CCF),
	dual,
	helpstring("IFoo Interface"),
	pointer_default(unique)
]
interface IFoo : IUnknown
{
	HRESULT Foo([in] IUnknown* val);
};

[
	uuid(BFE10EB1-8584-11D4-8335-005004526AB4),
	version(1.0),
	helpstring("AxTestComponents 1.0 Type Library")
]
library AXTESTCOMPONENTSLib
{
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");

	[
		uuid(BFE10EBE-8584-11D4-8335-005004526AB4),
		helpstring("Basic Class")
	]
	coclass Basic
	{
		[default] interface IBasic;
	};

	[
		uuid(14DE9D5D-EB9D-4091-8E1B-A1B1672D8C1D),
		helpstring("Foo Class")
	]
	coclass Foo
	{
		[default] interface IFoo;
	};

};
