1f8e07b45SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3f8e07b45SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4f8e07b45SAndrew Rist * or more contributor license agreements. See the NOTICE file 5f8e07b45SAndrew Rist * distributed with this work for additional information 6f8e07b45SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7f8e07b45SAndrew Rist * to you under the Apache License, Version 2.0 (the 8f8e07b45SAndrew Rist * "License"); you may not use this file except in compliance 9f8e07b45SAndrew Rist * with the License. You may obtain a copy of the License at 10f8e07b45SAndrew Rist * 11f8e07b45SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12f8e07b45SAndrew Rist * 13f8e07b45SAndrew Rist * Unless required by applicable law or agreed to in writing, 14f8e07b45SAndrew Rist * software distributed under the License is distributed on an 15f8e07b45SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16f8e07b45SAndrew Rist * KIND, either express or implied. See the License for the 17f8e07b45SAndrew Rist * specific language governing permissions and limitations 18f8e07b45SAndrew Rist * under the License. 19f8e07b45SAndrew Rist * 20f8e07b45SAndrew Rist *************************************************************/ 21f8e07b45SAndrew Rist 22f8e07b45SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef __FRAMEWORK_MACROS_XTYPEPROVIDER_HXX_ 25cdf0e10cSrcweir #define __FRAMEWORK_MACROS_XTYPEPROVIDER_HXX_ 26cdf0e10cSrcweir 27cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 28cdf0e10cSrcweir // my own includes 29cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 30cdf0e10cSrcweir 31cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 32cdf0e10cSrcweir // interface includes 33cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 34cdf0e10cSrcweir 35cdf0e10cSrcweir #include <com/sun/star/lang/XTypeProvider.hpp> 36cdf0e10cSrcweir #include <com/sun/star/uno/RuntimeException.hpp> 37cdf0e10cSrcweir 38cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 39cdf0e10cSrcweir // other includes 40cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 41cdf0e10cSrcweir #include <com/sun/star/uno/Any.hxx> 42cdf0e10cSrcweir #include <com/sun/star/uno/Reference.hxx> 43cdf0e10cSrcweir #include <com/sun/star/uno/Sequence.hxx> 44cdf0e10cSrcweir #include <com/sun/star/uno/Type.hxx> 45cdf0e10cSrcweir #include <cppuhelper/typeprovider.hxx> 46cdf0e10cSrcweir #include <osl/mutex.hxx> 47cdf0e10cSrcweir #include <rtl/ustring.hxx> 48cdf0e10cSrcweir 49cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 50cdf0e10cSrcweir // namespace 51cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 52cdf0e10cSrcweir 53cdf0e10cSrcweir namespace framework{ 54cdf0e10cSrcweir 55cdf0e10cSrcweir /*_________________________________________________________________________________________________________________ 56cdf0e10cSrcweir 57cdf0e10cSrcweir macros for declaration and definition of XTypeProvider 58cdf0e10cSrcweir Please use follow public macros only! 59cdf0e10cSrcweir 60cdf0e10cSrcweir 1) DEFINE_XTYPEPROVIDER => use it in header to declare XTypeProvider and his methods 61cdf0e10cSrcweir 2) DECLARE_TYPEPROVIDER_0( CLASS ) => use it to define implementation of XTypeProvider for 0 supported type 62cdf0e10cSrcweir DECLARE_TYPEPROVIDER_1( CLASS, TYPE1 ) => use it to define implementation of XTypeProvider for 1 supported type 63cdf0e10cSrcweir ... 64cdf0e10cSrcweir DECLARE_TYPEPROVIDER_16( CLASS, TYPE1, ... , TYPE16 ) 65cdf0e10cSrcweir 3) DEFINE_XTYPEPROVIDER_1_WITH_BASECLASS( CLASS, BASECLASS, TYPE1 ) => use it to define implementation of XTypeProvider for 1 additional supported type to baseclass 66cdf0e10cSrcweir ... 67cdf0e10cSrcweir DEFINE_XTYPEPROVIDER_5_WITH_BASECLASS( CLASS, BASECLASS, TYPE1, ..., TYPE5 ) 68cdf0e10cSrcweir 69cdf0e10cSrcweir _________________________________________________________________________________________________________________*/ 70cdf0e10cSrcweir 71cdf0e10cSrcweir //***************************************************************************************************************** 72cdf0e10cSrcweir // private 73cdf0e10cSrcweir // implementation of XTypeProvider::getImplementationId() 74cdf0e10cSrcweir //***************************************************************************************************************** 75cdf0e10cSrcweir #define PRIVATE_DEFINE_XTYPEPROVIDER_GETIMPLEMENTATIONID( CLASS ) \ 76cdf0e10cSrcweir ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL CLASS::getImplementationId() throw( ::com::sun::star::uno::RuntimeException ) \ 77cdf0e10cSrcweir { \ 78cdf0e10cSrcweir /* Create one Id for all instances of this class. */ \ 79cdf0e10cSrcweir /* Use ethernet address to do this! (sal_True) */ \ 80cdf0e10cSrcweir /* Optimize this method */ \ 81cdf0e10cSrcweir /* We initialize a static variable only one time. And we don't must use a mutex at every call! */ \ 82cdf0e10cSrcweir /* For the first call; pID is NULL - for the second call pID is different from NULL! */ \ 83cdf0e10cSrcweir static ::cppu::OImplementationId* pID = NULL ; \ 84cdf0e10cSrcweir if ( pID == NULL ) \ 85cdf0e10cSrcweir { \ 86cdf0e10cSrcweir /* Ready for multithreading; get global mutex for first call of this method only! see before */ \ 87cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); \ 88cdf0e10cSrcweir /* Control these pointer again ... it can be, that another instance will be faster then these! */ \ 89cdf0e10cSrcweir if ( pID == NULL ) \ 90cdf0e10cSrcweir { \ 91cdf0e10cSrcweir /* Create a new static ID ... */ \ 92cdf0e10cSrcweir static ::cppu::OImplementationId aID( sal_False ); \ 93cdf0e10cSrcweir /* ... and set his address to static pointer! */ \ 94cdf0e10cSrcweir pID = &aID ; \ 95cdf0e10cSrcweir } \ 96cdf0e10cSrcweir } \ 97cdf0e10cSrcweir return pID->getImplementationId(); \ 98cdf0e10cSrcweir } 99cdf0e10cSrcweir 100cdf0e10cSrcweir //***************************************************************************************************************** 101cdf0e10cSrcweir // private 102cdf0e10cSrcweir // implementation of XTypeProvider::getTypes() with max. 12 interfaces! 103cdf0e10cSrcweir //***************************************************************************************************************** 104cdf0e10cSrcweir #define PRIVATE_DEFINE_XTYPEPROVIDER_GETTYPES( CLASS, TYPES ) \ 105cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL CLASS::getTypes() throw( ::com::sun::star::uno::RuntimeException ) \ 106cdf0e10cSrcweir { \ 107cdf0e10cSrcweir /* Optimize this method ! */ \ 108cdf0e10cSrcweir /* We initialize a static variable only one time. */ \ 109cdf0e10cSrcweir /* And we don't must use a mutex at every call! */ \ 110cdf0e10cSrcweir /* For the first call; pTypeCollection is NULL - */ \ 111cdf0e10cSrcweir /* for the second call pTypeCollection is different from NULL! */ \ 112cdf0e10cSrcweir static ::cppu::OTypeCollection* pTypeCollection = NULL ; \ 113cdf0e10cSrcweir if ( pTypeCollection == NULL ) \ 114cdf0e10cSrcweir { \ 115cdf0e10cSrcweir /* Ready for multithreading; get global mutex for first call of this method only! see before */ \ 116cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); \ 117cdf0e10cSrcweir /* Control these pointer again ... it can be, that another instance will be faster then these! */ \ 118cdf0e10cSrcweir if ( pTypeCollection == NULL ) \ 119cdf0e10cSrcweir { \ 120cdf0e10cSrcweir /* Create a static typecollection ... */ \ 121cdf0e10cSrcweir /* Attention: "TYPES" will expand to "(...)"! */ \ 122cdf0e10cSrcweir static ::cppu::OTypeCollection aTypeCollection TYPES ; \ 123cdf0e10cSrcweir /* ... and set his address to static pointer! */ \ 124cdf0e10cSrcweir pTypeCollection = &aTypeCollection ; \ 125cdf0e10cSrcweir } \ 126cdf0e10cSrcweir } \ 127cdf0e10cSrcweir return pTypeCollection->getTypes(); \ 128cdf0e10cSrcweir } 129cdf0e10cSrcweir 130cdf0e10cSrcweir //***************************************************************************************************************** 131cdf0e10cSrcweir // private 132cdf0e10cSrcweir // implementation of XTypeProvider::getTypes() with more then 12 interfaces! 133cdf0e10cSrcweir //***************************************************************************************************************** 134cdf0e10cSrcweir #define PRIVATE_DEFINE_XTYPEPROVIDER_GETTYPES_LARGE( CLASS, TYPES_FIRST, TYPES_SECOND ) \ 135cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL CLASS::getTypes() throw( ::com::sun::star::uno::RuntimeException ) \ 136cdf0e10cSrcweir { \ 137cdf0e10cSrcweir /* Optimize this method ! */ \ 138cdf0e10cSrcweir /* We initialize a static variable only one time. */ \ 139cdf0e10cSrcweir /* And we don't must use a mutex at every call! */ \ 140cdf0e10cSrcweir /* For the first call; pTypeCollection is NULL - */ \ 141cdf0e10cSrcweir /* for the second call pTypeCollection is different from NULL! */ \ 142cdf0e10cSrcweir static ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >* pTypeCollection = NULL ; \ 143cdf0e10cSrcweir if ( pTypeCollection == NULL ) \ 144cdf0e10cSrcweir { \ 145cdf0e10cSrcweir /* Ready for multithreading; get global mutex for first call of this method only! see before */ \ 146cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); \ 147cdf0e10cSrcweir /* Control these pointer again ... it can be, that another instance will be faster then these! */ \ 148cdf0e10cSrcweir if ( pTypeCollection == NULL ) \ 149cdf0e10cSrcweir { \ 150cdf0e10cSrcweir /* Create two typecollections */ \ 151cdf0e10cSrcweir /* (cppuhelper support 12 items per collection only!) */ \ 152cdf0e10cSrcweir ::cppu::OTypeCollection aTypeCollection1 TYPES_FIRST ; \ 153cdf0e10cSrcweir ::cppu::OTypeCollection aTypeCollection2 TYPES_SECOND ; \ 154cdf0e10cSrcweir /* Copy all items from both sequences to one result list! */ \ 155cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > seqTypes1 = aTypeCollection1.getTypes(); \ 156cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > seqTypes2 = aTypeCollection2.getTypes(); \ 157cdf0e10cSrcweir sal_Int32 nCount1 = seqTypes1.getLength(); \ 158cdf0e10cSrcweir sal_Int32 nCount2 = seqTypes2.getLength(); \ 159cdf0e10cSrcweir static ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > seqResult ( nCount1+nCount2 ); \ 160cdf0e10cSrcweir sal_Int32 nSource = 0; \ 161cdf0e10cSrcweir sal_Int32 nDestination= 0; \ 162cdf0e10cSrcweir while( nSource<nCount1 ) \ 163cdf0e10cSrcweir { \ 164cdf0e10cSrcweir seqResult[nDestination] = seqTypes1[nSource]; \ 165cdf0e10cSrcweir ++nSource; \ 166cdf0e10cSrcweir ++nDestination; \ 167cdf0e10cSrcweir } \ 168cdf0e10cSrcweir nSource = 0; \ 169cdf0e10cSrcweir while( nSource<nCount2 ) \ 170cdf0e10cSrcweir { \ 171cdf0e10cSrcweir seqResult[nDestination] = seqTypes2[nSource]; \ 172cdf0e10cSrcweir ++nSource; \ 173cdf0e10cSrcweir ++nDestination; \ 174cdf0e10cSrcweir } \ 175cdf0e10cSrcweir /* ... and set his address to static pointer! */ \ 176cdf0e10cSrcweir pTypeCollection = &seqResult; \ 177cdf0e10cSrcweir } \ 178cdf0e10cSrcweir } \ 179cdf0e10cSrcweir return *pTypeCollection; \ 180cdf0e10cSrcweir } 181cdf0e10cSrcweir 182cdf0e10cSrcweir //***************************************************************************************************************** 183cdf0e10cSrcweir // private 184cdf0e10cSrcweir // implementation of XTypeProvider::getTypes() with using max. 12 interfaces + baseclass! 185cdf0e10cSrcweir //***************************************************************************************************************** 186cdf0e10cSrcweir #define PRIVATE_DEFINE_XTYPEPROVIDER_GETTYPES_BASECLASS( CLASS, BASECLASS, TYPES ) \ 187cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL CLASS::getTypes() throw( ::com::sun::star::uno::RuntimeException ) \ 188cdf0e10cSrcweir { \ 189cdf0e10cSrcweir /* Optimize this method ! */ \ 190cdf0e10cSrcweir /* We initialize a static variable only one time. */ \ 191cdf0e10cSrcweir /* And we don't must use a mutex at every call! */ \ 192cdf0e10cSrcweir /* For the first call; pTypeCollection is NULL - */ \ 193cdf0e10cSrcweir /* for the second call pTypeCollection is different from NULL! */ \ 194cdf0e10cSrcweir static ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >* pTypeCollection = NULL ; \ 195cdf0e10cSrcweir if ( pTypeCollection == NULL ) \ 196cdf0e10cSrcweir { \ 197cdf0e10cSrcweir /* Ready for multithreading; get global mutex for first call of this method only! see before */ \ 198cdf0e10cSrcweir ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); \ 199cdf0e10cSrcweir /* Control these pointer again ... it can be, that another instance will be faster then these! */ \ 200cdf0e10cSrcweir if ( pTypeCollection == NULL ) \ 201cdf0e10cSrcweir { \ 202cdf0e10cSrcweir /* Create static typecollection for my own interfaces! */ \ 203cdf0e10cSrcweir static ::cppu::OTypeCollection aTypeCollection TYPES ; \ 204cdf0e10cSrcweir /* Copy all items from my list sequences and from my baseclass */ \ 205cdf0e10cSrcweir /* to one result list! */ \ 206cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > seqTypes1 = aTypeCollection.getTypes(); \ 207cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > seqTypes2 = BASECLASS::getTypes(); \ 208cdf0e10cSrcweir sal_Int32 nCount1 = seqTypes1.getLength(); \ 209cdf0e10cSrcweir sal_Int32 nCount2 = seqTypes2.getLength(); \ 210cdf0e10cSrcweir static ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > seqResult ( nCount1+nCount2 ); \ 211cdf0e10cSrcweir sal_Int32 nSource = 0; \ 212cdf0e10cSrcweir sal_Int32 nDestination= 0; \ 213cdf0e10cSrcweir while( nSource<nCount1 ) \ 214cdf0e10cSrcweir { \ 215cdf0e10cSrcweir seqResult[nDestination] = seqTypes1[nSource]; \ 216cdf0e10cSrcweir ++nSource; \ 217cdf0e10cSrcweir ++nDestination; \ 218cdf0e10cSrcweir } \ 219cdf0e10cSrcweir nSource = 0; \ 220cdf0e10cSrcweir while( nSource<nCount2 ) \ 221cdf0e10cSrcweir { \ 222cdf0e10cSrcweir seqResult[nDestination] = seqTypes2[nSource]; \ 223cdf0e10cSrcweir ++nSource; \ 224cdf0e10cSrcweir ++nDestination; \ 225cdf0e10cSrcweir } \ 226cdf0e10cSrcweir /* ... and set his address to static pointer! */ \ 227cdf0e10cSrcweir pTypeCollection = &seqResult; \ 228cdf0e10cSrcweir } \ 229cdf0e10cSrcweir } \ 230cdf0e10cSrcweir return *pTypeCollection; \ 231cdf0e10cSrcweir } 232cdf0e10cSrcweir 233cdf0e10cSrcweir //***************************************************************************************************************** 234cdf0e10cSrcweir // private 235cdf0e10cSrcweir // help macros to replace TYPES in getTypes() [see before] 236cdf0e10cSrcweir //***************************************************************************************************************** 237cdf0e10cSrcweir #define PRIVATE_DEFINE_TYPE_1( TYPE1 ) \ 238cdf0e10cSrcweir ::getCppuType(( const ::com::sun::star::uno::Reference< TYPE1 >*)NULL ) 239cdf0e10cSrcweir 240cdf0e10cSrcweir #define PRIVATE_DEFINE_TYPE_2( TYPE1, TYPE2 ) \ 241cdf0e10cSrcweir PRIVATE_DEFINE_TYPE_1( TYPE1 ), \ 242cdf0e10cSrcweir ::getCppuType(( const ::com::sun::star::uno::Reference< TYPE2 >*)NULL ) 243cdf0e10cSrcweir 244cdf0e10cSrcweir #define PRIVATE_DEFINE_TYPE_3( TYPE1, TYPE2, TYPE3 ) \ 245cdf0e10cSrcweir PRIVATE_DEFINE_TYPE_2( TYPE1, TYPE2 ), \ 246cdf0e10cSrcweir ::getCppuType(( const ::com::sun::star::uno::Reference< TYPE3 >*)NULL ) 247cdf0e10cSrcweir 248cdf0e10cSrcweir #define PRIVATE_DEFINE_TYPE_4( TYPE1, TYPE2, TYPE3, TYPE4 ) \ 249cdf0e10cSrcweir PRIVATE_DEFINE_TYPE_3( TYPE1, TYPE2, TYPE3 ), \ 250cdf0e10cSrcweir ::getCppuType(( const ::com::sun::star::uno::Reference< TYPE4 >*)NULL ) 251cdf0e10cSrcweir 252cdf0e10cSrcweir #define PRIVATE_DEFINE_TYPE_5( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5 ) \ 253cdf0e10cSrcweir PRIVATE_DEFINE_TYPE_4( TYPE1, TYPE2, TYPE3, TYPE4 ), \ 254cdf0e10cSrcweir ::getCppuType(( const ::com::sun::star::uno::Reference< TYPE5 >*)NULL ) 255cdf0e10cSrcweir 256cdf0e10cSrcweir #define PRIVATE_DEFINE_TYPE_6( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6 ) \ 257cdf0e10cSrcweir PRIVATE_DEFINE_TYPE_5( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5 ), \ 258cdf0e10cSrcweir ::getCppuType(( const ::com::sun::star::uno::Reference< TYPE6 >*)NULL ) 259cdf0e10cSrcweir 260cdf0e10cSrcweir #define PRIVATE_DEFINE_TYPE_7( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7 ) \ 261cdf0e10cSrcweir PRIVATE_DEFINE_TYPE_6( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6 ), \ 262cdf0e10cSrcweir ::getCppuType(( const ::com::sun::star::uno::Reference< TYPE7 >*)NULL ) 263cdf0e10cSrcweir 264cdf0e10cSrcweir #define PRIVATE_DEFINE_TYPE_8( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8 ) \ 265cdf0e10cSrcweir PRIVATE_DEFINE_TYPE_7( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7 ), \ 266cdf0e10cSrcweir ::getCppuType(( const ::com::sun::star::uno::Reference< TYPE8 >*)NULL ) 267cdf0e10cSrcweir 268cdf0e10cSrcweir #define PRIVATE_DEFINE_TYPE_9( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9 ) \ 269cdf0e10cSrcweir PRIVATE_DEFINE_TYPE_8( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8 ), \ 270cdf0e10cSrcweir ::getCppuType(( const ::com::sun::star::uno::Reference< TYPE9 >*)NULL ) 271cdf0e10cSrcweir 272cdf0e10cSrcweir #define PRIVATE_DEFINE_TYPE_10( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10 ) \ 273cdf0e10cSrcweir PRIVATE_DEFINE_TYPE_9( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9 ), \ 274cdf0e10cSrcweir ::getCppuType(( const ::com::sun::star::uno::Reference< TYPE10 >*)NULL ) 275cdf0e10cSrcweir 276cdf0e10cSrcweir #define PRIVATE_DEFINE_TYPE_11( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11 ) \ 277cdf0e10cSrcweir PRIVATE_DEFINE_TYPE_10( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10 ), \ 278cdf0e10cSrcweir ::getCppuType(( const ::com::sun::star::uno::Reference< TYPE11 >*)NULL ) 279cdf0e10cSrcweir 280cdf0e10cSrcweir #define PRIVATE_DEFINE_TYPE_12( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12 ) \ 281cdf0e10cSrcweir PRIVATE_DEFINE_TYPE_11( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11 ), \ 282cdf0e10cSrcweir ::getCppuType(( const ::com::sun::star::uno::Reference< TYPE12 >*)NULL ) 283cdf0e10cSrcweir 284cdf0e10cSrcweir //***************************************************************************************************************** 285cdf0e10cSrcweir // private 286cdf0e10cSrcweir // complete implementation of XTypeProvider 287cdf0e10cSrcweir //***************************************************************************************************************** 288cdf0e10cSrcweir #define PRIVATE_DEFINE_XTYPEPROVIDER_PURE( CLASS ) \ 289cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_GETIMPLEMENTATIONID( CLASS ) \ 290cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_GETTYPES( CLASS, ::getCppuType(( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XTypeProvider >*)NULL ) ) 291cdf0e10cSrcweir 292cdf0e10cSrcweir #define PRIVATE_DEFINE_XTYPEPROVIDER( CLASS, TYPES ) \ 293cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_GETIMPLEMENTATIONID( CLASS ) \ 294cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_GETTYPES( CLASS, TYPES ) 295cdf0e10cSrcweir 296cdf0e10cSrcweir #define PRIVATE_DEFINE_XTYPEPROVIDER_LARGE( CLASS, TYPES_FIRST, TYPES_SECOND ) \ 297cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_GETIMPLEMENTATIONID( CLASS ) \ 298cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_GETTYPES_LARGE( CLASS, TYPES_FIRST, TYPES_SECOND ) 299cdf0e10cSrcweir 300cdf0e10cSrcweir #define PRIVATE_DEFINE_XTYPEPROVIDER_BASECLASS( CLASS, BASECLASS, TYPES ) \ 301cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_GETIMPLEMENTATIONID( CLASS ) \ 302cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_GETTYPES_BASECLASS( CLASS, BASECLASS, TYPES ) 303cdf0e10cSrcweir 304cdf0e10cSrcweir //***************************************************************************************************************** 305cdf0e10cSrcweir // public 306cdf0e10cSrcweir // declaration of XTypeProvider 307cdf0e10cSrcweir //***************************************************************************************************************** 308cdf0e10cSrcweir #define FWK_DECLARE_XTYPEPROVIDER \ 309cdf0e10cSrcweir virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes () throw( ::com::sun::star::uno::RuntimeException );\ 310cdf0e10cSrcweir virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw( ::com::sun::star::uno::RuntimeException ); 311cdf0e10cSrcweir 312cdf0e10cSrcweir //***************************************************************************************************************** 313cdf0e10cSrcweir // public 314cdf0e10cSrcweir // implementation of XTypeProvider 315cdf0e10cSrcweir //***************************************************************************************************************** 316cdf0e10cSrcweir // implementation of XTypeProvider without additional interface for getTypes() 317*07a3d7f1SPedro Giffuni // XTypeProvider is used as the only one interface automatically. 318*07a3d7f1SPedro Giffuni // Following defines don't use XTypeProvider automatically!!!! 319cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_0( CLASS ) \ 320cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_PURE( CLASS ) 321cdf0e10cSrcweir 322cdf0e10cSrcweir // implementation of XTypeProvider with 1 additional interface for getTypes() 323cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_1( CLASS, TYPE1 ) \ 324cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER ( CLASS, \ 325cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_1 ( TYPE1 \ 326cdf0e10cSrcweir )) \ 327cdf0e10cSrcweir ) 328cdf0e10cSrcweir 329cdf0e10cSrcweir // implementation of XTypeProvider with 2 additional interfaces for getTypes() 330cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_2( CLASS, TYPE1, TYPE2 ) \ 331cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER ( CLASS, \ 332cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_2 ( TYPE1 , \ 333cdf0e10cSrcweir TYPE2 \ 334cdf0e10cSrcweir )) \ 335cdf0e10cSrcweir ) 336cdf0e10cSrcweir 337cdf0e10cSrcweir // implementation of XTypeProvider with 3 additional interfaces for getTypes() 338cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_3( CLASS, TYPE1, TYPE2, TYPE3 ) \ 339cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER ( CLASS, \ 340cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_3 ( TYPE1 , \ 341cdf0e10cSrcweir TYPE2 , \ 342cdf0e10cSrcweir TYPE3 \ 343cdf0e10cSrcweir )) \ 344cdf0e10cSrcweir ) 345cdf0e10cSrcweir 346cdf0e10cSrcweir // implementation of XTypeProvider with 4 additional interfaces for getTypes() 347cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_4( CLASS, TYPE1, TYPE2, TYPE3, TYPE4 ) \ 348cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER ( CLASS, \ 349cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_4 ( TYPE1 , \ 350cdf0e10cSrcweir TYPE2 , \ 351cdf0e10cSrcweir TYPE3 , \ 352cdf0e10cSrcweir TYPE4 \ 353cdf0e10cSrcweir )) \ 354cdf0e10cSrcweir ) 355cdf0e10cSrcweir 356cdf0e10cSrcweir // implementation of XTypeProvider with 5 additional interfaces for getTypes() 357cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_5( CLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5 ) \ 358cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER ( CLASS, \ 359cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_5 ( TYPE1 , \ 360cdf0e10cSrcweir TYPE2 , \ 361cdf0e10cSrcweir TYPE3 , \ 362cdf0e10cSrcweir TYPE4 , \ 363cdf0e10cSrcweir TYPE5 \ 364cdf0e10cSrcweir )) \ 365cdf0e10cSrcweir ) 366cdf0e10cSrcweir 367cdf0e10cSrcweir // implementation of XTypeProvider with 6 additional interfaces for getTypes() 368cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_6( CLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6 ) \ 369cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER ( CLASS, \ 370cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_6 ( TYPE1 , \ 371cdf0e10cSrcweir TYPE2 , \ 372cdf0e10cSrcweir TYPE3 , \ 373cdf0e10cSrcweir TYPE4 , \ 374cdf0e10cSrcweir TYPE5 , \ 375cdf0e10cSrcweir TYPE6 \ 376cdf0e10cSrcweir )) \ 377cdf0e10cSrcweir ) 378cdf0e10cSrcweir 379cdf0e10cSrcweir // implementation of XTypeProvider with 7 additional interfaces for getTypes() 380cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_7( CLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7 ) \ 381cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER ( CLASS, \ 382cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_7 ( TYPE1 , \ 383cdf0e10cSrcweir TYPE2 , \ 384cdf0e10cSrcweir TYPE3 , \ 385cdf0e10cSrcweir TYPE4 , \ 386cdf0e10cSrcweir TYPE5 , \ 387cdf0e10cSrcweir TYPE6 , \ 388cdf0e10cSrcweir TYPE7 \ 389cdf0e10cSrcweir )) \ 390cdf0e10cSrcweir ) 391cdf0e10cSrcweir 392cdf0e10cSrcweir // implementation of XTypeProvider with 8 additional interfaces for getTypes() 393cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_8( CLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8 ) \ 394cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER ( CLASS, \ 395cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_8 ( TYPE1 , \ 396cdf0e10cSrcweir TYPE2 , \ 397cdf0e10cSrcweir TYPE3 , \ 398cdf0e10cSrcweir TYPE4 , \ 399cdf0e10cSrcweir TYPE5 , \ 400cdf0e10cSrcweir TYPE6 , \ 401cdf0e10cSrcweir TYPE7 , \ 402cdf0e10cSrcweir TYPE8 \ 403cdf0e10cSrcweir )) \ 404cdf0e10cSrcweir ) 405cdf0e10cSrcweir 406cdf0e10cSrcweir // implementation of XTypeProvider with 9 additional interfaces for getTypes() 407cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_9( CLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9 ) \ 408cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER ( CLASS, \ 409cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_9 ( TYPE1 , \ 410cdf0e10cSrcweir TYPE2 , \ 411cdf0e10cSrcweir TYPE3 , \ 412cdf0e10cSrcweir TYPE4 , \ 413cdf0e10cSrcweir TYPE5 , \ 414cdf0e10cSrcweir TYPE6 , \ 415cdf0e10cSrcweir TYPE7 , \ 416cdf0e10cSrcweir TYPE8 , \ 417cdf0e10cSrcweir TYPE9 \ 418cdf0e10cSrcweir )) \ 419cdf0e10cSrcweir ) 420cdf0e10cSrcweir 421cdf0e10cSrcweir // implementation of XTypeProvider with 10 additional interfaces for getTypes() 422cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_10( CLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10 ) \ 423cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER ( CLASS, \ 424cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_10 ( TYPE1 , \ 425cdf0e10cSrcweir TYPE2 , \ 426cdf0e10cSrcweir TYPE3 , \ 427cdf0e10cSrcweir TYPE4 , \ 428cdf0e10cSrcweir TYPE5 , \ 429cdf0e10cSrcweir TYPE6 , \ 430cdf0e10cSrcweir TYPE7 , \ 431cdf0e10cSrcweir TYPE8 , \ 432cdf0e10cSrcweir TYPE9 , \ 433cdf0e10cSrcweir TYPE10 \ 434cdf0e10cSrcweir )) \ 435cdf0e10cSrcweir ) 436cdf0e10cSrcweir 437cdf0e10cSrcweir // implementation of XTypeProvider with 11 additional interfaces for getTypes() 438cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_11( CLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11 ) \ 439cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER ( CLASS, \ 440cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_11 ( TYPE1 , \ 441cdf0e10cSrcweir TYPE2 , \ 442cdf0e10cSrcweir TYPE3 , \ 443cdf0e10cSrcweir TYPE4 , \ 444cdf0e10cSrcweir TYPE5 , \ 445cdf0e10cSrcweir TYPE6 , \ 446cdf0e10cSrcweir TYPE7 , \ 447cdf0e10cSrcweir TYPE8 , \ 448cdf0e10cSrcweir TYPE9 , \ 449cdf0e10cSrcweir TYPE10 , \ 450cdf0e10cSrcweir TYPE11 \ 451cdf0e10cSrcweir )) \ 452cdf0e10cSrcweir ) 453cdf0e10cSrcweir 454cdf0e10cSrcweir // implementation of XTypeProvider with 12 additional interfaces for getTypes() 455cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_12( CLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12 ) \ 456cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER ( CLASS, \ 457cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_12 ( TYPE1 , \ 458cdf0e10cSrcweir TYPE2 , \ 459cdf0e10cSrcweir TYPE3 , \ 460cdf0e10cSrcweir TYPE4 , \ 461cdf0e10cSrcweir TYPE5 , \ 462cdf0e10cSrcweir TYPE6 , \ 463cdf0e10cSrcweir TYPE7 , \ 464cdf0e10cSrcweir TYPE8 , \ 465cdf0e10cSrcweir TYPE9 , \ 466cdf0e10cSrcweir TYPE10 , \ 467cdf0e10cSrcweir TYPE11 , \ 468cdf0e10cSrcweir TYPE12 \ 469cdf0e10cSrcweir )) \ 470cdf0e10cSrcweir ) 471cdf0e10cSrcweir 472cdf0e10cSrcweir // implementation of XTypeProvider with 13 additional interfaces for getTypes() 473cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_13( CLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12, TYPE13 ) \ 474cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_LARGE ( CLASS, \ 475cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_12 ( TYPE1 , \ 476cdf0e10cSrcweir TYPE2 , \ 477cdf0e10cSrcweir TYPE3 , \ 478cdf0e10cSrcweir TYPE4 , \ 479cdf0e10cSrcweir TYPE5 , \ 480cdf0e10cSrcweir TYPE6 , \ 481cdf0e10cSrcweir TYPE7 , \ 482cdf0e10cSrcweir TYPE8 , \ 483cdf0e10cSrcweir TYPE9 , \ 484cdf0e10cSrcweir TYPE10 , \ 485cdf0e10cSrcweir TYPE11 , \ 486cdf0e10cSrcweir TYPE12 \ 487cdf0e10cSrcweir )), \ 488cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_1 ( TYPE13 \ 489cdf0e10cSrcweir )) \ 490cdf0e10cSrcweir ) 491cdf0e10cSrcweir 492cdf0e10cSrcweir // implementation of XTypeProvider with 14 additional interfaces for getTypes() 493cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_14( CLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12, TYPE13, TYPE14 ) \ 494cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_LARGE ( CLASS, \ 495cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_12 ( TYPE1 , \ 496cdf0e10cSrcweir TYPE2 , \ 497cdf0e10cSrcweir TYPE3 , \ 498cdf0e10cSrcweir TYPE4 , \ 499cdf0e10cSrcweir TYPE5 , \ 500cdf0e10cSrcweir TYPE6 , \ 501cdf0e10cSrcweir TYPE7 , \ 502cdf0e10cSrcweir TYPE8 , \ 503cdf0e10cSrcweir TYPE9 , \ 504cdf0e10cSrcweir TYPE10 , \ 505cdf0e10cSrcweir TYPE11 , \ 506cdf0e10cSrcweir TYPE12 \ 507cdf0e10cSrcweir )), \ 508cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_2 ( TYPE13 , \ 509cdf0e10cSrcweir TYPE14 \ 510cdf0e10cSrcweir )) \ 511cdf0e10cSrcweir ) 512cdf0e10cSrcweir 513cdf0e10cSrcweir // implementation of XTypeProvider with 15 additional interfaces for getTypes() 514cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_15( CLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12, TYPE13, TYPE14, TYPE15 ) \ 515cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_LARGE ( CLASS, \ 516cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_12 ( TYPE1 , \ 517cdf0e10cSrcweir TYPE2 , \ 518cdf0e10cSrcweir TYPE3 , \ 519cdf0e10cSrcweir TYPE4 , \ 520cdf0e10cSrcweir TYPE5 , \ 521cdf0e10cSrcweir TYPE6 , \ 522cdf0e10cSrcweir TYPE7 , \ 523cdf0e10cSrcweir TYPE8 , \ 524cdf0e10cSrcweir TYPE9 , \ 525cdf0e10cSrcweir TYPE10 , \ 526cdf0e10cSrcweir TYPE11 , \ 527cdf0e10cSrcweir TYPE12 \ 528cdf0e10cSrcweir )), \ 529cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_3 ( TYPE13 , \ 530cdf0e10cSrcweir TYPE14 , \ 531cdf0e10cSrcweir TYPE15 \ 532cdf0e10cSrcweir )) \ 533cdf0e10cSrcweir ) 534cdf0e10cSrcweir 535cdf0e10cSrcweir // implementation of XTypeProvider with 16 additional interfaces for getTypes() 536cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_16( CLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12, TYPE13, TYPE14, TYPE15, TYPE16 ) \ 537cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_LARGE ( CLASS, \ 538cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_12 ( TYPE1 , \ 539cdf0e10cSrcweir TYPE2 , \ 540cdf0e10cSrcweir TYPE3 , \ 541cdf0e10cSrcweir TYPE4 , \ 542cdf0e10cSrcweir TYPE5 , \ 543cdf0e10cSrcweir TYPE6 , \ 544cdf0e10cSrcweir TYPE7 , \ 545cdf0e10cSrcweir TYPE8 , \ 546cdf0e10cSrcweir TYPE9 , \ 547cdf0e10cSrcweir TYPE10 , \ 548cdf0e10cSrcweir TYPE11 , \ 549cdf0e10cSrcweir TYPE12 \ 550cdf0e10cSrcweir )), \ 551cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_4 ( TYPE13 , \ 552cdf0e10cSrcweir TYPE14 , \ 553cdf0e10cSrcweir TYPE15 , \ 554cdf0e10cSrcweir TYPE16 \ 555cdf0e10cSrcweir )) \ 556cdf0e10cSrcweir ) 557cdf0e10cSrcweir 558cdf0e10cSrcweir // implementation of XTypeProvider with 17 additional interfaces for getTypes() 559cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_17( CLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12, TYPE13, TYPE14, TYPE15, TYPE16, TYPE17 ) \ 560cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_LARGE ( CLASS, \ 561cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_12 ( TYPE1 , \ 562cdf0e10cSrcweir TYPE2 , \ 563cdf0e10cSrcweir TYPE3 , \ 564cdf0e10cSrcweir TYPE4 , \ 565cdf0e10cSrcweir TYPE5 , \ 566cdf0e10cSrcweir TYPE6 , \ 567cdf0e10cSrcweir TYPE7 , \ 568cdf0e10cSrcweir TYPE8 , \ 569cdf0e10cSrcweir TYPE9 , \ 570cdf0e10cSrcweir TYPE10 , \ 571cdf0e10cSrcweir TYPE11 , \ 572cdf0e10cSrcweir TYPE12 \ 573cdf0e10cSrcweir )), \ 574cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_5 ( TYPE13 , \ 575cdf0e10cSrcweir TYPE14 , \ 576cdf0e10cSrcweir TYPE15 , \ 577cdf0e10cSrcweir TYPE16 , \ 578cdf0e10cSrcweir TYPE17 \ 579cdf0e10cSrcweir )) \ 580cdf0e10cSrcweir ) 581cdf0e10cSrcweir 582cdf0e10cSrcweir // implementation of XTypeProvider with 18 additional interfaces for getTypes() 583cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_18( CLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12, TYPE13, TYPE14, TYPE15, TYPE16, TYPE17, TYPE18 ) \ 584cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_LARGE ( CLASS, \ 585cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_12 ( TYPE1 , \ 586cdf0e10cSrcweir TYPE2 , \ 587cdf0e10cSrcweir TYPE3 , \ 588cdf0e10cSrcweir TYPE4 , \ 589cdf0e10cSrcweir TYPE5 , \ 590cdf0e10cSrcweir TYPE6 , \ 591cdf0e10cSrcweir TYPE7 , \ 592cdf0e10cSrcweir TYPE8 , \ 593cdf0e10cSrcweir TYPE9 , \ 594cdf0e10cSrcweir TYPE10 , \ 595cdf0e10cSrcweir TYPE11 , \ 596cdf0e10cSrcweir TYPE12 \ 597cdf0e10cSrcweir )), \ 598cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_6 ( TYPE13 , \ 599cdf0e10cSrcweir TYPE14 , \ 600cdf0e10cSrcweir TYPE15 , \ 601cdf0e10cSrcweir TYPE16 , \ 602cdf0e10cSrcweir TYPE17 , \ 603cdf0e10cSrcweir TYPE18 \ 604cdf0e10cSrcweir )) \ 605cdf0e10cSrcweir ) 606cdf0e10cSrcweir 607cdf0e10cSrcweir // implementation of XTypeProvider with 19 additional interfaces for getTypes() 608cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_19( CLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12, TYPE13, TYPE14, TYPE15, TYPE16, TYPE17, TYPE18, TYPE19 ) \ 609cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_LARGE ( CLASS, \ 610cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_12 ( TYPE1 , \ 611cdf0e10cSrcweir TYPE2 , \ 612cdf0e10cSrcweir TYPE3 , \ 613cdf0e10cSrcweir TYPE4 , \ 614cdf0e10cSrcweir TYPE5 , \ 615cdf0e10cSrcweir TYPE6 , \ 616cdf0e10cSrcweir TYPE7 , \ 617cdf0e10cSrcweir TYPE8 , \ 618cdf0e10cSrcweir TYPE9 , \ 619cdf0e10cSrcweir TYPE10 , \ 620cdf0e10cSrcweir TYPE11 , \ 621cdf0e10cSrcweir TYPE12 \ 622cdf0e10cSrcweir )), \ 623cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_7 ( TYPE13 , \ 624cdf0e10cSrcweir TYPE14 , \ 625cdf0e10cSrcweir TYPE15 , \ 626cdf0e10cSrcweir TYPE16 , \ 627cdf0e10cSrcweir TYPE17 , \ 628cdf0e10cSrcweir TYPE18 , \ 629cdf0e10cSrcweir TYPE19 \ 630cdf0e10cSrcweir )) \ 631cdf0e10cSrcweir ) 632cdf0e10cSrcweir 633cdf0e10cSrcweir // implementation of XTypeProvider with 20 additional interfaces for getTypes() 634cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_20( CLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12, TYPE13, TYPE14, TYPE15, TYPE16, TYPE17, TYPE18, TYPE19, TYPE20 ) \ 635cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_LARGE ( CLASS, \ 636cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_12 ( TYPE1 , \ 637cdf0e10cSrcweir TYPE2 , \ 638cdf0e10cSrcweir TYPE3 , \ 639cdf0e10cSrcweir TYPE4 , \ 640cdf0e10cSrcweir TYPE5 , \ 641cdf0e10cSrcweir TYPE6 , \ 642cdf0e10cSrcweir TYPE7 , \ 643cdf0e10cSrcweir TYPE8 , \ 644cdf0e10cSrcweir TYPE9 , \ 645cdf0e10cSrcweir TYPE10 , \ 646cdf0e10cSrcweir TYPE11 , \ 647cdf0e10cSrcweir TYPE12 \ 648cdf0e10cSrcweir )), \ 649cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_8 ( TYPE13 , \ 650cdf0e10cSrcweir TYPE14 , \ 651cdf0e10cSrcweir TYPE15 , \ 652cdf0e10cSrcweir TYPE16 , \ 653cdf0e10cSrcweir TYPE17 , \ 654cdf0e10cSrcweir TYPE18 , \ 655cdf0e10cSrcweir TYPE19 , \ 656cdf0e10cSrcweir TYPE20 \ 657cdf0e10cSrcweir )) \ 658cdf0e10cSrcweir ) 659cdf0e10cSrcweir 660cdf0e10cSrcweir // implementation of XTypeProvider with 1 additional interface for getTypes() AND using 1 baseclass 661cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_1_WITH_BASECLASS( CLASS, BASECLASS, TYPE1 ) \ 662cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_BASECLASS ( CLASS, \ 663cdf0e10cSrcweir BASECLASS, \ 664cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_1 ( TYPE1 \ 665cdf0e10cSrcweir )) \ 666cdf0e10cSrcweir ) 667cdf0e10cSrcweir 668cdf0e10cSrcweir // implementation of XTypeProvider with 2 additional interface for getTypes() AND using 1 baseclass 669cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_2_WITH_BASECLASS( CLASS, BASECLASS, TYPE1, TYPE2 ) \ 670cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_BASECLASS ( CLASS, \ 671cdf0e10cSrcweir BASECLASS, \ 672cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_2 ( TYPE1 , \ 673cdf0e10cSrcweir TYPE2 \ 674cdf0e10cSrcweir )) \ 675cdf0e10cSrcweir ) 676cdf0e10cSrcweir 677cdf0e10cSrcweir // implementation of XTypeProvider with 3 additional interface for getTypes() AND using 1 baseclass 678cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_3_WITH_BASECLASS( CLASS, BASECLASS, TYPE1, TYPE2, TYPE3 ) \ 679cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_BASECLASS ( CLASS, \ 680cdf0e10cSrcweir BASECLASS, \ 681cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_3 ( TYPE1 , \ 682cdf0e10cSrcweir TYPE2 , \ 683cdf0e10cSrcweir TYPE3 \ 684cdf0e10cSrcweir )) \ 685cdf0e10cSrcweir ) 686cdf0e10cSrcweir // implementation of XTypeProvider with 4 additional interface for getTypes() AND using 1 baseclass 687cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_4_WITH_BASECLASS( CLASS, BASECLASS, TYPE1, TYPE2, TYPE3, TYPE4 ) \ 688cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_BASECLASS ( CLASS, \ 689cdf0e10cSrcweir BASECLASS, \ 690cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_4 ( TYPE1 , \ 691cdf0e10cSrcweir TYPE2 , \ 692cdf0e10cSrcweir TYPE3 , \ 693cdf0e10cSrcweir TYPE4 \ 694cdf0e10cSrcweir )) \ 695cdf0e10cSrcweir ) 696cdf0e10cSrcweir // implementation of XTypeProvider with 5 additional interface for getTypes() AND using 1 baseclass 697cdf0e10cSrcweir #define DEFINE_XTYPEPROVIDER_5_WITH_BASECLASS( CLASS, BASECLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5 ) \ 698cdf0e10cSrcweir PRIVATE_DEFINE_XTYPEPROVIDER_BASECLASS ( CLASS, \ 699cdf0e10cSrcweir BASECLASS, \ 700cdf0e10cSrcweir (PRIVATE_DEFINE_TYPE_5 ( TYPE1 , \ 701cdf0e10cSrcweir TYPE2 , \ 702cdf0e10cSrcweir TYPE3 , \ 703cdf0e10cSrcweir TYPE4 , \ 704cdf0e10cSrcweir TYPE5 \ 705cdf0e10cSrcweir )) \ 706cdf0e10cSrcweir ) 707cdf0e10cSrcweir 708cdf0e10cSrcweir } // namespace framework 709cdf0e10cSrcweir 710cdf0e10cSrcweir #endif // #ifndef __FRAMEWORK_MACROS_XTYPEPROVIDER_HXX_ 711