xref: /trunk/main/framework/inc/macros/xinterface.hxx (revision 914d351e5f5b84e4342a86d6ab8d4aca7308b9bd)
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