| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef __FRAMEWORK_MACROS_XINTERFACE_HXX_ |
| #define __FRAMEWORK_MACROS_XINTERFACE_HXX_ |
| |
| //_________________________________________________________________________________________________________________ |
| // my own includes |
| //_________________________________________________________________________________________________________________ |
| |
| //_________________________________________________________________________________________________________________ |
| // interface includes |
| //_________________________________________________________________________________________________________________ |
| |
| #include <com/sun/star/uno/RuntimeException.hpp> |
| |
| //_________________________________________________________________________________________________________________ |
| // other includes |
| //_________________________________________________________________________________________________________________ |
| #include <com/sun/star/uno/Any.hxx> |
| #include <com/sun/star/uno/Reference.hxx> |
| #include <com/sun/star/uno/Type.hxx> |
| #include <cppuhelper/queryinterface.hxx> |
| #include <rtl/ustring.hxx> |
| |
| //_________________________________________________________________________________________________________________ |
| // namespace |
| //_________________________________________________________________________________________________________________ |
| |
| namespace framework{ |
| |
| /*_________________________________________________________________________________________________________________ |
| |
| macros for declaration and definition of XInterface |
| Please use follow public macros only! |
| |
| 1) DEFINE_XINTERFACE => use it in header to declare XInterface and his methods |
| 2) DIRECT_INTERFACE( INTERFACE ) => use it as parameter INTERFACEx at 4) if interface not ambigous |
| 3) DERIVED_INTERFACE( BASEINTERFACE, DERIVEDINTERFACE ) => use it as parameter INTERFACEx at 4) if interface can be ambigous |
| 4) DECLARE_XINTERFACE_0( CLASS, BASECLASS ) => use it to define implementation of XInterface for 0 additional interface to baseclass |
| DECLARE_XINTERFACE_1( CLASS, BASECLASS, INTERFACE1 ) => use it to define implementation of XInterface for 1 additional interface to baseclass |
| ... |
| DECLARE_XINTERFACE_16( CLASS, BASECLASS, INTERFACE1, ... , INTERFACE16 ) |
| |
| _________________________________________________________________________________________________________________*/ |
| |
| //***************************************************************************************************************** |
| // private |
| // implementation of XInterface::aquire() |
| // XInterface::release() |
| //***************************************************************************************************************** |
| #define PRIVATE_DEFINE_XINTERFACE_AQUIRE_RELEASE( CLASS, BASECLASS ) \ |
| void SAL_CALL CLASS::acquire() throw() \ |
| { \ |
| /* Don't use mutex in methods of XInterface! */ \ |
| BASECLASS::acquire(); \ |
| } \ |
| \ |
| void SAL_CALL CLASS::release() throw() \ |
| { \ |
| /* Don't use mutex in methods of XInterface! */ \ |
| BASECLASS::release(); \ |
| } |
| |
| //***************************************************************************************************************** |
| // private |
| // implementation of XInterface::queryInterface() without any other interfaces! |
| //***************************************************************************************************************** |
| #define PRIVATE_DEFINE_XINTERFACE_QUERYINTERFACE_PURE( CLASS, BASECLASS ) \ |
| ::com::sun::star::uno::Any SAL_CALL CLASS::queryInterface( const ::com::sun::star::uno::Type& aType ) throw( ::com::sun::star::uno::RuntimeException ) \ |
| { \ |
| /* Attention: Don't use mutex or guard in this method!!! Is a method of XInterface. */ \ |
| /* I have no own supported interfaces ... */ \ |
| /* ... ask baseclass for interfaces! */ \ |
| return BASECLASS::queryInterface( aType ); \ |
| } |
| |
| //***************************************************************************************************************** |
| // private |
| // implementation of XInterface::queryInterface() with max. 12 other interfaces! |
| //***************************************************************************************************************** |
| #define PRIVATE_DEFINE_XINTERFACE_QUERYINTERFACE( CLASS, BASECLASS, INTERFACES ) \ |
| ::com::sun::star::uno::Any SAL_CALL CLASS::queryInterface( const ::com::sun::star::uno::Type& aType ) throw( ::com::sun::star::uno::RuntimeException ) \ |
| { \ |
| /* Attention: Don't use mutex or guard in this method!!! Is a method of XInterface. */ \ |
| /* Ask for my own supported interfaces ... */ \ |
| ::com::sun::star::uno::Any aReturn ( ::cppu::queryInterface INTERFACES \ |
| ); \ |
| /* If searched interface not supported by this class ... */ \ |
| if ( aReturn.hasValue() == sal_False ) \ |
| { \ |
| /* ... ask baseclass for interfaces! */ \ |
| aReturn = BASECLASS::queryInterface( aType ); \ |
| } \ |
| /* Return result of this search. */ \ |
| return aReturn; \ |
| } |
| |
| //***************************************************************************************************************** |
| // private |
| // implementation of XInterface::queryInterface() with more then 12 other interfaces! |
| //***************************************************************************************************************** |
| #define PRIVATE_DEFINE_XINTERFACE_QUERYINTERFACE_LARGE( CLASS, BASECLASS, INTERFACES_FIRST, INTERFACES_SECOND ) \ |
| ::com::sun::star::uno::Any SAL_CALL CLASS::queryInterface( const ::com::sun::star::uno::Type& aType ) throw( ::com::sun::star::uno::RuntimeException ) \ |
| { \ |
| /* Attention: Don't use mutex or guard in this method!!! Is a method of XInterface. */ \ |
| /* Ask for my own supported interfaces ... */ \ |
| ::com::sun::star::uno::Any aReturn ( ::cppu::queryInterface INTERFACES_FIRST \ |
| ); \ |
| /* If searched interface not supported by first group ... */ \ |
| if ( aReturn.hasValue() == sal_False ) \ |
| { \ |
| /* ... search in second group. (cppuhelper support 12 items only!) */ \ |
| aReturn = ::cppu::queryInterface INTERFACES_SECOND ; \ |
| /* If searched interface not supported by this class ... */ \ |
| if ( aReturn.hasValue() == sal_False ) \ |
| { \ |
| /* ... ask baseclass for interfaces! */ \ |
| aReturn = BASECLASS::queryInterface( aType ); \ |
| } \ |
| } \ |
| /* Return result of this search. */ \ |
| return aReturn; \ |
| } |
| |
| //***************************************************************************************************************** |
| // private |
| // complete implementation of XInterface for different use cases |
| //***************************************************************************************************************** |
| #define PRIVATE_DEFINE_XINTERFACE_PURE( CLASS, BASECLASS ) \ |
| PRIVATE_DEFINE_XINTERFACE_AQUIRE_RELEASE( CLASS, BASECLASS ) \ |
| PRIVATE_DEFINE_XINTERFACE_QUERYINTERFACE_PURE( CLASS, BASECLASS ) |
| |
| #define PRIVATE_DEFINE_XINTERFACE( CLASS, BASECLASS, INTERFACES ) \ |
| PRIVATE_DEFINE_XINTERFACE_AQUIRE_RELEASE( CLASS, BASECLASS ) \ |
| PRIVATE_DEFINE_XINTERFACE_QUERYINTERFACE( CLASS, BASECLASS, INTERFACES ) |
| |
| #define PRIVATE_DEFINE_XINTERFACE_LARGE( CLASS, BASECLASS, INTERFACES_FIRST, INTERFACES_SECOND ) \ |
| PRIVATE_DEFINE_XINTERFACE_AQUIRE_RELEASE( CLASS, BASECLASS ) \ |
| PRIVATE_DEFINE_XINTERFACE_QUERYINTERFACE_LARGE( CLASS, BASECLASS, INTERFACES_FIRST, INTERFACES_SECOND ) |
| |
| //***************************************************************************************************************** |
| // private |
| // help macros to replace INTERFACES in queryInterface() [see before] |
| //***************************************************************************************************************** |
| /* |
| #ifdef ENABLE_SERVICEDEBUG |
| #define PRIVATE_DEFINE_INTERFACE_1( INTERFACE1 ) \ |
| static_cast< XSPECIALDEBUGINTERFACE##* >( this ), \ |
| INTERFACE1 |
| #else |
| */ |
| #define PRIVATE_DEFINE_INTERFACE_1( INTERFACE1 ) \ |
| INTERFACE1 |
| //#endif // #ifdef ENABLE_SERVICEDEBUG |
| |
| #define PRIVATE_DEFINE_INTERFACE_2( INTERFACE1, INTERFACE2 ) \ |
| PRIVATE_DEFINE_INTERFACE_1( INTERFACE1 ), \ |
| INTERFACE2 |
| |
| #define PRIVATE_DEFINE_INTERFACE_3( INTERFACE1, INTERFACE2, INTERFACE3 ) \ |
| PRIVATE_DEFINE_INTERFACE_2( INTERFACE1, INTERFACE2 ), \ |
| INTERFACE3 |
| |
| #define PRIVATE_DEFINE_INTERFACE_4( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4 ) \ |
| PRIVATE_DEFINE_INTERFACE_3( INTERFACE1, INTERFACE2, INTERFACE3 ), \ |
| INTERFACE4 |
| |
| #define PRIVATE_DEFINE_INTERFACE_5( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5 ) \ |
| PRIVATE_DEFINE_INTERFACE_4( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4 ), \ |
| INTERFACE5 |
| |
| #define PRIVATE_DEFINE_INTERFACE_6( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6 ) \ |
| PRIVATE_DEFINE_INTERFACE_5( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5 ), \ |
| INTERFACE6 |
| |
| #define PRIVATE_DEFINE_INTERFACE_7( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7 ) \ |
| PRIVATE_DEFINE_INTERFACE_6( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6 ), \ |
| INTERFACE7 |
| |
| #define PRIVATE_DEFINE_INTERFACE_8( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8 ) \ |
| PRIVATE_DEFINE_INTERFACE_7( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7 ), \ |
| INTERFACE8 |
| |
| #define PRIVATE_DEFINE_INTERFACE_9( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9 ) \ |
| PRIVATE_DEFINE_INTERFACE_8( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8 ), \ |
| INTERFACE9 |
| |
| #define PRIVATE_DEFINE_INTERFACE_10( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10 ) \ |
| PRIVATE_DEFINE_INTERFACE_9( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9 ), \ |
| INTERFACE10 |
| |
| #define PRIVATE_DEFINE_INTERFACE_11( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11 ) \ |
| PRIVATE_DEFINE_INTERFACE_10( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10 ), \ |
| INTERFACE11 |
| |
| //***************************************************************************************************************** |
| // public |
| // help macros for follow XInterface definitions |
| //***************************************************************************************************************** |
| |
| // Use it as parameter for DEFINE_XINTERFACE_X(), if you CAN use an interface directly in queryInterface()! |
| #define DIRECT_INTERFACE( INTERFACE ) \ |
| static_cast< INTERFACE* >( this ) |
| |
| // Use it as parameter for DEFINE_XINTERFACE_X(), if you CAN'T use an interface directly in queryInterface()! |
| // (zB at ambigous errors!) |
| #define DERIVED_INTERFACE( BASEINTERFACE, DERIVEDINTERFACE ) \ |
| static_cast< BASEINTERFACE* >( static_cast< DERIVEDINTERFACE* >( this ) ) |
| |
| //***************************************************************************************************************** |
| // public |
| // declaration of XInterface |
| //***************************************************************************************************************** |
| #define FWK_DECLARE_XINTERFACE \ |
| virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw( ::com::sun::star::uno::RuntimeException ); \ |
| virtual void SAL_CALL acquire ( ) throw(); \ |
| virtual void SAL_CALL release ( ) throw(); |
| |
| //***************************************************************************************************************** |
| // public |
| // implementation of XInterface |
| //***************************************************************************************************************** |
| |
| // implementation of XInterface with 0 additional interface for queryInterface() |
| #define DEFINE_XINTERFACE_0( CLASS, BASECLASS ) \ |
| PRIVATE_DEFINE_XINTERFACE_PURE ( CLASS, \ |
| BASECLASS \ |
| ) |
| |
| // implementation of XInterface with 1 additional interface for queryInterface() |
| #define DEFINE_XINTERFACE_1( CLASS, BASECLASS, INTERFACE1 ) \ |
| PRIVATE_DEFINE_XINTERFACE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_1 ( INTERFACE1 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 2 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_2( CLASS, BASECLASS, INTERFACE1, INTERFACE2 ) \ |
| PRIVATE_DEFINE_XINTERFACE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_2 ( INTERFACE1 , \ |
| INTERFACE2 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 3 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_3( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3 ) \ |
| PRIVATE_DEFINE_XINTERFACE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_3 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 4 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_4( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4 ) \ |
| PRIVATE_DEFINE_XINTERFACE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_4 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 5 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_5( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5 ) \ |
| PRIVATE_DEFINE_XINTERFACE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_5 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 6 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_6( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6 ) \ |
| PRIVATE_DEFINE_XINTERFACE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_6 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 7 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_7( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7 ) \ |
| PRIVATE_DEFINE_XINTERFACE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_7 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 , \ |
| INTERFACE7 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 8 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_8( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8 ) \ |
| PRIVATE_DEFINE_XINTERFACE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_8 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 , \ |
| INTERFACE7 , \ |
| INTERFACE8 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 9 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_9( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9 ) \ |
| PRIVATE_DEFINE_XINTERFACE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_9 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 , \ |
| INTERFACE7 , \ |
| INTERFACE8 , \ |
| INTERFACE9 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 10 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_10( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10 ) \ |
| PRIVATE_DEFINE_XINTERFACE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_10 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 , \ |
| INTERFACE7 , \ |
| INTERFACE8 , \ |
| INTERFACE9 , \ |
| INTERFACE10 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 11 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_11( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11 ) \ |
| PRIVATE_DEFINE_XINTERFACE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_11 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 , \ |
| INTERFACE7 , \ |
| INTERFACE8 , \ |
| INTERFACE9 , \ |
| INTERFACE10 , \ |
| INTERFACE11 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 12 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_12( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12 ) \ |
| PRIVATE_DEFINE_XINTERFACE_LARGE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_11 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 , \ |
| INTERFACE7 , \ |
| INTERFACE8 , \ |
| INTERFACE9 , \ |
| INTERFACE10 , \ |
| INTERFACE11 \ |
| ) \ |
| ), \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_1 ( INTERFACE12 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 13 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_13( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13 ) \ |
| PRIVATE_DEFINE_XINTERFACE_LARGE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_11 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 , \ |
| INTERFACE7 , \ |
| INTERFACE8 , \ |
| INTERFACE9 , \ |
| INTERFACE10 , \ |
| INTERFACE11 \ |
| ) \ |
| ), \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_2 ( INTERFACE12 , \ |
| INTERFACE13 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 14 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_14( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13, INTERFACE14 ) \ |
| PRIVATE_DEFINE_XINTERFACE_LARGE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_11 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 , \ |
| INTERFACE7 , \ |
| INTERFACE8 , \ |
| INTERFACE9 , \ |
| INTERFACE10 , \ |
| INTERFACE11 \ |
| ) \ |
| ), \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_3 ( INTERFACE12 , \ |
| INTERFACE13 , \ |
| INTERFACE14 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 15 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_15( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13, INTERFACE14, INTERFACE15 ) \ |
| PRIVATE_DEFINE_XINTERFACE_LARGE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_11 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 , \ |
| INTERFACE7 , \ |
| INTERFACE8 , \ |
| INTERFACE9 , \ |
| INTERFACE10 , \ |
| INTERFACE11 \ |
| ) \ |
| ), \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_4 ( INTERFACE12 , \ |
| INTERFACE13 , \ |
| INTERFACE14 , \ |
| INTERFACE15 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 16 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_16( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13, INTERFACE14, INTERFACE15, INTERFACE16 ) \ |
| PRIVATE_DEFINE_XINTERFACE_LARGE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_11 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 , \ |
| INTERFACE7 , \ |
| INTERFACE8 , \ |
| INTERFACE9 , \ |
| INTERFACE10 , \ |
| INTERFACE11 \ |
| ) \ |
| ), \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_5 ( INTERFACE12 , \ |
| INTERFACE13 , \ |
| INTERFACE14 , \ |
| INTERFACE15 , \ |
| INTERFACE16 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 17 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_17( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13, INTERFACE14, INTERFACE15, INTERFACE16, INTERFACE17 ) \ |
| PRIVATE_DEFINE_XINTERFACE_LARGE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_11 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 , \ |
| INTERFACE7 , \ |
| INTERFACE8 , \ |
| INTERFACE9 , \ |
| INTERFACE10 , \ |
| INTERFACE11 \ |
| ) \ |
| ), \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_6 ( INTERFACE12 , \ |
| INTERFACE13 , \ |
| INTERFACE14 , \ |
| INTERFACE15 , \ |
| INTERFACE16 , \ |
| INTERFACE17 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 18 additional interfaces for queryInterface() |
| #define DEFINE_XINTERFACE_18( CLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13, INTERFACE14, INTERFACE15, INTERFACE16, INTERFACE17, INTERFACE18 ) \ |
| PRIVATE_DEFINE_XINTERFACE_LARGE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_11 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 , \ |
| INTERFACE7 , \ |
| INTERFACE8 , \ |
| INTERFACE9 , \ |
| INTERFACE10 , \ |
| INTERFACE11 \ |
| ) \ |
| ), \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_7 ( INTERFACE12 , \ |
| INTERFACE13 , \ |
| INTERFACE14 , \ |
| INTERFACE15 , \ |
| INTERFACE16 , \ |
| INTERFACE17 , \ |
| INTERFACE18 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 19 additional interfaces for queryInterface() |
| #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 ) \ |
| PRIVATE_DEFINE_XINTERFACE_LARGE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_11 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 , \ |
| INTERFACE7 , \ |
| INTERFACE8 , \ |
| INTERFACE9 , \ |
| INTERFACE10 , \ |
| INTERFACE11 \ |
| ) \ |
| ), \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_8 ( INTERFACE12 , \ |
| INTERFACE13 , \ |
| INTERFACE14 , \ |
| INTERFACE15 , \ |
| INTERFACE16 , \ |
| INTERFACE17 , \ |
| INTERFACE18 , \ |
| INTERFACE19 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 20 additional interfaces for queryInterface() |
| #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 ) \ |
| PRIVATE_DEFINE_XINTERFACE_LARGE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_11 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 , \ |
| INTERFACE7 , \ |
| INTERFACE8 , \ |
| INTERFACE9 , \ |
| INTERFACE10 , \ |
| INTERFACE11 \ |
| ) \ |
| ), \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_9 ( INTERFACE12 , \ |
| INTERFACE13 , \ |
| INTERFACE14 , \ |
| INTERFACE15 , \ |
| INTERFACE16 , \ |
| INTERFACE17 , \ |
| INTERFACE18 , \ |
| INTERFACE19 , \ |
| INTERFACE20 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 21 additional interfaces for queryInterface() |
| #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 ) \ |
| PRIVATE_DEFINE_XINTERFACE_LARGE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_11 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 , \ |
| INTERFACE7 , \ |
| INTERFACE8 , \ |
| INTERFACE9 , \ |
| INTERFACE10 , \ |
| INTERFACE11 \ |
| ) \ |
| ), \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_10 ( INTERFACE12 , \ |
| INTERFACE13 , \ |
| INTERFACE14 , \ |
| INTERFACE15 , \ |
| INTERFACE16 , \ |
| INTERFACE17 , \ |
| INTERFACE18 , \ |
| INTERFACE19 , \ |
| INTERFACE20 , \ |
| INTERFACE21 \ |
| ) \ |
| ) \ |
| ) |
| |
| // implementation of XInterface with 22 additional interfaces for queryInterface() |
| #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 ) \ |
| PRIVATE_DEFINE_XINTERFACE_LARGE ( CLASS, \ |
| BASECLASS, \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_11 ( INTERFACE1 , \ |
| INTERFACE2 , \ |
| INTERFACE3 , \ |
| INTERFACE4 , \ |
| INTERFACE5 , \ |
| INTERFACE6 , \ |
| INTERFACE7 , \ |
| INTERFACE8 , \ |
| INTERFACE9 , \ |
| INTERFACE10 , \ |
| INTERFACE11 \ |
| ) \ |
| ), \ |
| ( aType, PRIVATE_DEFINE_INTERFACE_11 ( INTERFACE12 , \ |
| INTERFACE13 , \ |
| INTERFACE14 , \ |
| INTERFACE15 , \ |
| INTERFACE16 , \ |
| INTERFACE17 , \ |
| INTERFACE18 , \ |
| INTERFACE19 , \ |
| INTERFACE20 , \ |
| INTERFACE22 , \ |
| INTERFACE21 \ |
| ) \ |
| ) \ |
| ) |
| |
| } // namespace framework |
| |
| #endif // #ifndef __FRAMEWORK_MACROS_XINTERFACE_HXX_ |