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