1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef _CPPUHELPER_STDIDLCLASS_HXX_
24 #define _CPPUHELPER_STDIDLCLASS_HXX_
25 
26 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
27 #include <com/sun/star/reflection/XIdlClass.hpp>
28 
29 #include "cppuhelper/cppuhelperdllapi.h"
30 
31 namespace cppu {
32 
33 /*
34   @deprecated
35 */
36 CPPUHELPER_DLLPUBLIC
37 ::com::sun::star::reflection::XIdlClass * SAL_CALL createStandardClassWithSequence(
38 	const ::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory > &rSMgr ,
39 	const ::rtl::OUString & sImplementationName ,
40 	const ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass > & rSuperClass,
41 	const ::com::sun::star::uno::Sequence < ::rtl::OUString > &seq )
42 	SAL_THROW( () );
43 
44 
45 
46 /**
47    Standardfunction to create an XIdlClass for a component.
48    There is a function for each number of supported interfaces up to 10.
49 
50    Since the switch to the final component model, there are no use cases anymore, where
51    these functions should be used. Instead use the implementation helpers directly
52    (see cppuhelper/implbase1.hxx).
53 
54    @see OTypeCollection
55 
56    @deprecated
57  */
58 template < class Interface1 >
59 inline ::com::sun::star::reflection::XIdlClass * SAL_CALL
60 //inline ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass >
createStandardClass(const::com::sun::star::uno::Reference<::com::sun::star::lang::XMultiServiceFactory> & rSMgr,const::rtl::OUString & sImplementationName,const::com::sun::star::uno::Reference<::com::sun::star::reflection::XIdlClass> & rSuperClass,const Interface1 *)61 createStandardClass(	const ::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory > &rSMgr,
62 					 	const ::rtl::OUString &sImplementationName  ,
63 					 	const ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass > &rSuperClass ,
64 					 	const Interface1 *
65 					 )
66 	SAL_THROW( () )
67 {
68 	::com::sun::star::uno::Sequence < ::rtl::OUString > seqInterface(1);
69     seqInterface.getArray()[0] = Interface1::static_type().getTypeName();
70 	return createStandardClassWithSequence(
71 											rSMgr,
72 											sImplementationName,
73 											rSuperClass,
74 											seqInterface
75 										  );
76 }
77 
78 
79 
80 template < class Interface1, class Interface2 >
81 inline ::com::sun::star::reflection::XIdlClass * SAL_CALL
82 //inline ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass >
createStandardClass(const::com::sun::star::uno::Reference<::com::sun::star::lang::XMultiServiceFactory> & rSMgr,const::rtl::OUString & sImplementationName,const::com::sun::star::uno::Reference<::com::sun::star::reflection::XIdlClass> & rSuperClass,const Interface1 *,const Interface2 *)83 createStandardClass(	const ::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory > &rSMgr,
84 					 	const ::rtl::OUString &sImplementationName  ,
85 					 	const ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass > &rSuperClass ,
86 					 	const Interface1 *,
87 					 	const Interface2 *
88 					 )
89 	SAL_THROW( () )
90 {
91 	::com::sun::star::uno::Sequence < ::rtl::OUString > seqInterface(2);
92     seqInterface.getArray()[0] = Interface1::static_type().getTypeName();
93     seqInterface.getArray()[1] = Interface2::static_type().getTypeName();
94 	return createStandardClassWithSequence(
95 											rSMgr,
96 											sImplementationName,
97 											rSuperClass,
98 											seqInterface
99 										  );
100 }
101 
102 
103 
104 
105 
106 template < class Interface1, class Interface2 , class Interface3 >
107 inline ::com::sun::star::reflection::XIdlClass * SAL_CALL
108 //inline ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass >
createStandardClass(const::com::sun::star::uno::Reference<::com::sun::star::lang::XMultiServiceFactory> & rSMgr,const::rtl::OUString & sImplementationName,const::com::sun::star::uno::Reference<::com::sun::star::reflection::XIdlClass> & rSuperClass,const Interface1 *,const Interface2 *,const Interface3 *)109 createStandardClass(	const ::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory > &rSMgr,
110 					 	const ::rtl::OUString &sImplementationName  ,
111 					 	const ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass > &rSuperClass ,
112 					 	const Interface1 *,
113 					 	const Interface2 *,
114 					 	const Interface3 *
115 					 )
116 	SAL_THROW( () )
117 {
118 	::com::sun::star::uno::Sequence < ::rtl::OUString > seqInterface(3);
119     seqInterface.getArray()[0] = Interface1::static_type().getTypeName();
120     seqInterface.getArray()[1] = Interface2::static_type().getTypeName();
121     seqInterface.getArray()[2] = Interface3::static_type().getTypeName();
122 	return createStandardClassWithSequence(
123 											rSMgr,
124 											sImplementationName,
125 											rSuperClass,
126 											seqInterface
127 										  );
128 }
129 
130 
131 
132 
133 
134 template < class Interface1, class Interface2 , class Interface3 , class Interface4 >
135 inline ::com::sun::star::reflection::XIdlClass * SAL_CALL
136 //inline ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass >
createStandardClass(const::com::sun::star::uno::Reference<::com::sun::star::lang::XMultiServiceFactory> & rSMgr,const::rtl::OUString & sImplementationName,const::com::sun::star::uno::Reference<::com::sun::star::reflection::XIdlClass> & rSuperClass,const Interface1 *,const Interface2 *,const Interface3 *,const Interface4 *)137 createStandardClass(	const ::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory > &rSMgr,
138 					 	const ::rtl::OUString &sImplementationName  ,
139 					 	const ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass > &rSuperClass ,
140 					 	const Interface1 *,
141 					 	const Interface2 *,
142 					 	const Interface3 *,
143 					 	const Interface4 *
144 					 )
145 	SAL_THROW( () )
146 {
147 	::com::sun::star::uno::Sequence < ::rtl::OUString > seqInterface(4);
148     seqInterface.getArray()[0] = Interface1::static_type().getTypeName();
149     seqInterface.getArray()[1] = Interface2::static_type().getTypeName();
150     seqInterface.getArray()[2] = Interface3::static_type().getTypeName();
151     seqInterface.getArray()[3] = Interface4::static_type().getTypeName();
152 	return createStandardClassWithSequence(
153 											rSMgr,
154 											sImplementationName,
155 											rSuperClass,
156 											seqInterface
157 										  );
158 }
159 
160 
161 
162 
163 
164 
165 
166 template < class Interface1, class Interface2 , class Interface3 , class Interface4 , class Interface5 >
167 inline ::com::sun::star::reflection::XIdlClass * SAL_CALL
168 //inline ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass >
createStandardClass(const::com::sun::star::uno::Reference<::com::sun::star::lang::XMultiServiceFactory> & rSMgr,const::rtl::OUString & sImplementationName,const::com::sun::star::uno::Reference<::com::sun::star::reflection::XIdlClass> & rSuperClass,const Interface1 *,const Interface2 *,const Interface3 *,const Interface4 *,const Interface5 *)169 createStandardClass(	const ::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory > &rSMgr,
170 					 	const ::rtl::OUString &sImplementationName  ,
171 					 	const ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass > &rSuperClass ,
172 					 	const Interface1 *,
173 					 	const Interface2 *,
174 					 	const Interface3 *,
175 					 	const Interface4 *,
176 					 	const Interface5 *
177 					 )
178 	SAL_THROW( () )
179 {
180 	::com::sun::star::uno::Sequence < ::rtl::OUString > seqInterface(5);
181     seqInterface.getArray()[0] = Interface1::static_type().getTypeName();
182     seqInterface.getArray()[1] = Interface2::static_type().getTypeName();
183     seqInterface.getArray()[2] = Interface3::static_type().getTypeName();
184     seqInterface.getArray()[3] = Interface4::static_type().getTypeName();
185     seqInterface.getArray()[4] = Interface5::static_type().getTypeName();
186 	return createStandardClassWithSequence(
187 											rSMgr,
188 											sImplementationName,
189 											rSuperClass,
190 											seqInterface
191 										  );
192 }
193 
194 
195 
196 
197 template < 	class Interface1, class Interface2 , class Interface3 , class Interface4 , class Interface5 ,
198 			class Interface6 >
199 inline ::com::sun::star::reflection::XIdlClass * SAL_CALL
200 //inline ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass >
createStandardClass(const::com::sun::star::uno::Reference<::com::sun::star::lang::XMultiServiceFactory> & rSMgr,const::rtl::OUString & sImplementationName,const::com::sun::star::uno::Reference<::com::sun::star::reflection::XIdlClass> & rSuperClass,const Interface1 *,const Interface2 *,const Interface3 *,const Interface4 *,const Interface5 *,const Interface6 *)201 createStandardClass(	const ::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory > &rSMgr,
202 					 	const ::rtl::OUString &sImplementationName  ,
203 					 	const ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass > &rSuperClass ,
204 					 	const Interface1 *,
205 					 	const Interface2 *,
206 					 	const Interface3 *,
207 					 	const Interface4 *,
208 					 	const Interface5 *,
209 					 	const Interface6 *
210 					 )
211 	SAL_THROW( () )
212 {
213 	::com::sun::star::uno::Sequence < ::rtl::OUString > seqInterface(6);
214     seqInterface.getArray()[0] = Interface1::static_type().getTypeName();
215     seqInterface.getArray()[1] = Interface2::static_type().getTypeName();
216     seqInterface.getArray()[2] = Interface3::static_type().getTypeName();
217     seqInterface.getArray()[3] = Interface4::static_type().getTypeName();
218     seqInterface.getArray()[4] = Interface5::static_type().getTypeName();
219     seqInterface.getArray()[5] = Interface6::static_type().getTypeName();
220 	return createStandardClassWithSequence(
221 											rSMgr,
222 											sImplementationName,
223 											rSuperClass,
224 											seqInterface
225 										  );
226 }
227 
228 
229 
230 
231 
232 template < 	class Interface1, class Interface2 , class Interface3 , class Interface4 , class Interface5 ,
233 			class Interface6, class Interface7 >
234 inline ::com::sun::star::reflection::XIdlClass * SAL_CALL
235 //inline ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass >
createStandardClass(const::com::sun::star::uno::Reference<::com::sun::star::lang::XMultiServiceFactory> & rSMgr,const::rtl::OUString & sImplementationName,const::com::sun::star::uno::Reference<::com::sun::star::reflection::XIdlClass> & rSuperClass,const Interface1 *,const Interface2 *,const Interface3 *,const Interface4 *,const Interface5 *,const Interface6 *,const Interface7 *)236 createStandardClass(	const ::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory > &rSMgr,
237 					 	const ::rtl::OUString &sImplementationName  ,
238 					 	const ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass > &rSuperClass ,
239 					 	const Interface1 *,
240 					 	const Interface2 *,
241 					 	const Interface3 *,
242 					 	const Interface4 *,
243 					 	const Interface5 *,
244 					 	const Interface6 *,
245 					 	const Interface7 *
246 					 )
247 	SAL_THROW( () )
248 {
249 	::com::sun::star::uno::Sequence < ::rtl::OUString > seqInterface(7);
250     seqInterface.getArray()[0] = Interface1::static_type().getTypeName();
251     seqInterface.getArray()[1] = Interface2::static_type().getTypeName();
252     seqInterface.getArray()[2] = Interface3::static_type().getTypeName();
253     seqInterface.getArray()[3] = Interface4::static_type().getTypeName();
254     seqInterface.getArray()[4] = Interface5::static_type().getTypeName();
255     seqInterface.getArray()[5] = Interface6::static_type().getTypeName();
256     seqInterface.getArray()[6] = Interface7::static_type().getTypeName();
257 	return createStandardClassWithSequence(
258 											rSMgr,
259 											sImplementationName,
260 											rSuperClass,
261 											seqInterface
262 										  );
263 }
264 
265 
266 
267 
268 
269 
270 template < 	class Interface1, class Interface2, class Interface3 , class Interface4 , class Interface5 ,
271 			class Interface6, class Interface7, class Interface8 >
272 inline ::com::sun::star::reflection::XIdlClass * SAL_CALL
273 //inline ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass >
createStandardClass(const::com::sun::star::uno::Reference<::com::sun::star::lang::XMultiServiceFactory> & rSMgr,const::rtl::OUString & sImplementationName,const::com::sun::star::uno::Reference<::com::sun::star::reflection::XIdlClass> & rSuperClass,const Interface1 *,const Interface2 *,const Interface3 *,const Interface4 *,const Interface5 *,const Interface6 *,const Interface7 *,const Interface8 *)274 createStandardClass(	const ::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory > &rSMgr,
275 					 	const ::rtl::OUString &sImplementationName  ,
276 					 	const ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass > &rSuperClass ,
277 					 	const Interface1 *,
278 					 	const Interface2 *,
279 					 	const Interface3 *,
280 					 	const Interface4 *,
281 					 	const Interface5 *,
282 					 	const Interface6 *,
283 					 	const Interface7 *,
284 					 	const Interface8 *
285 					 )
286 	SAL_THROW( () )
287 {
288 	::com::sun::star::uno::Sequence < ::rtl::OUString > seqInterface(8);
289     seqInterface.getArray()[0] = Interface1::static_type().getTypeName();
290     seqInterface.getArray()[1] = Interface2::static_type().getTypeName();
291     seqInterface.getArray()[2] = Interface3::static_type().getTypeName();
292     seqInterface.getArray()[3] = Interface4::static_type().getTypeName();
293     seqInterface.getArray()[4] = Interface5::static_type().getTypeName();
294     seqInterface.getArray()[5] = Interface6::static_type().getTypeName();
295     seqInterface.getArray()[6] = Interface7::static_type().getTypeName();
296     seqInterface.getArray()[7] = Interface8::static_type().getTypeName();
297 	return createStandardClassWithSequence(
298 											rSMgr,
299 											sImplementationName,
300 											rSuperClass,
301 											seqInterface
302 										  );
303 }
304 
305 
306 
307 
308 template < 	class Interface1, class Interface2, class Interface3 , class Interface4 , class Interface5 ,
309 			class Interface6, class Interface7, class Interface8 , class Interface9 >
310 inline ::com::sun::star::reflection::XIdlClass * SAL_CALL
311 //inline ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass >
createStandardClass(const::com::sun::star::uno::Reference<::com::sun::star::lang::XMultiServiceFactory> & rSMgr,const::rtl::OUString & sImplementationName,const::com::sun::star::uno::Reference<::com::sun::star::reflection::XIdlClass> & rSuperClass,const Interface1 *,const Interface2 *,const Interface3 *,const Interface4 *,const Interface5 *,const Interface6 *,const Interface7 *,const Interface8 *,const Interface9 *)312 createStandardClass(	const ::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory > &rSMgr,
313 					 	const ::rtl::OUString &sImplementationName  ,
314 					 	const ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass > &rSuperClass ,
315 					 	const Interface1 *,
316 					 	const Interface2 *,
317 					 	const Interface3 *,
318 					 	const Interface4 *,
319 					 	const Interface5 *,
320 					 	const Interface6 *,
321 					 	const Interface7 *,
322 					 	const Interface8 *,
323 					 	const Interface9 *
324 					 )
325 	SAL_THROW( () )
326 {
327 	::com::sun::star::uno::Sequence < ::rtl::OUString > seqInterface(9);
328     seqInterface.getArray()[0] = Interface1::static_type().getTypeName();
329     seqInterface.getArray()[1] = Interface2::static_type().getTypeName();
330     seqInterface.getArray()[2] = Interface3::static_type().getTypeName();
331     seqInterface.getArray()[3] = Interface4::static_type().getTypeName();
332     seqInterface.getArray()[4] = Interface5::static_type().getTypeName();
333     seqInterface.getArray()[5] = Interface6::static_type().getTypeName();
334     seqInterface.getArray()[6] = Interface7::static_type().getTypeName();
335     seqInterface.getArray()[7] = Interface8::static_type().getTypeName();
336     seqInterface.getArray()[8] = Interface9::static_type().getTypeName();
337 	return createStandardClassWithSequence(
338 											rSMgr,
339 											sImplementationName,
340 											rSuperClass,
341 											seqInterface
342 										  );
343 }
344 
345 
346 template < 	class Interface1, class Interface2, class Interface3 , class Interface4 , class Interface5 ,
347 			class Interface6, class Interface7, class Interface8 , class Interface9 , class Interface10 >
348 inline ::com::sun::star::reflection::XIdlClass * SAL_CALL
349 //inline ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass >
createStandardClass(const::com::sun::star::uno::Reference<::com::sun::star::lang::XMultiServiceFactory> & rSMgr,const::rtl::OUString & sImplementationName,const::com::sun::star::uno::Reference<::com::sun::star::reflection::XIdlClass> & rSuperClass,const Interface1 *,const Interface2 *,const Interface3 *,const Interface4 *,const Interface5 *,const Interface6 *,const Interface7 *,const Interface8 *,const Interface9 *,const Interface10 *)350 createStandardClass(	const ::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory > &rSMgr,
351 					 	const ::rtl::OUString &sImplementationName  ,
352 					 	const ::com::sun::star::uno::Reference < ::com::sun::star::reflection::XIdlClass > &rSuperClass ,
353 					 	const Interface1 *,
354 					 	const Interface2 *,
355 					 	const Interface3 *,
356 					 	const Interface4 *,
357 					 	const Interface5 *,
358 					 	const Interface6 *,
359 					 	const Interface7 *,
360 					 	const Interface8 *,
361 					 	const Interface9 *,
362 					 	const Interface10 *
363 					 )
364 	SAL_THROW( () )
365 {
366 	::com::sun::star::uno::Sequence < ::rtl::OUString > seqInterface(10);
367     seqInterface.getArray()[0] = Interface1::static_type().getTypeName();
368     seqInterface.getArray()[1] = Interface2::static_type().getTypeName();
369     seqInterface.getArray()[2] = Interface3::static_type().getTypeName();
370     seqInterface.getArray()[3] = Interface4::static_type().getTypeName();
371     seqInterface.getArray()[4] = Interface5::static_type().getTypeName();
372     seqInterface.getArray()[5] = Interface6::static_type().getTypeName();
373     seqInterface.getArray()[6] = Interface7::static_type().getTypeName();
374     seqInterface.getArray()[7] = Interface8::static_type().getTypeName();
375     seqInterface.getArray()[8] = Interface9::static_type().getTypeName();
376     seqInterface.getArray()[9] = Interface10::static_type().getTypeName();
377 	return createStandardClassWithSequence(
378 											rSMgr,
379 											sImplementationName,
380 											rSuperClass,
381 											seqInterface
382 										  );
383 }
384 
385 } // end namespace cppu
386 
387 #endif
388