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