1*353d8f4dSAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*353d8f4dSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*353d8f4dSAndrew Rist * or more contributor license agreements. See the NOTICE file
5*353d8f4dSAndrew Rist * distributed with this work for additional information
6*353d8f4dSAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*353d8f4dSAndrew Rist * to you under the Apache License, Version 2.0 (the
8*353d8f4dSAndrew Rist * "License"); you may not use this file except in compliance
9*353d8f4dSAndrew Rist * with the License. You may obtain a copy of the License at
10*353d8f4dSAndrew Rist *
11*353d8f4dSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*353d8f4dSAndrew Rist *
13*353d8f4dSAndrew Rist * Unless required by applicable law or agreed to in writing,
14*353d8f4dSAndrew Rist * software distributed under the License is distributed on an
15*353d8f4dSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*353d8f4dSAndrew Rist * KIND, either express or implied. See the License for the
17*353d8f4dSAndrew Rist * specific language governing permissions and limitations
18*353d8f4dSAndrew Rist * under the License.
19*353d8f4dSAndrew Rist *
20*353d8f4dSAndrew Rist *************************************************************/
21*353d8f4dSAndrew Rist
22*353d8f4dSAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir #ifndef _SFX_SFXUNO_HXX
25cdf0e10cSrcweir #define _SFX_SFXUNO_HXX
26cdf0e10cSrcweir
27cdf0e10cSrcweir #include "sal/config.h"
28cdf0e10cSrcweir #include "sfx2/dllapi.h"
29cdf0e10cSrcweir #include <com/sun/star/uno/Exception.hpp>
30cdf0e10cSrcweir #include <com/sun/star/beans/PropertyValue.hpp>
31cdf0e10cSrcweir #include <com/sun/star/util/URL.hpp>
32cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp>
33cdf0e10cSrcweir #include <com/sun/star/lang/XSingleServiceFactory.hpp>
34cdf0e10cSrcweir #include <com/sun/star/lang/XTypeProvider.hpp>
35cdf0e10cSrcweir #include <com/sun/star/task/ErrorCodeIOException.hpp>
36cdf0e10cSrcweir #include <com/sun/star/beans/NamedValue.hpp>
37cdf0e10cSrcweir
38cdf0e10cSrcweir
39cdf0e10cSrcweir //________________________________________________________________________________________________________________________
40cdf0e10cSrcweir // fix uno header
41cdf0e10cSrcweir //________________________________________________________________________________________________________________________
42cdf0e10cSrcweir #include <com/sun/star/uno/Type.h>
43cdf0e10cSrcweir #include <com/sun/star/uno/Any.h>
44cdf0e10cSrcweir #include <com/sun/star/uno/Reference.h>
45cdf0e10cSrcweir #include <com/sun/star/uno/Sequence.hxx>
46cdf0e10cSrcweir #include <cppuhelper/typeprovider.hxx>
47cdf0e10cSrcweir #include <cppuhelper/queryinterface.hxx>
48cdf0e10cSrcweir #include <cppuhelper/factory.hxx>
49cdf0e10cSrcweir
50cdf0e10cSrcweir //________________________________________________________________________________________________________________________
51cdf0e10cSrcweir // something else ... header
52cdf0e10cSrcweir //________________________________________________________________________________________________________________________
53cdf0e10cSrcweir #include <osl/mutex.hxx>
54cdf0e10cSrcweir
55cdf0e10cSrcweir #ifndef _RTL_USTRING_HXX
56cdf0e10cSrcweir #include <rtl/ustring.hxx>
57cdf0e10cSrcweir #endif
58cdf0e10cSrcweir
59cdf0e10cSrcweir //________________________________________________________________________________________________________________________
60cdf0e10cSrcweir // defines for namespaces !
61cdf0e10cSrcweir //________________________________________________________________________________________________________________________
62cdf0e10cSrcweir
63cdf0e10cSrcweir #define UNOANY ::com::sun::star::uno::Any
64cdf0e10cSrcweir #define UNOEXCEPTION ::com::sun::star::uno::Exception
65cdf0e10cSrcweir #define UNOMUTEX ::osl::Mutex
66cdf0e10cSrcweir #define UNOMUTEXGUARD ::osl::MutexGuard
67cdf0e10cSrcweir #define UNOOIMPLEMENTATIONID ::cppu::OImplementationId
68cdf0e10cSrcweir #define UNOOTYPECOLLECTION ::cppu::OTypeCollection
69cdf0e10cSrcweir #define UNOOUSTRING ::rtl::OUString
70cdf0e10cSrcweir #define UNOPROPERTYVALUE ::com::sun::star::beans::PropertyValue
71cdf0e10cSrcweir #define UNOREFERENCE ::com::sun::star::uno::Reference
72cdf0e10cSrcweir #define UNORUNTIMEEXCEPTION ::com::sun::star::uno::RuntimeException
73cdf0e10cSrcweir #define UNOSEQUENCE ::com::sun::star::uno::Sequence
74cdf0e10cSrcweir #define UNOTYPE ::com::sun::star::uno::Type
75cdf0e10cSrcweir #define UNOURL ::com::sun::star::util::URL
76cdf0e10cSrcweir #define UNOXINTERFACE ::com::sun::star::uno::XInterface
77cdf0e10cSrcweir #define UNOXMULTISERVICEFACTORY ::com::sun::star::lang::XMultiServiceFactory
78cdf0e10cSrcweir #define UNOXSINGLESERVICEFACTORY ::com::sun::star::lang::XSingleServiceFactory
79cdf0e10cSrcweir #define UNOXTYPEPROVIDER ::com::sun::star::lang::XTypeProvider
80cdf0e10cSrcweir
81cdf0e10cSrcweir //________________________________________________________________________________________________________________________
82cdf0e10cSrcweir // declarations and defines for sfx
83cdf0e10cSrcweir //________________________________________________________________________________________________________________________
84cdf0e10cSrcweir
operator ==(const UNOURL & aURL1,const UNOURL & aURL2)85cdf0e10cSrcweir inline sal_Bool operator==( const UNOURL& aURL1, const UNOURL& aURL2 )
86cdf0e10cSrcweir {
87cdf0e10cSrcweir return aURL1.Complete == aURL2.Complete;
88cdf0e10cSrcweir }
89cdf0e10cSrcweir
90cdf0e10cSrcweir class SfxAllItemSet ;
91cdf0e10cSrcweir class SfxItemSet ;
92cdf0e10cSrcweir class SfxSlot ;
93cdf0e10cSrcweir
94cdf0e10cSrcweir SFX2_DLLPUBLIC void TransformParameters( sal_uInt16 nSlotId ,
95cdf0e10cSrcweir const UNOSEQUENCE< UNOPROPERTYVALUE >& seqArgs ,
96cdf0e10cSrcweir SfxAllItemSet& aSet ,
97cdf0e10cSrcweir const SfxSlot* pSlot = 0 );
98cdf0e10cSrcweir
99cdf0e10cSrcweir SFX2_DLLPUBLIC void TransformItems( sal_uInt16 nSlotId ,
100cdf0e10cSrcweir const SfxItemSet& aSet ,
101cdf0e10cSrcweir UNOSEQUENCE< UNOPROPERTYVALUE >& seqArgs ,
102cdf0e10cSrcweir const SfxSlot* pSlot = 0 );
103cdf0e10cSrcweir
104cdf0e10cSrcweir bool GetEncryptionData_Impl( const SfxItemSet* pSet, ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& aEncryptionData );
105cdf0e10cSrcweir
106cdf0e10cSrcweir #define FrameSearchFlags sal_Int32
107cdf0e10cSrcweir
108cdf0e10cSrcweir // Macro to define const unicode a'la "..."
109cdf0e10cSrcweir // It's better then "OUString::createFromAscii(...)" !!!
110cdf0e10cSrcweir #define DEFINE_CONST_UNICODE(CONSTASCII) UniString(RTL_CONSTASCII_USTRINGPARAM(CONSTASCII))
111cdf0e10cSrcweir #define DEFINE_CONST_OUSTRING(CONSTASCII) ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(CONSTASCII))
112cdf0e10cSrcweir
113cdf0e10cSrcweir //________________________________________________________________________________________________________________________
114cdf0e10cSrcweir // macros for declaration and definition of uno-services
115cdf0e10cSrcweir //________________________________________________________________________________________________________________________
116cdf0e10cSrcweir
117cdf0e10cSrcweir //************************************************************************************************************************
118cdf0e10cSrcweir // declaration of XInterface::queryInterface()
119cdf0e10cSrcweir // XInterface::aquire()
120cdf0e10cSrcweir // XInterface::release()
121cdf0e10cSrcweir // XTypeProvider::getTypes()
122cdf0e10cSrcweir // XTypeProvider::getImplementationId()
123cdf0e10cSrcweir //************************************************************************************************************************
124cdf0e10cSrcweir #define SFX_DECL_XINTERFACE \
125cdf0e10cSrcweir virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw( ::com::sun::star::uno::RuntimeException ); \
126cdf0e10cSrcweir virtual void SAL_CALL acquire() throw(); \
127cdf0e10cSrcweir virtual void SAL_CALL release() throw();
128cdf0e10cSrcweir
129cdf0e10cSrcweir #define SFX_DECL_XTYPEPROVIDER \
130cdf0e10cSrcweir /* XTypeProvider */ \
131cdf0e10cSrcweir virtual UNOSEQUENCE< UNOTYPE > SAL_CALL getTypes() throw( UNORUNTIMEEXCEPTION ); \
132cdf0e10cSrcweir virtual UNOSEQUENCE< sal_Int8 > SAL_CALL getImplementationId() throw( UNORUNTIMEEXCEPTION );
133cdf0e10cSrcweir
134cdf0e10cSrcweir #define SFX_DECL_XINTERFACE_XTYPEPROVIDER \
135cdf0e10cSrcweir SFX_DECL_XINTERFACE \
136cdf0e10cSrcweir SFX_DECL_XTYPEPROVIDER
137cdf0e10cSrcweir //************************************************************************************************************************
138cdf0e10cSrcweir // declaration of XInterface::queryInterface()
139cdf0e10cSrcweir // XInterface::aquire()
140cdf0e10cSrcweir // XInterface::release()
141cdf0e10cSrcweir // XTypeProvider::getTypes()
142cdf0e10cSrcweir // XTypeProvider::getImplementationId()
143cdf0e10cSrcweir // XServiceInfo::getImplementationName()
144cdf0e10cSrcweir // XServiceInfo::supportsService()
145cdf0e10cSrcweir // XServiceInfo::getSupportedServiceNames()
146cdf0e10cSrcweir // static xxx::impl_getStaticSupportedServiceNames()
147cdf0e10cSrcweir // static xxx::impl_getStaticImplementationName()
148cdf0e10cSrcweir // static xxx::impl_createInstance()
149cdf0e10cSrcweir // static xxx::impl_createFactory()
150cdf0e10cSrcweir //************************************************************************************************************************
151cdf0e10cSrcweir #define SFX_DECL_XSERVICEINFO \
152cdf0e10cSrcweir /* XServiceInfo */ \
153cdf0e10cSrcweir virtual UNOOUSTRING SAL_CALL getImplementationName() throw( UNORUNTIMEEXCEPTION ); \
154cdf0e10cSrcweir virtual sal_Bool SAL_CALL supportsService( const UNOOUSTRING& sServiceName ) throw( UNORUNTIMEEXCEPTION ); \
155cdf0e10cSrcweir virtual UNOSEQUENCE< UNOOUSTRING > SAL_CALL getSupportedServiceNames() throw( UNORUNTIMEEXCEPTION ); \
156cdf0e10cSrcweir \
157cdf0e10cSrcweir /* Helper for XServiceInfo */ \
158cdf0e10cSrcweir static UNOSEQUENCE< UNOOUSTRING > impl_getStaticSupportedServiceNames(); \
159cdf0e10cSrcweir static UNOOUSTRING impl_getStaticImplementationName(); \
160cdf0e10cSrcweir \
161cdf0e10cSrcweir /* Helper for registry */ \
162cdf0e10cSrcweir static UNOREFERENCE< UNOXINTERFACE > SAL_CALL impl_createInstance( const UNOREFERENCE< UNOXMULTISERVICEFACTORY >& xServiceManager ) throw( UNOEXCEPTION );\
163cdf0e10cSrcweir static UNOREFERENCE< UNOXSINGLESERVICEFACTORY > impl_createFactory( const UNOREFERENCE< UNOXMULTISERVICEFACTORY >& xServiceManager );
164cdf0e10cSrcweir
165cdf0e10cSrcweir #define SFX_DECL_XINTERFACE_XTYPEPROVIDER_XSERVICEINFO \
166cdf0e10cSrcweir \
167cdf0e10cSrcweir /* XInterface + XTypeProvider */ \
168cdf0e10cSrcweir SFX_DECL_XINTERFACE_XTYPEPROVIDER \
169cdf0e10cSrcweir SFX_DECL_XSERVICEINFO
170cdf0e10cSrcweir
171cdf0e10cSrcweir //************************************************************************************************************************
172cdf0e10cSrcweir // implementation of XInterface::queryInterface()
173cdf0e10cSrcweir // XInterface::aquire()
174cdf0e10cSrcweir // XInterface::release()
175cdf0e10cSrcweir //************************************************************************************************************************
176cdf0e10cSrcweir /*_________________________________________________________________________________________________________________________*/
177cdf0e10cSrcweir // DON'T USE FOLLOW MACROS DIRECTLY!!!
178cdf0e10cSrcweir #define SFX_IMPL_XINTERFACE_BASE( IMPLCLASS, BASECLASS, IMPLINTERFACES ) \
179cdf0e10cSrcweir \
180cdf0e10cSrcweir void SAL_CALL IMPLCLASS::acquire() throw() \
181cdf0e10cSrcweir { \
182cdf0e10cSrcweir /* Don't use mutex in methods of XInterface! */ \
183cdf0e10cSrcweir BASECLASS::acquire(); \
184cdf0e10cSrcweir } \
185cdf0e10cSrcweir \
186cdf0e10cSrcweir void SAL_CALL IMPLCLASS::release() throw() \
187cdf0e10cSrcweir { \
188cdf0e10cSrcweir /* Don't use mutex in methods of XInterface! */ \
189cdf0e10cSrcweir BASECLASS::release(); \
190cdf0e10cSrcweir } \
191cdf0e10cSrcweir \
192cdf0e10cSrcweir UNOANY SAL_CALL IMPLCLASS::queryInterface( const UNOTYPE& rType ) throw( UNORUNTIMEEXCEPTION ) \
193cdf0e10cSrcweir { \
194cdf0e10cSrcweir /* Attention: Don't use mutex or guard in this method!!! Is a method of XInterface. */ \
195cdf0e10cSrcweir /* Ask for my own supported interfaces ... */ \
196cdf0e10cSrcweir UNOANY aReturn ( ::cppu::queryInterface( rType, \
197cdf0e10cSrcweir IMPLINTERFACES \
198cdf0e10cSrcweir ) \
199cdf0e10cSrcweir ); \
200cdf0e10cSrcweir /* If searched interface supported by this class ... */ \
201cdf0e10cSrcweir if ( aReturn.hasValue() == sal_True ) \
202cdf0e10cSrcweir { \
203cdf0e10cSrcweir /* ... return this information. */ \
204cdf0e10cSrcweir return aReturn ; \
205cdf0e10cSrcweir } \
206cdf0e10cSrcweir else \
207cdf0e10cSrcweir { \
208cdf0e10cSrcweir /* Else; ... ask baseclass for interfaces! */ \
209cdf0e10cSrcweir return BASECLASS::queryInterface( rType ); \
210cdf0e10cSrcweir } \
211cdf0e10cSrcweir }
212cdf0e10cSrcweir
213cdf0e10cSrcweir #define SFX_IMPL_INTERFACE_0 \
214cdf0e10cSrcweir static_cast< UNOXTYPEPROVIDER* >( this )
215cdf0e10cSrcweir
216cdf0e10cSrcweir #define SFX_IMPL_INTERFACE_1( INTERFACE1 ) \
217cdf0e10cSrcweir SFX_IMPL_INTERFACE_0, \
218cdf0e10cSrcweir static_cast< INTERFACE1* >( this )
219cdf0e10cSrcweir
220cdf0e10cSrcweir #define SFX_IMPL_INTERFACE_2( INTERFACE1, INTERFACE2 ) \
221cdf0e10cSrcweir SFX_IMPL_INTERFACE_1( INTERFACE1 ), \
222cdf0e10cSrcweir static_cast< INTERFACE2* >( this )
223cdf0e10cSrcweir
224cdf0e10cSrcweir #define SFX_IMPL_INTERFACE_3( INTERFACE1, INTERFACE2, INTERFACE3 ) \
225cdf0e10cSrcweir SFX_IMPL_INTERFACE_2( INTERFACE1, INTERFACE2 ), \
226cdf0e10cSrcweir static_cast< INTERFACE3* >( this )
227cdf0e10cSrcweir
228cdf0e10cSrcweir #define SFX_IMPL_INTERFACE_4( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4 ) \
229cdf0e10cSrcweir SFX_IMPL_INTERFACE_3( INTERFACE1, INTERFACE2, INTERFACE3 ), \
230cdf0e10cSrcweir static_cast< INTERFACE4* >( this )
231cdf0e10cSrcweir
232cdf0e10cSrcweir #define SFX_IMPL_INTERFACE_5( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5 ) \
233cdf0e10cSrcweir SFX_IMPL_INTERFACE_4( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4 ), \
234cdf0e10cSrcweir static_cast< INTERFACE5* >( this )
235cdf0e10cSrcweir
236cdf0e10cSrcweir #define SFX_IMPL_INTERFACE_6( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6 ) \
237cdf0e10cSrcweir SFX_IMPL_INTERFACE_5( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5 ), \
238cdf0e10cSrcweir static_cast< INTERFACE6* >( this )
239cdf0e10cSrcweir
240cdf0e10cSrcweir #define SFX_IMPL_INTERFACE_7( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7 ) \
241cdf0e10cSrcweir SFX_IMPL_INTERFACE_6( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6 ), \
242cdf0e10cSrcweir static_cast< INTERFACE7* >( this )
243cdf0e10cSrcweir
244cdf0e10cSrcweir #define SFX_IMPL_INTERFACE_8( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8 ) \
245cdf0e10cSrcweir SFX_IMPL_INTERFACE_7( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7 ), \
246cdf0e10cSrcweir static_cast< INTERFACE8* >( this )
247cdf0e10cSrcweir
248cdf0e10cSrcweir #define SFX_IMPL_INTERFACE_9( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9 ) \
249cdf0e10cSrcweir SFX_IMPL_INTERFACE_8( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8 ), \
250cdf0e10cSrcweir static_cast< INTERFACE9* >( this )
251cdf0e10cSrcweir
252cdf0e10cSrcweir #define SFX_IMPL_INTERFACE_10( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10 ) \
253cdf0e10cSrcweir SFX_IMPL_INTERFACE_9( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9 ), \
254cdf0e10cSrcweir static_cast< INTERFACE10* >( this )
255cdf0e10cSrcweir
256cdf0e10cSrcweir #define SFX_IMPL_INTERFACE_11( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11 ) \
257cdf0e10cSrcweir SFX_IMPL_INTERFACE_10( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10 ), \
258cdf0e10cSrcweir static_cast< INTERFACE11* >( this )
259cdf0e10cSrcweir
260cdf0e10cSrcweir #define SFX_IMPL_INTERFACE_12( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12 ) \
261cdf0e10cSrcweir SFX_IMPL_INTERFACE_11( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11 ), \
262cdf0e10cSrcweir static_cast< INTERFACE12* >( this )
263cdf0e10cSrcweir
264cdf0e10cSrcweir #define SFX_IMPL_INTERFACE_13( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13 ) \
265cdf0e10cSrcweir SFX_IMPL_INTERFACE_12( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12 ), \
266cdf0e10cSrcweir static_cast< INTERFACE13* >( this )
267cdf0e10cSrcweir /*_________________________________________________________________________________________________________________________*/
268cdf0e10cSrcweir
269cdf0e10cSrcweir // Follow macros can used directly :-)
270cdf0e10cSrcweir // implementation of XInterface with 0 additional interface for queryInterface()
271cdf0e10cSrcweir #define SFX_IMPL_XINTERFACE_0( IMPLCLASS, BASECLASS ) \
272cdf0e10cSrcweir SFX_IMPL_XINTERFACE_BASE( IMPLCLASS, BASECLASS, SFX_IMPL_INTERFACE_0 )
273cdf0e10cSrcweir
274cdf0e10cSrcweir // implementation of XInterface with 1 additional interface for queryInterface()
275cdf0e10cSrcweir #define SFX_IMPL_XINTERFACE_1( IMPLCLASS, BASECLASS, INTERFACE1 ) \
276cdf0e10cSrcweir SFX_IMPL_XINTERFACE_BASE( IMPLCLASS, BASECLASS, SFX_IMPL_INTERFACE_1( INTERFACE1 ) )
277cdf0e10cSrcweir
278cdf0e10cSrcweir // implementation of XInterface with 2 additional interfaces for queryInterface()
279cdf0e10cSrcweir #define SFX_IMPL_XINTERFACE_2( IMPLCLASS, BASECLASS, INTERFACE1, INTERFACE2 ) \
280cdf0e10cSrcweir SFX_IMPL_XINTERFACE_BASE( IMPLCLASS, BASECLASS, SFX_IMPL_INTERFACE_2( INTERFACE1, INTERFACE2 ) )
281cdf0e10cSrcweir
282cdf0e10cSrcweir // implementation of XInterface with 3 additional interfaces for queryInterface()
283cdf0e10cSrcweir #define SFX_IMPL_XINTERFACE_3( IMPLCLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3 ) \
284cdf0e10cSrcweir SFX_IMPL_XINTERFACE_BASE( IMPLCLASS, BASECLASS, SFX_IMPL_INTERFACE_3( INTERFACE1, INTERFACE2, INTERFACE3 ) )
285cdf0e10cSrcweir
286cdf0e10cSrcweir // implementation of XInterface with 4 additional interfaces for queryInterface()
287cdf0e10cSrcweir #define SFX_IMPL_XINTERFACE_4( IMPLCLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4 ) \
288cdf0e10cSrcweir SFX_IMPL_XINTERFACE_BASE( IMPLCLASS, BASECLASS, SFX_IMPL_INTERFACE_4( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4 ) )
289cdf0e10cSrcweir
290cdf0e10cSrcweir // implementation of XInterface with 5 additional interfaces for queryInterface()
291cdf0e10cSrcweir #define SFX_IMPL_XINTERFACE_5( IMPLCLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5 ) \
292cdf0e10cSrcweir SFX_IMPL_XINTERFACE_BASE( IMPLCLASS, BASECLASS, SFX_IMPL_INTERFACE_5( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5 ) )
293cdf0e10cSrcweir
294cdf0e10cSrcweir // implementation of XInterface with 6 additional interfaces for queryInterface()
295cdf0e10cSrcweir #define SFX_IMPL_XINTERFACE_6( IMPLCLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6 ) \
296cdf0e10cSrcweir SFX_IMPL_XINTERFACE_BASE( IMPLCLASS, BASECLASS, SFX_IMPL_INTERFACE_6( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6 ) )
297cdf0e10cSrcweir
298cdf0e10cSrcweir // implementation of XInterface with 7 additional interfaces for queryInterface()
299cdf0e10cSrcweir #define SFX_IMPL_XINTERFACE_7( IMPLCLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7 ) \
300cdf0e10cSrcweir SFX_IMPL_XINTERFACE_BASE( IMPLCLASS, BASECLASS, SFX_IMPL_INTERFACE_7( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7 ) )
301cdf0e10cSrcweir
302cdf0e10cSrcweir // implementation of XInterface with 8 additional interfaces for queryInterface()
303cdf0e10cSrcweir #define SFX_IMPL_XINTERFACE_8( IMPLCLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8 ) \
304cdf0e10cSrcweir SFX_IMPL_XINTERFACE_BASE( IMPLCLASS, BASECLASS, SFX_IMPL_INTERFACE_8( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8 ) )
305cdf0e10cSrcweir
306cdf0e10cSrcweir // implementation of XInterface with 9 additional interfaces for queryInterface()
307cdf0e10cSrcweir #define SFX_IMPL_XINTERFACE_9( IMPLCLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9 ) \
308cdf0e10cSrcweir SFX_IMPL_XINTERFACE_BASE( IMPLCLASS, BASECLASS, SFX_IMPL_INTERFACE_9( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9 ) )
309cdf0e10cSrcweir
310cdf0e10cSrcweir // implementation of XInterface with 10 additional interfaces for queryInterface()
311cdf0e10cSrcweir #define SFX_IMPL_XINTERFACE_10( IMPLCLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10 ) \
312cdf0e10cSrcweir SFX_IMPL_XINTERFACE_BASE( IMPLCLASS, BASECLASS, SFX_IMPL_INTERFACE_10( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10 ) )
313cdf0e10cSrcweir
314cdf0e10cSrcweir // implementation of XInterface with 11 additional interfaces for queryInterface()
315cdf0e10cSrcweir #define SFX_IMPL_XINTERFACE_11( IMPLCLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11 ) \
316cdf0e10cSrcweir SFX_IMPL_XINTERFACE_BASE( IMPLCLASS, BASECLASS, SFX_IMPL_INTERFACE_11( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11 ) )
317cdf0e10cSrcweir
318cdf0e10cSrcweir // implementation of XInterface with 11 additional interfaces for queryInterface()
319cdf0e10cSrcweir #define SFX_IMPL_XINTERFACE_12( IMPLCLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12 ) \
320cdf0e10cSrcweir SFX_IMPL_XINTERFACE_BASE( IMPLCLASS, BASECLASS, SFX_IMPL_INTERFACE_12( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12 ) )
321cdf0e10cSrcweir
322cdf0e10cSrcweir // implementation of XInterface with 11 additional interfaces for queryInterface()
323cdf0e10cSrcweir #define SFX_IMPL_XINTERFACE_13( IMPLCLASS, BASECLASS, INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13 ) \
324cdf0e10cSrcweir SFX_IMPL_XINTERFACE_BASE( IMPLCLASS, BASECLASS, SFX_IMPL_INTERFACE_13( INTERFACE1, INTERFACE2, INTERFACE3, INTERFACE4, INTERFACE5, INTERFACE6, INTERFACE7, INTERFACE8, INTERFACE9, INTERFACE10, INTERFACE11, INTERFACE12, INTERFACE13 ) )
325cdf0e10cSrcweir
326cdf0e10cSrcweir //************************************************************************************************************************
327cdf0e10cSrcweir // implementation of XTypeProvider::getTypes()
328cdf0e10cSrcweir // XTypeProvider::getImplementationId()
329cdf0e10cSrcweir //************************************************************************************************************************
330cdf0e10cSrcweir /*_________________________________________________________________________________________________________________________*/
331cdf0e10cSrcweir // DON'T USE FOLLOW MACROS DIRECTLY!!!
332cdf0e10cSrcweir #define SFX_IMPL_XTYPEPROVIDER_BASE( IMPLCLASS, IMPLTYPES ) \
333cdf0e10cSrcweir \
334cdf0e10cSrcweir UNOSEQUENCE< sal_Int8 > SAL_CALL IMPLCLASS::getImplementationId() throw( UNORUNTIMEEXCEPTION ) \
335cdf0e10cSrcweir { \
336cdf0e10cSrcweir /* Create one Id for all instances of this class. */ \
337cdf0e10cSrcweir /* Use ethernet address to do this! (sal_True) */ \
338cdf0e10cSrcweir /* Optimize this method */ \
339cdf0e10cSrcweir /* We initialize a static variable only one time. And we don't must use a mutex at every call! */ \
340cdf0e10cSrcweir /* For the first call; pID is NULL - for the second call pID is different from NULL! */ \
341cdf0e10cSrcweir static UNOOIMPLEMENTATIONID* pID = NULL ; \
342cdf0e10cSrcweir if ( pID == NULL ) \
343cdf0e10cSrcweir { \
344cdf0e10cSrcweir /* Ready for multithreading; get global mutex for first call of this method only! see before */ \
345cdf0e10cSrcweir UNOMUTEXGUARD aGuard( UNOMUTEX::getGlobalMutex() ); \
346cdf0e10cSrcweir /* Control these pointer again ... it can be, that another instance will be faster then these! */ \
347cdf0e10cSrcweir if ( pID == NULL ) \
348cdf0e10cSrcweir { \
349cdf0e10cSrcweir /* Create a new static ID ... */ \
350cdf0e10cSrcweir static UNOOIMPLEMENTATIONID aID( sal_False ); \
351cdf0e10cSrcweir /* ... and set his address to static pointer! */ \
352cdf0e10cSrcweir pID = &aID ; \
353cdf0e10cSrcweir } \
354cdf0e10cSrcweir } \
355cdf0e10cSrcweir return pID->getImplementationId(); \
356cdf0e10cSrcweir } \
357cdf0e10cSrcweir \
358cdf0e10cSrcweir UNOSEQUENCE< UNOTYPE > SAL_CALL IMPLCLASS::getTypes() throw( UNORUNTIMEEXCEPTION ) \
359cdf0e10cSrcweir { \
360cdf0e10cSrcweir /* Optimize this method ! */ \
361cdf0e10cSrcweir /* We initialize a static variable only one time. And we don't must use a mutex at every call! */ \
362cdf0e10cSrcweir /* For the first call; pTypeCollection is NULL - for the second call pTypeCollection is different from NULL!*/ \
363cdf0e10cSrcweir static UNOOTYPECOLLECTION* pTypeCollection = NULL ; \
364cdf0e10cSrcweir if ( pTypeCollection == NULL ) \
365cdf0e10cSrcweir { \
366cdf0e10cSrcweir /* Ready for multithreading; get global mutex for first call of this method only! see before */ \
367cdf0e10cSrcweir UNOMUTEXGUARD aGuard( UNOMUTEX::getGlobalMutex() ); \
368cdf0e10cSrcweir /* Control these pointer again ... it can be, that another instance will be faster then these! */ \
369cdf0e10cSrcweir if ( pTypeCollection == NULL ) \
370cdf0e10cSrcweir { \
371cdf0e10cSrcweir /* Create a static typecollection ... */ \
372cdf0e10cSrcweir static UNOOTYPECOLLECTION aTypeCollection( IMPLTYPES ); \
373cdf0e10cSrcweir /* ... and set his address to static pointer! */ \
374cdf0e10cSrcweir pTypeCollection = &aTypeCollection ; \
375cdf0e10cSrcweir } \
376cdf0e10cSrcweir } \
377cdf0e10cSrcweir return pTypeCollection->getTypes(); \
378cdf0e10cSrcweir }
379cdf0e10cSrcweir
380cdf0e10cSrcweir #define SFX_IMPL_TYPE_0 \
381cdf0e10cSrcweir ::getCppuType(( const UNOREFERENCE< UNOXTYPEPROVIDER >*)NULL )
382cdf0e10cSrcweir
383cdf0e10cSrcweir #define SFX_IMPL_TYPE_1( TYPE1 ) \
384cdf0e10cSrcweir SFX_IMPL_TYPE_0, \
385cdf0e10cSrcweir ::getCppuType(( const UNOREFERENCE< TYPE1 >*)NULL )
386cdf0e10cSrcweir
387cdf0e10cSrcweir #define SFX_IMPL_TYPE_2( TYPE1, TYPE2 ) \
388cdf0e10cSrcweir SFX_IMPL_TYPE_1( TYPE1 ), \
389cdf0e10cSrcweir ::getCppuType(( const UNOREFERENCE< TYPE2 >*)NULL )
390cdf0e10cSrcweir
391cdf0e10cSrcweir #define SFX_IMPL_TYPE_3( TYPE1, TYPE2, TYPE3 ) \
392cdf0e10cSrcweir SFX_IMPL_TYPE_2( TYPE1, TYPE2 ), \
393cdf0e10cSrcweir ::getCppuType(( const UNOREFERENCE< TYPE3 >*)NULL )
394cdf0e10cSrcweir
395cdf0e10cSrcweir #define SFX_IMPL_TYPE_4( TYPE1, TYPE2, TYPE3, TYPE4 ) \
396cdf0e10cSrcweir SFX_IMPL_TYPE_3( TYPE1, TYPE2, TYPE3 ), \
397cdf0e10cSrcweir ::getCppuType(( const UNOREFERENCE< TYPE4 >*)NULL )
398cdf0e10cSrcweir
399cdf0e10cSrcweir #define SFX_IMPL_TYPE_5( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5 ) \
400cdf0e10cSrcweir SFX_IMPL_TYPE_4( TYPE1, TYPE2, TYPE3, TYPE4 ), \
401cdf0e10cSrcweir ::getCppuType(( const UNOREFERENCE< TYPE5 >*)NULL )
402cdf0e10cSrcweir
403cdf0e10cSrcweir #define SFX_IMPL_TYPE_6( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6 ) \
404cdf0e10cSrcweir SFX_IMPL_TYPE_5( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5 ), \
405cdf0e10cSrcweir ::getCppuType(( const UNOREFERENCE< TYPE6 >*)NULL )
406cdf0e10cSrcweir
407cdf0e10cSrcweir #define SFX_IMPL_TYPE_7( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7 ) \
408cdf0e10cSrcweir SFX_IMPL_TYPE_6( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6 ), \
409cdf0e10cSrcweir ::getCppuType(( const UNOREFERENCE< TYPE7 >*)NULL )
410cdf0e10cSrcweir
411cdf0e10cSrcweir #define SFX_IMPL_TYPE_8( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8 ) \
412cdf0e10cSrcweir SFX_IMPL_TYPE_7( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7 ), \
413cdf0e10cSrcweir ::getCppuType(( const UNOREFERENCE< TYPE8 >*)NULL )
414cdf0e10cSrcweir
415cdf0e10cSrcweir #define SFX_IMPL_TYPE_9( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9 ) \
416cdf0e10cSrcweir SFX_IMPL_TYPE_8( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8 ), \
417cdf0e10cSrcweir ::getCppuType(( const UNOREFERENCE< TYPE9 >*)NULL )
418cdf0e10cSrcweir
419cdf0e10cSrcweir #define SFX_IMPL_TYPE_10( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10 ) \
420cdf0e10cSrcweir SFX_IMPL_TYPE_9( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9 ), \
421cdf0e10cSrcweir ::getCppuType(( const UNOREFERENCE< TYPE10 >*)NULL )
422cdf0e10cSrcweir
423cdf0e10cSrcweir #define SFX_IMPL_TYPE_11( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11 ) \
424cdf0e10cSrcweir SFX_IMPL_TYPE_10( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10 ), \
425cdf0e10cSrcweir ::getCppuType(( const UNOREFERENCE< TYPE11 >*)NULL )
426cdf0e10cSrcweir
427cdf0e10cSrcweir #define SFX_IMPL_TYPE_12( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12 ) \
428cdf0e10cSrcweir SFX_IMPL_TYPE_11( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11 ), \
429cdf0e10cSrcweir ::getCppuType(( const UNOREFERENCE< TYPE12 >*)NULL )
430cdf0e10cSrcweir
431cdf0e10cSrcweir #define SFX_IMPL_TYPE_13( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12, TYPE13 ) \
432cdf0e10cSrcweir SFX_IMPL_TYPE_12( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12 ), \
433cdf0e10cSrcweir ::getCppuType(( const UNOREFERENCE< TYPE13 >*)NULL )
434cdf0e10cSrcweir /*_________________________________________________________________________________________________________________________*/
435cdf0e10cSrcweir
436cdf0e10cSrcweir // FOLLOW MACROS CAN USED DIRECTLY :-)
437cdf0e10cSrcweir
438cdf0e10cSrcweir // implementation of XInterface with 1 additional interface for queryInterface()
439cdf0e10cSrcweir #define SFX_IMPL_XTYPEPROVIDER_0( IMPLCLASS ) \
440cdf0e10cSrcweir SFX_IMPL_XTYPEPROVIDER_BASE( IMPLCLASS, SFX_IMPL_TYPE_0 )
441cdf0e10cSrcweir
442cdf0e10cSrcweir // implementation of XInterface with 1 additional interface for queryInterface()
443cdf0e10cSrcweir #define SFX_IMPL_XTYPEPROVIDER_1( IMPLCLASS, TYPE1 ) \
444cdf0e10cSrcweir SFX_IMPL_XTYPEPROVIDER_BASE( IMPLCLASS, SFX_IMPL_TYPE_1( TYPE1 ) )
445cdf0e10cSrcweir
446cdf0e10cSrcweir // implementation of XInterface with 2 additional interfaces for queryInterface()
447cdf0e10cSrcweir #define SFX_IMPL_XTYPEPROVIDER_2( IMPLCLASS, TYPE1, TYPE2 ) \
448cdf0e10cSrcweir SFX_IMPL_XTYPEPROVIDER_BASE( IMPLCLASS, SFX_IMPL_TYPE_2( TYPE1, TYPE2 ) )
449cdf0e10cSrcweir
450cdf0e10cSrcweir // implementation of XInterface with 3 additional interfaces for queryInterface()
451cdf0e10cSrcweir #define SFX_IMPL_XTYPEPROVIDER_3( IMPLCLASS, TYPE1, TYPE2, TYPE3 ) \
452cdf0e10cSrcweir SFX_IMPL_XTYPEPROVIDER_BASE( IMPLCLASS, SFX_IMPL_TYPE_3( TYPE1, TYPE2, TYPE3 ) )
453cdf0e10cSrcweir
454cdf0e10cSrcweir // implementation of XInterface with 4 additional interfaces for queryInterface()
455cdf0e10cSrcweir #define SFX_IMPL_XTYPEPROVIDER_4( IMPLCLASS, TYPE1, TYPE2, TYPE3, TYPE4 ) \
456cdf0e10cSrcweir SFX_IMPL_XTYPEPROVIDER_BASE( IMPLCLASS, SFX_IMPL_TYPE_4( TYPE1, TYPE2, TYPE3, TYPE4 ) )
457cdf0e10cSrcweir
458cdf0e10cSrcweir // implementation of XInterface with 5 additional interfaces for queryInterface()
459cdf0e10cSrcweir #define SFX_IMPL_XTYPEPROVIDER_5( IMPLCLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5 ) \
460cdf0e10cSrcweir SFX_IMPL_XTYPEPROVIDER_BASE( IMPLCLASS, SFX_IMPL_TYPE_5( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5 ) )
461cdf0e10cSrcweir
462cdf0e10cSrcweir // implementation of XInterface with 6 additional interfaces for queryInterface()
463cdf0e10cSrcweir #define SFX_IMPL_XTYPEPROVIDER_6( IMPLCLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6 ) \
464cdf0e10cSrcweir SFX_IMPL_XTYPEPROVIDER_BASE( IMPLCLASS, SFX_IMPL_TYPE_6( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6 ) )
465cdf0e10cSrcweir
466cdf0e10cSrcweir // implementation of XInterface with 7 additional interfaces for queryInterface()
467cdf0e10cSrcweir #define SFX_IMPL_XTYPEPROVIDER_7( IMPLCLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7 ) \
468cdf0e10cSrcweir SFX_IMPL_XTYPEPROVIDER_BASE( IMPLCLASS, SFX_IMPL_TYPE_7( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7 ) )
469cdf0e10cSrcweir
470cdf0e10cSrcweir // implementation of XInterface with 8 additional interfaces for queryInterface()
471cdf0e10cSrcweir #define SFX_IMPL_XTYPEPROVIDER_8( IMPLCLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8 ) \
472cdf0e10cSrcweir SFX_IMPL_XTYPEPROVIDER_BASE( IMPLCLASS, SFX_IMPL_TYPE_8( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8 ) )
473cdf0e10cSrcweir
474cdf0e10cSrcweir // implementation of XInterface with 9 additional interfaces for queryInterface()
475cdf0e10cSrcweir #define SFX_IMPL_XTYPEPROVIDER_9( IMPLCLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9 ) \
476cdf0e10cSrcweir SFX_IMPL_XTYPEPROVIDER_BASE( IMPLCLASS, SFX_IMPL_TYPE_9( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9 ) )
477cdf0e10cSrcweir
478cdf0e10cSrcweir // implementation of XInterface with 10 additional interfaces for queryInterface()
479cdf0e10cSrcweir #define SFX_IMPL_XTYPEPROVIDER_10( IMPLCLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10 ) \
480cdf0e10cSrcweir SFX_IMPL_XTYPEPROVIDER_BASE( IMPLCLASS, SFX_IMPL_TYPE_10( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10 ) )
481cdf0e10cSrcweir
482cdf0e10cSrcweir // implementation of XInterface with 11 additional interfaces for queryInterface()
483cdf0e10cSrcweir #define SFX_IMPL_XTYPEPROVIDER_11( IMPLCLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11 ) \
484cdf0e10cSrcweir SFX_IMPL_XTYPEPROVIDER_BASE( IMPLCLASS, SFX_IMPL_TYPE_11( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11 ) )
485cdf0e10cSrcweir
486cdf0e10cSrcweir // implementation of XInterface with 11 additional interfaces for queryInterface()
487cdf0e10cSrcweir #define SFX_IMPL_XTYPEPROVIDER_12( IMPLCLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12 ) \
488cdf0e10cSrcweir SFX_IMPL_XTYPEPROVIDER_BASE( IMPLCLASS, SFX_IMPL_TYPE_12( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12 ) )
489cdf0e10cSrcweir
490cdf0e10cSrcweir // implementation of XInterface with 11 additional interfaces for queryInterface()
491cdf0e10cSrcweir #define SFX_IMPL_XTYPEPROVIDER_13( IMPLCLASS, TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12, TYPE13 ) \
492cdf0e10cSrcweir SFX_IMPL_XTYPEPROVIDER_BASE( IMPLCLASS, SFX_IMPL_TYPE_13( TYPE1, TYPE2, TYPE3, TYPE4, TYPE5, TYPE6, TYPE7, TYPE8, TYPE9, TYPE10, TYPE11, TYPE12, TYPE13 ) )
493cdf0e10cSrcweir
494cdf0e10cSrcweir //************************************************************************************************************************
495cdf0e10cSrcweir // implementation of XServiceInfo::getImplementationName()
496cdf0e10cSrcweir // XServiceInfo::supportsService()
497cdf0e10cSrcweir // XServiceInfo::getSupportedServiceNames()
498cdf0e10cSrcweir // static xxx::impl_getStaticSupportedServiceNames()
499cdf0e10cSrcweir // static xxx::impl_getStaticImplementationName()
500cdf0e10cSrcweir // static xxx::impl_createInstance()
501cdf0e10cSrcweir //************************************************************************************************************************
502cdf0e10cSrcweir #define SFX_IMPL_XSERVICEINFO( IMPLCLASS, IMPLSERVICENAME, IMPLNAME ) \
503cdf0e10cSrcweir \
504cdf0e10cSrcweir /* XServiceInfo */ \
505cdf0e10cSrcweir UNOOUSTRING SAL_CALL IMPLCLASS::getImplementationName() throw( UNORUNTIMEEXCEPTION ) \
506cdf0e10cSrcweir { \
507cdf0e10cSrcweir return impl_getStaticImplementationName(); \
508cdf0e10cSrcweir } \
509cdf0e10cSrcweir \
510cdf0e10cSrcweir /* XServiceInfo */ \
511cdf0e10cSrcweir sal_Bool SAL_CALL IMPLCLASS::supportsService( const UNOOUSTRING& sServiceName ) throw( UNORUNTIMEEXCEPTION ) \
512cdf0e10cSrcweir { \
513cdf0e10cSrcweir UNOSEQUENCE< UNOOUSTRING > seqServiceNames = getSupportedServiceNames(); \
514cdf0e10cSrcweir const UNOOUSTRING* pArray = seqServiceNames.getConstArray(); \
515cdf0e10cSrcweir for ( sal_Int32 nCounter=0; nCounter<seqServiceNames.getLength(); nCounter++ ) \
516cdf0e10cSrcweir { \
517cdf0e10cSrcweir if ( pArray[nCounter] == sServiceName ) \
518cdf0e10cSrcweir { \
519cdf0e10cSrcweir return sal_True ; \
520cdf0e10cSrcweir } \
521cdf0e10cSrcweir } \
522cdf0e10cSrcweir return sal_False ; \
523cdf0e10cSrcweir } \
524cdf0e10cSrcweir \
525cdf0e10cSrcweir /* XServiceInfo */ \
526cdf0e10cSrcweir UNOSEQUENCE< UNOOUSTRING > SAL_CALL IMPLCLASS::getSupportedServiceNames() throw( UNORUNTIMEEXCEPTION ) \
527cdf0e10cSrcweir { \
528cdf0e10cSrcweir return impl_getStaticSupportedServiceNames(); \
529cdf0e10cSrcweir } \
530cdf0e10cSrcweir \
531cdf0e10cSrcweir /* Helper for XServiceInfo */ \
532cdf0e10cSrcweir UNOSEQUENCE< UNOOUSTRING > IMPLCLASS::impl_getStaticSupportedServiceNames() \
533cdf0e10cSrcweir { \
534cdf0e10cSrcweir UNOMUTEXGUARD aGuard( UNOMUTEX::getGlobalMutex() ); \
535cdf0e10cSrcweir UNOSEQUENCE< UNOOUSTRING > seqServiceNames( 1 ); \
536cdf0e10cSrcweir seqServiceNames.getArray() [0] = UNOOUSTRING::createFromAscii( IMPLSERVICENAME ); \
537cdf0e10cSrcweir return seqServiceNames ; \
538cdf0e10cSrcweir } \
539cdf0e10cSrcweir \
540cdf0e10cSrcweir /* Helper for XServiceInfo */ \
541cdf0e10cSrcweir UNOOUSTRING IMPLCLASS::impl_getStaticImplementationName() \
542cdf0e10cSrcweir { \
543cdf0e10cSrcweir return UNOOUSTRING::createFromAscii( IMPLNAME ); \
544cdf0e10cSrcweir } \
545cdf0e10cSrcweir \
546cdf0e10cSrcweir /* Helper for registry */ \
547cdf0e10cSrcweir UNOREFERENCE< UNOXINTERFACE > SAL_CALL IMPLCLASS::impl_createInstance( const UNOREFERENCE< UNOXMULTISERVICEFACTORY >& xServiceManager ) throw( UNOEXCEPTION ) \
548cdf0e10cSrcweir { \
549cdf0e10cSrcweir return UNOREFERENCE< UNOXINTERFACE >( *new IMPLCLASS( xServiceManager ) ); \
550cdf0e10cSrcweir }
551cdf0e10cSrcweir
552cdf0e10cSrcweir //************************************************************************************************************************
553cdf0e10cSrcweir // definition of createFactory() for MultiServices
554cdf0e10cSrcweir //************************************************************************************************************************
555cdf0e10cSrcweir #define SFX_IMPL_SINGLEFACTORY( IMPLCLASS ) \
556cdf0e10cSrcweir \
557cdf0e10cSrcweir UNOREFERENCE< UNOXSINGLESERVICEFACTORY > IMPLCLASS::impl_createFactory( const UNOREFERENCE< UNOXMULTISERVICEFACTORY >& xServiceManager ) \
558cdf0e10cSrcweir { \
559cdf0e10cSrcweir UNOREFERENCE< UNOXSINGLESERVICEFACTORY > xReturn ( \
560cdf0e10cSrcweir cppu::createSingleFactory( xServiceManager , \
561cdf0e10cSrcweir IMPLCLASS::impl_getStaticImplementationName() , \
562cdf0e10cSrcweir IMPLCLASS::impl_createInstance , \
563cdf0e10cSrcweir IMPLCLASS::impl_getStaticSupportedServiceNames() ) \
564cdf0e10cSrcweir ); \
565cdf0e10cSrcweir return xReturn ; \
566cdf0e10cSrcweir }
567cdf0e10cSrcweir
568cdf0e10cSrcweir //************************************************************************************************************************
569cdf0e10cSrcweir // definition of createFactory() for OneInstance-Services
570cdf0e10cSrcweir //************************************************************************************************************************
571cdf0e10cSrcweir #define SFX_IMPL_ONEINSTANCEFACTORY( IMPLCLASS ) \
572cdf0e10cSrcweir \
573cdf0e10cSrcweir UNOREFERENCE< UNOXSINGLESERVICEFACTORY > IMPLCLASS::impl_createFactory( const UNOREFERENCE< UNOXMULTISERVICEFACTORY >& xServiceManager ) \
574cdf0e10cSrcweir { \
575cdf0e10cSrcweir UNOREFERENCE< UNOXSINGLESERVICEFACTORY > xReturn( \
576cdf0e10cSrcweir cppu::createOneInstanceFactory( xServiceManager , \
577cdf0e10cSrcweir IMPLCLASS::impl_getStaticImplementationName() , \
578cdf0e10cSrcweir IMPLCLASS::impl_createInstance , \
579cdf0e10cSrcweir IMPLCLASS::impl_getStaticSupportedServiceNames() ) \
580cdf0e10cSrcweir ); \
581cdf0e10cSrcweir return xReturn ; \
582cdf0e10cSrcweir }
583cdf0e10cSrcweir
584cdf0e10cSrcweir //************************************************************************************************************************
585cdf0e10cSrcweir // definition for "extern c component_getFactory()"
586cdf0e10cSrcweir //************************************************************************************************************************
587cdf0e10cSrcweir #define CREATEFACTORY(CLASS) \
588cdf0e10cSrcweir \
589cdf0e10cSrcweir /* Create right factory ... */ \
590cdf0e10cSrcweir xFactory = CLASS::impl_createFactory( xServiceManager );
591cdf0e10cSrcweir
592cdf0e10cSrcweir //************************************************************************************************************************
593cdf0e10cSrcweir // definition for "extern c component_getFactory()"
594cdf0e10cSrcweir //************************************************************************************************************************
595cdf0e10cSrcweir #define IF_NAME_CREATECOMPONENTFACTORY(CLASS) \
596cdf0e10cSrcweir \
597cdf0e10cSrcweir if ( CLASS::impl_getStaticImplementationName().equals( UNOOUSTRING::createFromAscii( pImplementationName ) ) ) \
598cdf0e10cSrcweir { \
599cdf0e10cSrcweir CREATEFACTORY ( CLASS ) \
600cdf0e10cSrcweir }
601cdf0e10cSrcweir
602cdf0e10cSrcweir #endif // _SFX_SFXUNO_HXX
603