xref: /trunk/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