xref: /AOO41X/main/framework/inc/macros/xinterface.hxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir #ifndef __FRAMEWORK_MACROS_XINTERFACE_HXX_
29*cdf0e10cSrcweir #define __FRAMEWORK_MACROS_XINTERFACE_HXX_
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir //_________________________________________________________________________________________________________________
32*cdf0e10cSrcweir //	my own includes
33*cdf0e10cSrcweir //_________________________________________________________________________________________________________________
34*cdf0e10cSrcweir 
35*cdf0e10cSrcweir //_________________________________________________________________________________________________________________
36*cdf0e10cSrcweir //	interface includes
37*cdf0e10cSrcweir //_________________________________________________________________________________________________________________
38*cdf0e10cSrcweir 
39*cdf0e10cSrcweir #include <com/sun/star/uno/RuntimeException.hpp>
40*cdf0e10cSrcweir 
41*cdf0e10cSrcweir //_________________________________________________________________________________________________________________
42*cdf0e10cSrcweir //	other includes
43*cdf0e10cSrcweir //_________________________________________________________________________________________________________________
44*cdf0e10cSrcweir #include <com/sun/star/uno/Any.hxx>
45*cdf0e10cSrcweir #include <com/sun/star/uno/Reference.hxx>
46*cdf0e10cSrcweir #include <com/sun/star/uno/Type.hxx>
47*cdf0e10cSrcweir #include <cppuhelper/queryinterface.hxx>
48*cdf0e10cSrcweir #include <rtl/ustring.hxx>
49*cdf0e10cSrcweir 
50*cdf0e10cSrcweir //_________________________________________________________________________________________________________________
51*cdf0e10cSrcweir //	namespace
52*cdf0e10cSrcweir //_________________________________________________________________________________________________________________
53*cdf0e10cSrcweir 
54*cdf0e10cSrcweir namespace framework{
55*cdf0e10cSrcweir 
56*cdf0e10cSrcweir /*_________________________________________________________________________________________________________________
57*cdf0e10cSrcweir 
58*cdf0e10cSrcweir 	macros for declaration and definition of XInterface
59*cdf0e10cSrcweir 	Please use follow public macros only!
60*cdf0e10cSrcweir 
61*cdf0e10cSrcweir 	1)	DEFINE_XINTERFACE																=> use it in header to declare XInterface and his methods
62*cdf0e10cSrcweir 	2)	DIRECT_INTERFACE( INTERFACE )													=> use it as parameter INTERFACEx at 4) if interface not ambigous
63*cdf0e10cSrcweir 	3)	DERIVED_INTERFACE( BASEINTERFACE, DERIVEDINTERFACE )							=> use it as parameter INTERFACEx at 4) if interface can be ambigous
64*cdf0e10cSrcweir 	4)	DECLARE_XINTERFACE_0( CLASS, BASECLASS )										=> use it to define implementation of XInterface for 0 additional interface to baseclass
65*cdf0e10cSrcweir 		DECLARE_XINTERFACE_1( CLASS, BASECLASS, INTERFACE1 )                            => use it to define implementation of XInterface for 1 additional interface to baseclass
66*cdf0e10cSrcweir 		...
67*cdf0e10cSrcweir 		DECLARE_XINTERFACE_16( CLASS, BASECLASS, INTERFACE1, ... , INTERFACE16 )
68*cdf0e10cSrcweir 
69*cdf0e10cSrcweir _________________________________________________________________________________________________________________*/
70*cdf0e10cSrcweir 
71*cdf0e10cSrcweir //*****************************************************************************************************************
72*cdf0e10cSrcweir //	private
73*cdf0e10cSrcweir //	implementation of	XInterface::aquire()
74*cdf0e10cSrcweir //						XInterface::release()
75*cdf0e10cSrcweir //*****************************************************************************************************************
76*cdf0e10cSrcweir #define	PRIVATE_DEFINE_XINTERFACE_AQUIRE_RELEASE( CLASS, BASECLASS )																						\
77*cdf0e10cSrcweir 	void SAL_CALL CLASS::acquire() throw()																			\
78*cdf0e10cSrcweir 	{																																						\
79*cdf0e10cSrcweir 		/* Don't use mutex in methods of XInterface! */																										\
80*cdf0e10cSrcweir 		BASECLASS::acquire();																																\
81*cdf0e10cSrcweir 	}																																						\
82*cdf0e10cSrcweir 																																							\
83*cdf0e10cSrcweir     void SAL_CALL CLASS::release() throw()																			\
84*cdf0e10cSrcweir 	{																																						\
85*cdf0e10cSrcweir 		/* Don't use mutex in methods of XInterface! */																										\
86*cdf0e10cSrcweir 		BASECLASS::release();																																\
87*cdf0e10cSrcweir 	}
88*cdf0e10cSrcweir 
89*cdf0e10cSrcweir //*****************************************************************************************************************
90*cdf0e10cSrcweir //	private
91*cdf0e10cSrcweir //	implementation of XInterface::queryInterface() without any other interfaces!
92*cdf0e10cSrcweir //*****************************************************************************************************************
93*cdf0e10cSrcweir #define	PRIVATE_DEFINE_XINTERFACE_QUERYINTERFACE_PURE( CLASS, BASECLASS )																					\
94*cdf0e10cSrcweir 	::com::sun::star::uno::Any SAL_CALL CLASS::queryInterface( const ::com::sun::star::uno::Type& aType ) throw( ::com::sun::star::uno::RuntimeException )	\
95*cdf0e10cSrcweir 	{																																						\
96*cdf0e10cSrcweir 		/* Attention: Don't use mutex or guard in this method!!! Is a method of XInterface.	*/																\
97*cdf0e10cSrcweir 		/* I have no own supported interfaces ...											*/																\
98*cdf0e10cSrcweir 		/* ... ask baseclass for interfaces! 												*/																\
99*cdf0e10cSrcweir 		return BASECLASS::queryInterface( aType );																											\
100*cdf0e10cSrcweir 	}
101*cdf0e10cSrcweir 
102*cdf0e10cSrcweir //*****************************************************************************************************************
103*cdf0e10cSrcweir //	private
104*cdf0e10cSrcweir //	implementation of XInterface::queryInterface() with max. 12 other interfaces!
105*cdf0e10cSrcweir //*****************************************************************************************************************
106*cdf0e10cSrcweir #define	PRIVATE_DEFINE_XINTERFACE_QUERYINTERFACE( CLASS, BASECLASS, INTERFACES )																			\
107*cdf0e10cSrcweir 	::com::sun::star::uno::Any SAL_CALL CLASS::queryInterface( const ::com::sun::star::uno::Type& aType ) throw( ::com::sun::star::uno::RuntimeException )	\
108*cdf0e10cSrcweir 	{																																						\
109*cdf0e10cSrcweir 		/* Attention: Don't use mutex or guard in this method!!! Is a method of XInterface.	*/																\
110*cdf0e10cSrcweir 		/* Ask for my own supported interfaces ...											*/																\
111*cdf0e10cSrcweir 		::com::sun::star::uno::Any aReturn	( ::cppu::queryInterface INTERFACES																				\
112*cdf0e10cSrcweir 											);																												\
113*cdf0e10cSrcweir 		/* If searched interface not supported by this class ... */																							\
114*cdf0e10cSrcweir 		if ( aReturn.hasValue() == sal_False )																												\
115*cdf0e10cSrcweir 		{																																					\
116*cdf0e10cSrcweir 			/* ... ask baseclass for interfaces! */																											\
117*cdf0e10cSrcweir 			aReturn = BASECLASS::queryInterface( aType );																									\
118*cdf0e10cSrcweir 		}																																					\
119*cdf0e10cSrcweir 		/* Return result of this search. */																													\
120*cdf0e10cSrcweir 		return aReturn;																																		\
121*cdf0e10cSrcweir 	}
122*cdf0e10cSrcweir 
123*cdf0e10cSrcweir //*****************************************************************************************************************
124*cdf0e10cSrcweir //	private
125*cdf0e10cSrcweir //	implementation of XInterface::queryInterface() with more then 12 other interfaces!
126*cdf0e10cSrcweir //*****************************************************************************************************************
127*cdf0e10cSrcweir #define	PRIVATE_DEFINE_XINTERFACE_QUERYINTERFACE_LARGE( CLASS, BASECLASS, INTERFACES_FIRST, INTERFACES_SECOND )												\
128*cdf0e10cSrcweir 	::com::sun::star::uno::Any SAL_CALL CLASS::queryInterface( const ::com::sun::star::uno::Type& aType ) throw( ::com::sun::star::uno::RuntimeException )	\
129*cdf0e10cSrcweir 	{																																						\
130*cdf0e10cSrcweir 		/* Attention: Don't use mutex or guard in this method!!! Is a method of XInterface.	*/																\
131*cdf0e10cSrcweir 		/* Ask for my own supported interfaces ...											*/																\
132*cdf0e10cSrcweir 		::com::sun::star::uno::Any aReturn	( ::cppu::queryInterface INTERFACES_FIRST																		\
133*cdf0e10cSrcweir 											);																												\
134*cdf0e10cSrcweir 		/* If searched interface not supported by first group ... */																						\
135*cdf0e10cSrcweir 		if ( aReturn.hasValue() == sal_False )																												\
136*cdf0e10cSrcweir 		{																																					\
137*cdf0e10cSrcweir 			/* ... search in second group. (cppuhelper support 12 items only!) */																			\
138*cdf0e10cSrcweir 			aReturn	= ::cppu::queryInterface INTERFACES_SECOND ;																							\
139*cdf0e10cSrcweir 			/* If searched interface not supported by this class ... */																						\
140*cdf0e10cSrcweir 			if ( aReturn.hasValue() == sal_False )																											\
141*cdf0e10cSrcweir 			{																																				\
142*cdf0e10cSrcweir 				/* ... ask baseclass for interfaces! */																										\
143*cdf0e10cSrcweir 				aReturn = BASECLASS::queryInterface( aType );																								\
144*cdf0e10cSrcweir 			}																																				\
145*cdf0e10cSrcweir 		}																																					\
146*cdf0e10cSrcweir 		/* Return result of this search. */																													\
147*cdf0e10cSrcweir 		return aReturn;																																		\
148*cdf0e10cSrcweir 	}
149*cdf0e10cSrcweir 
150*cdf0e10cSrcweir //*****************************************************************************************************************
151*cdf0e10cSrcweir //	private
152*cdf0e10cSrcweir //	complete implementation of XInterface for different use cases
153*cdf0e10cSrcweir //*****************************************************************************************************************
154*cdf0e10cSrcweir #define	PRIVATE_DEFINE_XINTERFACE_PURE( CLASS, BASECLASS )																									\
155*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_AQUIRE_RELEASE( CLASS, BASECLASS )																							\
156*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_QUERYINTERFACE_PURE( CLASS, BASECLASS )
157*cdf0e10cSrcweir 
158*cdf0e10cSrcweir #define	PRIVATE_DEFINE_XINTERFACE( CLASS, BASECLASS, INTERFACES )																							\
159*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_AQUIRE_RELEASE( CLASS, BASECLASS )																							\
160*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_QUERYINTERFACE( CLASS, BASECLASS, INTERFACES )
161*cdf0e10cSrcweir 
162*cdf0e10cSrcweir #define	PRIVATE_DEFINE_XINTERFACE_LARGE( CLASS, BASECLASS, INTERFACES_FIRST, INTERFACES_SECOND )															\
163*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_AQUIRE_RELEASE( CLASS, BASECLASS )																							\
164*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_QUERYINTERFACE_LARGE( CLASS, BASECLASS, INTERFACES_FIRST, INTERFACES_SECOND )
165*cdf0e10cSrcweir 
166*cdf0e10cSrcweir //*****************************************************************************************************************
167*cdf0e10cSrcweir //	private
168*cdf0e10cSrcweir //	help macros to replace INTERFACES in queryInterface() [see before]
169*cdf0e10cSrcweir //*****************************************************************************************************************
170*cdf0e10cSrcweir /*
171*cdf0e10cSrcweir #ifdef ENABLE_SERVICEDEBUG
172*cdf0e10cSrcweir 	#define	PRIVATE_DEFINE_INTERFACE_1( INTERFACE1 )	 \
173*cdf0e10cSrcweir 		static_cast< XSPECIALDEBUGINTERFACE##* >( this ), \
174*cdf0e10cSrcweir 		INTERFACE1
175*cdf0e10cSrcweir #else
176*cdf0e10cSrcweir */
177*cdf0e10cSrcweir 	#define	PRIVATE_DEFINE_INTERFACE_1( INTERFACE1 )																																					\
178*cdf0e10cSrcweir 		INTERFACE1
179*cdf0e10cSrcweir //#endif // #ifdef ENABLE_SERVICEDEBUG
180*cdf0e10cSrcweir 
181*cdf0e10cSrcweir #define	PRIVATE_DEFINE_INTERFACE_2( INTERFACE1, INTERFACE2 )																																			\
182*cdf0e10cSrcweir 	PRIVATE_DEFINE_INTERFACE_1( INTERFACE1 ),																																							\
183*cdf0e10cSrcweir 	INTERFACE2
184*cdf0e10cSrcweir 
185*cdf0e10cSrcweir #define	PRIVATE_DEFINE_INTERFACE_3( INTERFACE1, INTERFACE2, INTERFACE3 )																																\
186*cdf0e10cSrcweir 	PRIVATE_DEFINE_INTERFACE_2( INTERFACE1, INTERFACE2 ),																																				\
187*cdf0e10cSrcweir 	INTERFACE3
188*cdf0e10cSrcweir 
189*cdf0e10cSrcweir #define	PRIVATE_DEFINE_INTERFACE_4( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4 )																													\
190*cdf0e10cSrcweir 	PRIVATE_DEFINE_INTERFACE_3( INTERFACE1, INTERFACE2, INTERFACE3 ),																																	\
191*cdf0e10cSrcweir 	INTERFACE4
192*cdf0e10cSrcweir 
193*cdf0e10cSrcweir #define	PRIVATE_DEFINE_INTERFACE_5( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5 )																										\
194*cdf0e10cSrcweir 	PRIVATE_DEFINE_INTERFACE_4( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4 ),																														\
195*cdf0e10cSrcweir 	INTERFACE5
196*cdf0e10cSrcweir 
197*cdf0e10cSrcweir #define	PRIVATE_DEFINE_INTERFACE_6( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6 )																							\
198*cdf0e10cSrcweir 	PRIVATE_DEFINE_INTERFACE_5( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5 ),																											\
199*cdf0e10cSrcweir 	INTERFACE6
200*cdf0e10cSrcweir 
201*cdf0e10cSrcweir #define	PRIVATE_DEFINE_INTERFACE_7( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7 )																				\
202*cdf0e10cSrcweir 	PRIVATE_DEFINE_INTERFACE_6( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6 ),																								\
203*cdf0e10cSrcweir 	INTERFACE7
204*cdf0e10cSrcweir 
205*cdf0e10cSrcweir #define	PRIVATE_DEFINE_INTERFACE_8( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8 )																	\
206*cdf0e10cSrcweir 	PRIVATE_DEFINE_INTERFACE_7( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7 ),																					\
207*cdf0e10cSrcweir 	INTERFACE8
208*cdf0e10cSrcweir 
209*cdf0e10cSrcweir #define	PRIVATE_DEFINE_INTERFACE_9( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9 )														\
210*cdf0e10cSrcweir 	PRIVATE_DEFINE_INTERFACE_8( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8 ),																		\
211*cdf0e10cSrcweir 	INTERFACE9
212*cdf0e10cSrcweir 
213*cdf0e10cSrcweir #define	PRIVATE_DEFINE_INTERFACE_10( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10 )											\
214*cdf0e10cSrcweir 	PRIVATE_DEFINE_INTERFACE_9( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9 ),															\
215*cdf0e10cSrcweir 	INTERFACE10
216*cdf0e10cSrcweir 
217*cdf0e10cSrcweir #define	PRIVATE_DEFINE_INTERFACE_11( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11 )								\
218*cdf0e10cSrcweir 	PRIVATE_DEFINE_INTERFACE_10( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10 ),												\
219*cdf0e10cSrcweir 	INTERFACE11
220*cdf0e10cSrcweir 
221*cdf0e10cSrcweir //*****************************************************************************************************************
222*cdf0e10cSrcweir //	public
223*cdf0e10cSrcweir //	help macros for follow XInterface definitions
224*cdf0e10cSrcweir //*****************************************************************************************************************
225*cdf0e10cSrcweir 
226*cdf0e10cSrcweir //	Use it as parameter for DEFINE_XINTERFACE_X(), if you CAN use an interface directly in queryInterface()!
227*cdf0e10cSrcweir #define	DIRECT_INTERFACE( INTERFACE ) \
228*cdf0e10cSrcweir 	static_cast< INTERFACE* >( this )
229*cdf0e10cSrcweir 
230*cdf0e10cSrcweir //	Use it as parameter for DEFINE_XINTERFACE_X(), if you CAN'T use an interface directly in queryInterface()!
231*cdf0e10cSrcweir //	(zB at ambigous errors!)
232*cdf0e10cSrcweir #define	DERIVED_INTERFACE( BASEINTERFACE, DERIVEDINTERFACE ) \
233*cdf0e10cSrcweir 	static_cast< BASEINTERFACE* >( static_cast< DERIVEDINTERFACE* >( this ) )
234*cdf0e10cSrcweir 
235*cdf0e10cSrcweir //*****************************************************************************************************************
236*cdf0e10cSrcweir //	public
237*cdf0e10cSrcweir //	declaration of XInterface
238*cdf0e10cSrcweir //*****************************************************************************************************************
239*cdf0e10cSrcweir #define FWK_DECLARE_XINTERFACE																						   												\
240*cdf0e10cSrcweir 	virtual ::com::sun::star::uno::Any  SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType	) throw( ::com::sun::star::uno::RuntimeException );	\
241*cdf0e10cSrcweir     virtual void						SAL_CALL acquire       (											) throw();	\
242*cdf0e10cSrcweir 	virtual void						SAL_CALL release       (											) throw();
243*cdf0e10cSrcweir 
244*cdf0e10cSrcweir //*****************************************************************************************************************
245*cdf0e10cSrcweir //	public
246*cdf0e10cSrcweir //	implementation of XInterface
247*cdf0e10cSrcweir //*****************************************************************************************************************
248*cdf0e10cSrcweir 
249*cdf0e10cSrcweir //	implementation of XInterface with 0 additional interface for queryInterface()
250*cdf0e10cSrcweir #define DEFINE_XINTERFACE_0( CLASS, BASECLASS )																		\
251*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_PURE	(	CLASS,																		\
252*cdf0e10cSrcweir 								  		BASECLASS																	\
253*cdf0e10cSrcweir 									)
254*cdf0e10cSrcweir 
255*cdf0e10cSrcweir //	implementation of XInterface with 1 additional interface for queryInterface()
256*cdf0e10cSrcweir #define DEFINE_XINTERFACE_1( CLASS, BASECLASS, INTERFACE1 )															\
257*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE	(	CLASS,																			\
258*cdf0e10cSrcweir 							 		BASECLASS,																		\
259*cdf0e10cSrcweir 							 		( aType, PRIVATE_DEFINE_INTERFACE_1	(	INTERFACE1								\
260*cdf0e10cSrcweir 																		)											\
261*cdf0e10cSrcweir 									)																				\
262*cdf0e10cSrcweir 								)
263*cdf0e10cSrcweir 
264*cdf0e10cSrcweir //	implementation of XInterface with 2 additional interfaces for queryInterface()
265*cdf0e10cSrcweir #define DEFINE_XINTERFACE_2( CLASS, BASECLASS, INTERFACE1, INTERFACE2 )												\
266*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE	(	CLASS,																			\
267*cdf0e10cSrcweir 									BASECLASS,																		\
268*cdf0e10cSrcweir 									( aType, PRIVATE_DEFINE_INTERFACE_2	(	INTERFACE1	,							\
269*cdf0e10cSrcweir 											 								INTERFACE2								\
270*cdf0e10cSrcweir 																		)											\
271*cdf0e10cSrcweir 									)																				\
272*cdf0e10cSrcweir 								)
273*cdf0e10cSrcweir 
274*cdf0e10cSrcweir //	implementation of XInterface with 3 additional interfaces for queryInterface()
275*cdf0e10cSrcweir #define DEFINE_XINTERFACE_3( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3 )									\
276*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE	(	CLASS,																			\
277*cdf0e10cSrcweir 									BASECLASS,																		\
278*cdf0e10cSrcweir 									( aType, PRIVATE_DEFINE_INTERFACE_3	(	INTERFACE1	,							\
279*cdf0e10cSrcweir 											 								INTERFACE2	,							\
280*cdf0e10cSrcweir 																			INTERFACE3								\
281*cdf0e10cSrcweir 																		)											\
282*cdf0e10cSrcweir 									)																				\
283*cdf0e10cSrcweir 								)
284*cdf0e10cSrcweir 
285*cdf0e10cSrcweir //	implementation of XInterface with 4 additional interfaces for queryInterface()
286*cdf0e10cSrcweir #define DEFINE_XINTERFACE_4( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4 )						\
287*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE	(	CLASS,																			\
288*cdf0e10cSrcweir 									BASECLASS,																		\
289*cdf0e10cSrcweir 									( aType, PRIVATE_DEFINE_INTERFACE_4	(	INTERFACE1	,							\
290*cdf0e10cSrcweir 																			INTERFACE2	,							\
291*cdf0e10cSrcweir 																			INTERFACE3	,							\
292*cdf0e10cSrcweir 																			INTERFACE4								\
293*cdf0e10cSrcweir 																		)											\
294*cdf0e10cSrcweir 									)																				\
295*cdf0e10cSrcweir 								)
296*cdf0e10cSrcweir 
297*cdf0e10cSrcweir //	implementation of XInterface with 5 additional interfaces for queryInterface()
298*cdf0e10cSrcweir #define DEFINE_XINTERFACE_5( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5 )			\
299*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE	(	CLASS,																			\
300*cdf0e10cSrcweir 									BASECLASS,																		\
301*cdf0e10cSrcweir 									( aType, PRIVATE_DEFINE_INTERFACE_5	(	INTERFACE1	,							\
302*cdf0e10cSrcweir 																			INTERFACE2	,							\
303*cdf0e10cSrcweir 																			INTERFACE3	,							\
304*cdf0e10cSrcweir 																			INTERFACE4	,							\
305*cdf0e10cSrcweir 																			INTERFACE5								\
306*cdf0e10cSrcweir 																		)											\
307*cdf0e10cSrcweir 									)																				\
308*cdf0e10cSrcweir 								)
309*cdf0e10cSrcweir 
310*cdf0e10cSrcweir //	implementation of XInterface with 6 additional interfaces for queryInterface()
311*cdf0e10cSrcweir #define DEFINE_XINTERFACE_6( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6 )	\
312*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE	(	CLASS,																			\
313*cdf0e10cSrcweir 									BASECLASS,																		\
314*cdf0e10cSrcweir 									( aType, PRIVATE_DEFINE_INTERFACE_6	(	INTERFACE1	,							\
315*cdf0e10cSrcweir 																			INTERFACE2	,							\
316*cdf0e10cSrcweir 																			INTERFACE3	,							\
317*cdf0e10cSrcweir 																			INTERFACE4	,							\
318*cdf0e10cSrcweir 																			INTERFACE5	,							\
319*cdf0e10cSrcweir 																			INTERFACE6								\
320*cdf0e10cSrcweir 																		)											\
321*cdf0e10cSrcweir 									)																				\
322*cdf0e10cSrcweir 								)
323*cdf0e10cSrcweir 
324*cdf0e10cSrcweir //	implementation of XInterface with 7 additional interfaces for queryInterface()
325*cdf0e10cSrcweir #define DEFINE_XINTERFACE_7( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7 )	\
326*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE	(	CLASS,																			\
327*cdf0e10cSrcweir 									BASECLASS,																		\
328*cdf0e10cSrcweir 									( aType, PRIVATE_DEFINE_INTERFACE_7	(	INTERFACE1	,							\
329*cdf0e10cSrcweir 																			INTERFACE2	,							\
330*cdf0e10cSrcweir 																			INTERFACE3	,							\
331*cdf0e10cSrcweir 																			INTERFACE4	,							\
332*cdf0e10cSrcweir 																			INTERFACE5	,							\
333*cdf0e10cSrcweir 																			INTERFACE6	,							\
334*cdf0e10cSrcweir 																			INTERFACE7								\
335*cdf0e10cSrcweir 																		)											\
336*cdf0e10cSrcweir 									)																				\
337*cdf0e10cSrcweir 								)
338*cdf0e10cSrcweir 
339*cdf0e10cSrcweir //	implementation of XInterface with 8 additional interfaces for queryInterface()
340*cdf0e10cSrcweir #define DEFINE_XINTERFACE_8( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8 )	\
341*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE	(	CLASS,																			\
342*cdf0e10cSrcweir 									BASECLASS,																		\
343*cdf0e10cSrcweir 									( aType, PRIVATE_DEFINE_INTERFACE_8	(	INTERFACE1	,							\
344*cdf0e10cSrcweir 																			INTERFACE2	,							\
345*cdf0e10cSrcweir 																			INTERFACE3	,							\
346*cdf0e10cSrcweir 																			INTERFACE4	,							\
347*cdf0e10cSrcweir 																			INTERFACE5	,							\
348*cdf0e10cSrcweir 																			INTERFACE6	,							\
349*cdf0e10cSrcweir 																			INTERFACE7	,							\
350*cdf0e10cSrcweir 																			INTERFACE8								\
351*cdf0e10cSrcweir 																		)											\
352*cdf0e10cSrcweir 									)																				\
353*cdf0e10cSrcweir 								)
354*cdf0e10cSrcweir 
355*cdf0e10cSrcweir //	implementation of XInterface with 9 additional interfaces for queryInterface()
356*cdf0e10cSrcweir #define DEFINE_XINTERFACE_9( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9 )	\
357*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE	(	CLASS,																			\
358*cdf0e10cSrcweir 									BASECLASS,																		\
359*cdf0e10cSrcweir 									( aType, PRIVATE_DEFINE_INTERFACE_9	(	INTERFACE1	,							\
360*cdf0e10cSrcweir 																			INTERFACE2	,							\
361*cdf0e10cSrcweir 																			INTERFACE3	,							\
362*cdf0e10cSrcweir 																			INTERFACE4	,							\
363*cdf0e10cSrcweir 																			INTERFACE5	,							\
364*cdf0e10cSrcweir 																			INTERFACE6	,							\
365*cdf0e10cSrcweir 																			INTERFACE7	,							\
366*cdf0e10cSrcweir 																			INTERFACE8	,							\
367*cdf0e10cSrcweir 																			INTERFACE9								\
368*cdf0e10cSrcweir 																		)											\
369*cdf0e10cSrcweir 									)																				\
370*cdf0e10cSrcweir 								)
371*cdf0e10cSrcweir 
372*cdf0e10cSrcweir //	implementation of XInterface with 10 additional interfaces for queryInterface()
373*cdf0e10cSrcweir #define DEFINE_XINTERFACE_10( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10 )	\
374*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE	(	CLASS,																			\
375*cdf0e10cSrcweir 									BASECLASS,																		\
376*cdf0e10cSrcweir 									( aType, PRIVATE_DEFINE_INTERFACE_10	(	INTERFACE1	,						\
377*cdf0e10cSrcweir 																				INTERFACE2	,						\
378*cdf0e10cSrcweir 																				INTERFACE3	,						\
379*cdf0e10cSrcweir 																				INTERFACE4	,						\
380*cdf0e10cSrcweir 																				INTERFACE5	,						\
381*cdf0e10cSrcweir 																				INTERFACE6	,						\
382*cdf0e10cSrcweir 																				INTERFACE7	,						\
383*cdf0e10cSrcweir 																				INTERFACE8	,						\
384*cdf0e10cSrcweir 																				INTERFACE9	,						\
385*cdf0e10cSrcweir 																				INTERFACE10							\
386*cdf0e10cSrcweir 																			)										\
387*cdf0e10cSrcweir 									)																				\
388*cdf0e10cSrcweir 								)
389*cdf0e10cSrcweir 
390*cdf0e10cSrcweir //	implementation of XInterface with 11 additional interfaces for queryInterface()
391*cdf0e10cSrcweir #define DEFINE_XINTERFACE_11( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11 )	\
392*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE	(	CLASS,																			\
393*cdf0e10cSrcweir 									BASECLASS,																		\
394*cdf0e10cSrcweir 									( aType, PRIVATE_DEFINE_INTERFACE_11	(	INTERFACE1	,						\
395*cdf0e10cSrcweir 																				INTERFACE2	,						\
396*cdf0e10cSrcweir 																				INTERFACE3	,						\
397*cdf0e10cSrcweir 																				INTERFACE4	,						\
398*cdf0e10cSrcweir 																				INTERFACE5	,						\
399*cdf0e10cSrcweir 																				INTERFACE6	,						\
400*cdf0e10cSrcweir 																				INTERFACE7	,						\
401*cdf0e10cSrcweir 																				INTERFACE8	,						\
402*cdf0e10cSrcweir 																				INTERFACE9	,						\
403*cdf0e10cSrcweir 																				INTERFACE10	,						\
404*cdf0e10cSrcweir 																				INTERFACE11							\
405*cdf0e10cSrcweir 																			)										\
406*cdf0e10cSrcweir 									)																				\
407*cdf0e10cSrcweir 								)
408*cdf0e10cSrcweir 
409*cdf0e10cSrcweir //	implementation of XInterface with 12 additional interfaces for queryInterface()
410*cdf0e10cSrcweir #define DEFINE_XINTERFACE_12( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12 )	\
411*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_LARGE	(	CLASS,																		\
412*cdf0e10cSrcweir 										BASECLASS,																	\
413*cdf0e10cSrcweir 										( aType, PRIVATE_DEFINE_INTERFACE_11	(	INTERFACE1	,					\
414*cdf0e10cSrcweir 																					INTERFACE2	,					\
415*cdf0e10cSrcweir 																					INTERFACE3	,					\
416*cdf0e10cSrcweir 																					INTERFACE4	,					\
417*cdf0e10cSrcweir 																					INTERFACE5	,					\
418*cdf0e10cSrcweir 																					INTERFACE6	,					\
419*cdf0e10cSrcweir 																					INTERFACE7	,					\
420*cdf0e10cSrcweir 																					INTERFACE8	,					\
421*cdf0e10cSrcweir 																					INTERFACE9	,					\
422*cdf0e10cSrcweir 																					INTERFACE10	,					\
423*cdf0e10cSrcweir 																					INTERFACE11						\
424*cdf0e10cSrcweir 																				)									\
425*cdf0e10cSrcweir 										),																			\
426*cdf0e10cSrcweir 										( aType, PRIVATE_DEFINE_INTERFACE_1		(	INTERFACE12						\
427*cdf0e10cSrcweir 																				)									\
428*cdf0e10cSrcweir 										)																			\
429*cdf0e10cSrcweir 									)
430*cdf0e10cSrcweir 
431*cdf0e10cSrcweir //	implementation of XInterface with 13 additional interfaces for queryInterface()
432*cdf0e10cSrcweir #define DEFINE_XINTERFACE_13( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13 )	\
433*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_LARGE	(	CLASS,																		\
434*cdf0e10cSrcweir 										BASECLASS,																	\
435*cdf0e10cSrcweir 										( aType, PRIVATE_DEFINE_INTERFACE_11	(	INTERFACE1	,					\
436*cdf0e10cSrcweir 																					INTERFACE2	,					\
437*cdf0e10cSrcweir 																					INTERFACE3	,					\
438*cdf0e10cSrcweir 																					INTERFACE4	,					\
439*cdf0e10cSrcweir 																					INTERFACE5	,					\
440*cdf0e10cSrcweir 																					INTERFACE6	,					\
441*cdf0e10cSrcweir 																					INTERFACE7	,					\
442*cdf0e10cSrcweir 																					INTERFACE8	,					\
443*cdf0e10cSrcweir 																					INTERFACE9	,					\
444*cdf0e10cSrcweir 																					INTERFACE10	,					\
445*cdf0e10cSrcweir 																					INTERFACE11						\
446*cdf0e10cSrcweir 																				)									\
447*cdf0e10cSrcweir 										),																			\
448*cdf0e10cSrcweir 										( aType, PRIVATE_DEFINE_INTERFACE_2		(	INTERFACE12	,					\
449*cdf0e10cSrcweir 																					INTERFACE13						\
450*cdf0e10cSrcweir 																				)									\
451*cdf0e10cSrcweir 										)																			\
452*cdf0e10cSrcweir 									)
453*cdf0e10cSrcweir 
454*cdf0e10cSrcweir //	implementation of XInterface with 14 additional interfaces for queryInterface()
455*cdf0e10cSrcweir #define DEFINE_XINTERFACE_14( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13, INTERFACE14 )	\
456*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_LARGE	(	CLASS,																		\
457*cdf0e10cSrcweir 										BASECLASS,																	\
458*cdf0e10cSrcweir 										( aType, PRIVATE_DEFINE_INTERFACE_11	(	INTERFACE1	,					\
459*cdf0e10cSrcweir 																					INTERFACE2	,					\
460*cdf0e10cSrcweir 																					INTERFACE3	,					\
461*cdf0e10cSrcweir 																					INTERFACE4	,					\
462*cdf0e10cSrcweir 																					INTERFACE5	,					\
463*cdf0e10cSrcweir 																					INTERFACE6	,					\
464*cdf0e10cSrcweir 																					INTERFACE7	,					\
465*cdf0e10cSrcweir 																					INTERFACE8	,					\
466*cdf0e10cSrcweir 																					INTERFACE9	,					\
467*cdf0e10cSrcweir 																					INTERFACE10	,					\
468*cdf0e10cSrcweir 																					INTERFACE11						\
469*cdf0e10cSrcweir 																				)									\
470*cdf0e10cSrcweir 										),																			\
471*cdf0e10cSrcweir 										( aType, PRIVATE_DEFINE_INTERFACE_3		(	INTERFACE12	,					\
472*cdf0e10cSrcweir 																					INTERFACE13	,					\
473*cdf0e10cSrcweir 																					INTERFACE14						\
474*cdf0e10cSrcweir 																				)									\
475*cdf0e10cSrcweir 										)																			\
476*cdf0e10cSrcweir 									)
477*cdf0e10cSrcweir 
478*cdf0e10cSrcweir //	implementation of XInterface with 15 additional interfaces for queryInterface()
479*cdf0e10cSrcweir #define DEFINE_XINTERFACE_15( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13, INTERFACE14, INTERFACE15 )	\
480*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_LARGE	(	CLASS,																		\
481*cdf0e10cSrcweir 										BASECLASS,																	\
482*cdf0e10cSrcweir 										( aType, PRIVATE_DEFINE_INTERFACE_11	(	INTERFACE1	,					\
483*cdf0e10cSrcweir 																					INTERFACE2	,					\
484*cdf0e10cSrcweir 																					INTERFACE3	,					\
485*cdf0e10cSrcweir 																					INTERFACE4	,					\
486*cdf0e10cSrcweir 																					INTERFACE5	,					\
487*cdf0e10cSrcweir 																					INTERFACE6	,					\
488*cdf0e10cSrcweir 																					INTERFACE7	,					\
489*cdf0e10cSrcweir 																					INTERFACE8	,					\
490*cdf0e10cSrcweir 																					INTERFACE9	,					\
491*cdf0e10cSrcweir 																					INTERFACE10	,					\
492*cdf0e10cSrcweir 																					INTERFACE11						\
493*cdf0e10cSrcweir 																				)									\
494*cdf0e10cSrcweir 										),																			\
495*cdf0e10cSrcweir 										( aType, PRIVATE_DEFINE_INTERFACE_4		(	INTERFACE12	,					\
496*cdf0e10cSrcweir 																					INTERFACE13	,					\
497*cdf0e10cSrcweir 																					INTERFACE14	,					\
498*cdf0e10cSrcweir 																					INTERFACE15						\
499*cdf0e10cSrcweir 																				)									\
500*cdf0e10cSrcweir 										)																			\
501*cdf0e10cSrcweir 									)
502*cdf0e10cSrcweir 
503*cdf0e10cSrcweir //	implementation of XInterface with 16 additional interfaces for queryInterface()
504*cdf0e10cSrcweir #define DEFINE_XINTERFACE_16( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13, INTERFACE14, INTERFACE15, INTERFACE16 )	\
505*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_LARGE	(	CLASS,																		\
506*cdf0e10cSrcweir 										BASECLASS,																	\
507*cdf0e10cSrcweir 										( aType, PRIVATE_DEFINE_INTERFACE_11	(	INTERFACE1	,					\
508*cdf0e10cSrcweir 																					INTERFACE2	,					\
509*cdf0e10cSrcweir 																					INTERFACE3	,					\
510*cdf0e10cSrcweir 																					INTERFACE4	,					\
511*cdf0e10cSrcweir 																					INTERFACE5	,					\
512*cdf0e10cSrcweir 																					INTERFACE6	,					\
513*cdf0e10cSrcweir 																					INTERFACE7	,					\
514*cdf0e10cSrcweir 																					INTERFACE8	,					\
515*cdf0e10cSrcweir 																					INTERFACE9	,					\
516*cdf0e10cSrcweir 																					INTERFACE10	,					\
517*cdf0e10cSrcweir 																					INTERFACE11						\
518*cdf0e10cSrcweir 																				)									\
519*cdf0e10cSrcweir 										),																			\
520*cdf0e10cSrcweir 										( aType, PRIVATE_DEFINE_INTERFACE_5		(	INTERFACE12	,					\
521*cdf0e10cSrcweir 																					INTERFACE13	,					\
522*cdf0e10cSrcweir 																					INTERFACE14	,					\
523*cdf0e10cSrcweir 																					INTERFACE15	,					\
524*cdf0e10cSrcweir 																					INTERFACE16						\
525*cdf0e10cSrcweir 																				)									\
526*cdf0e10cSrcweir 										)																			\
527*cdf0e10cSrcweir 									)
528*cdf0e10cSrcweir 
529*cdf0e10cSrcweir //  implementation of XInterface with 17 additional interfaces for queryInterface()
530*cdf0e10cSrcweir #define DEFINE_XINTERFACE_17( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13, INTERFACE14, INTERFACE15, INTERFACE16, INTERFACE17 ) \
531*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_LARGE	(	CLASS,																		\
532*cdf0e10cSrcweir 										BASECLASS,																	\
533*cdf0e10cSrcweir 										( aType, PRIVATE_DEFINE_INTERFACE_11	(	INTERFACE1	,					\
534*cdf0e10cSrcweir 																					INTERFACE2	,					\
535*cdf0e10cSrcweir 																					INTERFACE3	,					\
536*cdf0e10cSrcweir 																					INTERFACE4	,					\
537*cdf0e10cSrcweir 																					INTERFACE5	,					\
538*cdf0e10cSrcweir 																					INTERFACE6	,					\
539*cdf0e10cSrcweir 																					INTERFACE7	,					\
540*cdf0e10cSrcweir 																					INTERFACE8	,					\
541*cdf0e10cSrcweir 																					INTERFACE9	,					\
542*cdf0e10cSrcweir 																					INTERFACE10	,					\
543*cdf0e10cSrcweir 																					INTERFACE11						\
544*cdf0e10cSrcweir 																				)									\
545*cdf0e10cSrcweir 										),																			\
546*cdf0e10cSrcweir                                         ( aType, PRIVATE_DEFINE_INTERFACE_6     (   INTERFACE12 ,                   \
547*cdf0e10cSrcweir 																					INTERFACE13	,					\
548*cdf0e10cSrcweir 																					INTERFACE14	,					\
549*cdf0e10cSrcweir 																					INTERFACE15	,					\
550*cdf0e10cSrcweir                                                                                     INTERFACE16 ,                   \
551*cdf0e10cSrcweir                                                                                     INTERFACE17                     \
552*cdf0e10cSrcweir 																				)									\
553*cdf0e10cSrcweir 										)																			\
554*cdf0e10cSrcweir 									)
555*cdf0e10cSrcweir 
556*cdf0e10cSrcweir //  implementation of XInterface with 18 additional interfaces for queryInterface()
557*cdf0e10cSrcweir #define DEFINE_XINTERFACE_18( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13, INTERFACE14, INTERFACE15, INTERFACE16, INTERFACE17, INTERFACE18 ) \
558*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_LARGE	(	CLASS,																		\
559*cdf0e10cSrcweir 										BASECLASS,																	\
560*cdf0e10cSrcweir 										( aType, PRIVATE_DEFINE_INTERFACE_11	(	INTERFACE1	,					\
561*cdf0e10cSrcweir 																					INTERFACE2	,					\
562*cdf0e10cSrcweir 																					INTERFACE3	,					\
563*cdf0e10cSrcweir 																					INTERFACE4	,					\
564*cdf0e10cSrcweir 																					INTERFACE5	,					\
565*cdf0e10cSrcweir 																					INTERFACE6	,					\
566*cdf0e10cSrcweir 																					INTERFACE7	,					\
567*cdf0e10cSrcweir 																					INTERFACE8	,					\
568*cdf0e10cSrcweir 																					INTERFACE9	,					\
569*cdf0e10cSrcweir 																					INTERFACE10	,					\
570*cdf0e10cSrcweir 																					INTERFACE11						\
571*cdf0e10cSrcweir 																				)									\
572*cdf0e10cSrcweir 										),																			\
573*cdf0e10cSrcweir                                         ( aType, PRIVATE_DEFINE_INTERFACE_7     (   INTERFACE12 ,                   \
574*cdf0e10cSrcweir 																					INTERFACE13	,					\
575*cdf0e10cSrcweir 																					INTERFACE14	,					\
576*cdf0e10cSrcweir 																					INTERFACE15	,					\
577*cdf0e10cSrcweir                                                                                     INTERFACE16 ,                   \
578*cdf0e10cSrcweir                                                                                     INTERFACE17 ,                   \
579*cdf0e10cSrcweir                                                                                     INTERFACE18                     \
580*cdf0e10cSrcweir 																				)									\
581*cdf0e10cSrcweir 										)																			\
582*cdf0e10cSrcweir 									)
583*cdf0e10cSrcweir 
584*cdf0e10cSrcweir //  implementation of XInterface with 19 additional interfaces for queryInterface()
585*cdf0e10cSrcweir #define DEFINE_XINTERFACE_19( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13, INTERFACE14, INTERFACE15, INTERFACE16, INTERFACE17, INTERFACE18, INTERFACE19 ) \
586*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_LARGE	(	CLASS,																		\
587*cdf0e10cSrcweir 										BASECLASS,																	\
588*cdf0e10cSrcweir 										( aType, PRIVATE_DEFINE_INTERFACE_11	(	INTERFACE1	,					\
589*cdf0e10cSrcweir 																					INTERFACE2	,					\
590*cdf0e10cSrcweir 																					INTERFACE3	,					\
591*cdf0e10cSrcweir 																					INTERFACE4	,					\
592*cdf0e10cSrcweir 																					INTERFACE5	,					\
593*cdf0e10cSrcweir 																					INTERFACE6	,					\
594*cdf0e10cSrcweir 																					INTERFACE7	,					\
595*cdf0e10cSrcweir 																					INTERFACE8	,					\
596*cdf0e10cSrcweir 																					INTERFACE9	,					\
597*cdf0e10cSrcweir 																					INTERFACE10	,					\
598*cdf0e10cSrcweir 																					INTERFACE11						\
599*cdf0e10cSrcweir 																				)									\
600*cdf0e10cSrcweir 										),																			\
601*cdf0e10cSrcweir                                         ( aType, PRIVATE_DEFINE_INTERFACE_8     (   INTERFACE12 ,                   \
602*cdf0e10cSrcweir 																					INTERFACE13	,					\
603*cdf0e10cSrcweir 																					INTERFACE14	,					\
604*cdf0e10cSrcweir 																					INTERFACE15	,					\
605*cdf0e10cSrcweir                                                                                     INTERFACE16 ,                   \
606*cdf0e10cSrcweir                                                                                     INTERFACE17 ,                   \
607*cdf0e10cSrcweir                                                                                     INTERFACE18 ,                   \
608*cdf0e10cSrcweir                                                                                     INTERFACE19                     \
609*cdf0e10cSrcweir 																				)									\
610*cdf0e10cSrcweir 										)																			\
611*cdf0e10cSrcweir 									)
612*cdf0e10cSrcweir 
613*cdf0e10cSrcweir //  implementation of XInterface with 20 additional interfaces for queryInterface()
614*cdf0e10cSrcweir #define DEFINE_XINTERFACE_20( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13, INTERFACE14, INTERFACE15, INTERFACE16, INTERFACE17, INTERFACE18, INTERFACE19, INTERFACE20 ) \
615*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_LARGE	(	CLASS,																		\
616*cdf0e10cSrcweir 										BASECLASS,																	\
617*cdf0e10cSrcweir 										( aType, PRIVATE_DEFINE_INTERFACE_11	(	INTERFACE1	,					\
618*cdf0e10cSrcweir 																					INTERFACE2	,					\
619*cdf0e10cSrcweir 																					INTERFACE3	,					\
620*cdf0e10cSrcweir 																					INTERFACE4	,					\
621*cdf0e10cSrcweir 																					INTERFACE5	,					\
622*cdf0e10cSrcweir 																					INTERFACE6	,					\
623*cdf0e10cSrcweir 																					INTERFACE7	,					\
624*cdf0e10cSrcweir 																					INTERFACE8	,					\
625*cdf0e10cSrcweir 																					INTERFACE9	,					\
626*cdf0e10cSrcweir 																					INTERFACE10	,					\
627*cdf0e10cSrcweir 																					INTERFACE11						\
628*cdf0e10cSrcweir 																				)									\
629*cdf0e10cSrcweir 										),																			\
630*cdf0e10cSrcweir                                         ( aType, PRIVATE_DEFINE_INTERFACE_9     (   INTERFACE12 ,                   \
631*cdf0e10cSrcweir 																					INTERFACE13	,					\
632*cdf0e10cSrcweir 																					INTERFACE14	,					\
633*cdf0e10cSrcweir 																					INTERFACE15	,					\
634*cdf0e10cSrcweir                                                                                     INTERFACE16 ,                   \
635*cdf0e10cSrcweir                                                                                     INTERFACE17 ,                   \
636*cdf0e10cSrcweir                                                                                     INTERFACE18 ,                   \
637*cdf0e10cSrcweir                                                                                     INTERFACE19 ,                   \
638*cdf0e10cSrcweir                                                                                     INTERFACE20                     \
639*cdf0e10cSrcweir 																				)									\
640*cdf0e10cSrcweir 										)																			\
641*cdf0e10cSrcweir 									)
642*cdf0e10cSrcweir 
643*cdf0e10cSrcweir //  implementation of XInterface with 21 additional interfaces for queryInterface()
644*cdf0e10cSrcweir #define DEFINE_XINTERFACE_21( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13, INTERFACE14, INTERFACE15, INTERFACE16, INTERFACE17, INTERFACE18, INTERFACE19, INTERFACE20, INTERFACE21 ) \
645*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_LARGE	(	CLASS,																		\
646*cdf0e10cSrcweir 										BASECLASS,																	\
647*cdf0e10cSrcweir 										( aType, PRIVATE_DEFINE_INTERFACE_11	(	INTERFACE1	,					\
648*cdf0e10cSrcweir 																					INTERFACE2	,					\
649*cdf0e10cSrcweir 																					INTERFACE3	,					\
650*cdf0e10cSrcweir 																					INTERFACE4	,					\
651*cdf0e10cSrcweir 																					INTERFACE5	,					\
652*cdf0e10cSrcweir 																					INTERFACE6	,					\
653*cdf0e10cSrcweir 																					INTERFACE7	,					\
654*cdf0e10cSrcweir 																					INTERFACE8	,					\
655*cdf0e10cSrcweir 																					INTERFACE9	,					\
656*cdf0e10cSrcweir 																					INTERFACE10	,					\
657*cdf0e10cSrcweir 																					INTERFACE11						\
658*cdf0e10cSrcweir 																				)									\
659*cdf0e10cSrcweir 										),																			\
660*cdf0e10cSrcweir                                         ( aType, PRIVATE_DEFINE_INTERFACE_10    (   INTERFACE12 ,                   \
661*cdf0e10cSrcweir 																					INTERFACE13	,					\
662*cdf0e10cSrcweir 																					INTERFACE14	,					\
663*cdf0e10cSrcweir 																					INTERFACE15	,					\
664*cdf0e10cSrcweir                                                                                     INTERFACE16 ,                   \
665*cdf0e10cSrcweir                                                                                     INTERFACE17 ,                   \
666*cdf0e10cSrcweir                                                                                     INTERFACE18 ,                   \
667*cdf0e10cSrcweir                                                                                     INTERFACE19 ,                   \
668*cdf0e10cSrcweir                                                                                     INTERFACE20 ,                   \
669*cdf0e10cSrcweir                                                                                     INTERFACE21                     \
670*cdf0e10cSrcweir 																				)									\
671*cdf0e10cSrcweir 										)																			\
672*cdf0e10cSrcweir 									)
673*cdf0e10cSrcweir 
674*cdf0e10cSrcweir //  implementation of XInterface with 22 additional interfaces for queryInterface()
675*cdf0e10cSrcweir #define DEFINE_XINTERFACE_22( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13, INTERFACE14, INTERFACE15, INTERFACE16, INTERFACE17, INTERFACE18, INTERFACE19, INTERFACE20, INTERFACE21, INTERFACE22 ) \
676*cdf0e10cSrcweir 	PRIVATE_DEFINE_XINTERFACE_LARGE	(	CLASS,																		\
677*cdf0e10cSrcweir 										BASECLASS,																	\
678*cdf0e10cSrcweir 										( aType, PRIVATE_DEFINE_INTERFACE_11	(	INTERFACE1	,					\
679*cdf0e10cSrcweir 																					INTERFACE2	,					\
680*cdf0e10cSrcweir 																					INTERFACE3	,					\
681*cdf0e10cSrcweir 																					INTERFACE4	,					\
682*cdf0e10cSrcweir 																					INTERFACE5	,					\
683*cdf0e10cSrcweir 																					INTERFACE6	,					\
684*cdf0e10cSrcweir 																					INTERFACE7	,					\
685*cdf0e10cSrcweir 																					INTERFACE8	,					\
686*cdf0e10cSrcweir 																					INTERFACE9	,					\
687*cdf0e10cSrcweir 																					INTERFACE10	,					\
688*cdf0e10cSrcweir 																					INTERFACE11						\
689*cdf0e10cSrcweir 																				)									\
690*cdf0e10cSrcweir 										),																			\
691*cdf0e10cSrcweir                                         ( aType, PRIVATE_DEFINE_INTERFACE_11    (   INTERFACE12 ,                   \
692*cdf0e10cSrcweir 																					INTERFACE13	,					\
693*cdf0e10cSrcweir 																					INTERFACE14	,					\
694*cdf0e10cSrcweir 																					INTERFACE15	,					\
695*cdf0e10cSrcweir                                                                                     INTERFACE16 ,                   \
696*cdf0e10cSrcweir                                                                                     INTERFACE17 ,                   \
697*cdf0e10cSrcweir                                                                                     INTERFACE18 ,                   \
698*cdf0e10cSrcweir                                                                                     INTERFACE19 ,                   \
699*cdf0e10cSrcweir                                                                                     INTERFACE20 ,                   \
700*cdf0e10cSrcweir                                                                                     INTERFACE22 ,                   \
701*cdf0e10cSrcweir                                                                                     INTERFACE21                     \
702*cdf0e10cSrcweir 																				)									\
703*cdf0e10cSrcweir 										)																			\
704*cdf0e10cSrcweir 									)
705*cdf0e10cSrcweir 
706*cdf0e10cSrcweir }		//	namespace framework
707*cdf0e10cSrcweir 
708*cdf0e10cSrcweir #endif	//	#ifndef __FRAMEWORK_MACROS_XINTERFACE_HXX_
709