LibreOffice Module cppuhelper (master)  1
queryinterface.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 /*
21  * This file is part of LibreOffice published API.
22  */
23 
24 #ifndef INCLUDED_CPPUHELPER_QUERYINTERFACE_HXX
25 #define INCLUDED_CPPUHELPER_QUERYINTERFACE_HXX
26 
27 #include "sal/config.h"
28 #include "com/sun/star/uno/Any.hxx"
29 #include "com/sun/star/uno/Type.h"
30 #include "sal/types.h"
31 
32 namespace cppu
33 {
34 
42 template< class Interface1 >
43 inline css::uno::Any SAL_CALL queryInterface(
44  const css::uno::Type & rType,
45  Interface1 * p1 )
46 {
47  if (rType == Interface1::static_type())
48  return css::uno::Any( &p1, rType );
49  else
50  return css::uno::Any();
51 }
61 template< class Interface1, class Interface2 >
62 inline css::uno::Any SAL_CALL queryInterface(
63  const css::uno::Type & rType,
64  Interface1 * p1, Interface2 * p2 )
65 {
66  if (rType == Interface1::static_type())
67  return css::uno::Any( &p1, rType );
68  else if (rType == Interface2::static_type())
69  return css::uno::Any( &p2, rType );
70  else
71  return css::uno::Any();
72 }
84 template< class Interface1, class Interface2, class Interface3 >
85 inline css::uno::Any SAL_CALL queryInterface(
86  const css::uno::Type & rType,
87  Interface1 * p1, Interface2 * p2, Interface3 * p3 )
88 {
89  if (rType == Interface1::static_type())
90  return css::uno::Any( &p1, rType );
91  else if (rType == Interface2::static_type())
92  return css::uno::Any( &p2, rType );
93  else if (rType == Interface3::static_type())
94  return css::uno::Any( &p3, rType );
95  else
96  return css::uno::Any();
97 }
111 template< class Interface1, class Interface2, class Interface3, class Interface4 >
112 inline css::uno::Any SAL_CALL queryInterface(
113  const css::uno::Type & rType,
114  Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4 )
115 {
116  if (rType == Interface1::static_type())
117  return css::uno::Any( &p1, rType );
118  else if (rType == Interface2::static_type())
119  return css::uno::Any( &p2, rType );
120  else if (rType == Interface3::static_type())
121  return css::uno::Any( &p3, rType );
122  else if (rType == Interface4::static_type())
123  return css::uno::Any( &p4, rType );
124  else
125  return css::uno::Any();
126 }
142 template< class Interface1, class Interface2, class Interface3, class Interface4, class Interface5 >
143 inline css::uno::Any SAL_CALL queryInterface(
144  const css::uno::Type & rType,
145  Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4, Interface5 * p5 )
146 {
147  if (rType == Interface1::static_type())
148  return css::uno::Any( &p1, rType );
149  else if (rType == Interface2::static_type())
150  return css::uno::Any( &p2, rType );
151  else if (rType == Interface3::static_type())
152  return css::uno::Any( &p3, rType );
153  else if (rType == Interface4::static_type())
154  return css::uno::Any( &p4, rType );
155  else if (rType == Interface5::static_type())
156  return css::uno::Any( &p5, rType );
157  else
158  return css::uno::Any();
159 }
177 template< class Interface1, class Interface2, class Interface3, class Interface4, class Interface5,
178  class Interface6 >
179 inline css::uno::Any SAL_CALL queryInterface(
180  const css::uno::Type & rType,
181  Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4, Interface5 * p5,
182  Interface6 * p6 )
183 {
184  if (rType == Interface1::static_type())
185  return css::uno::Any( &p1, rType );
186  else if (rType == Interface2::static_type())
187  return css::uno::Any( &p2, rType );
188  else if (rType == Interface3::static_type())
189  return css::uno::Any( &p3, rType );
190  else if (rType == Interface4::static_type())
191  return css::uno::Any( &p4, rType );
192  else if (rType == Interface5::static_type())
193  return css::uno::Any( &p5, rType );
194  else if (rType == Interface6::static_type())
195  return css::uno::Any( &p6, rType );
196  else
197  return css::uno::Any();
198 }
218 template< class Interface1, class Interface2, class Interface3, class Interface4, class Interface5,
219  class Interface6, class Interface7 >
220 inline css::uno::Any SAL_CALL queryInterface(
221  const css::uno::Type & rType,
222  Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4, Interface5 * p5,
223  Interface6 * p6, Interface7 * p7 )
224 {
225  if (rType == Interface1::static_type())
226  return css::uno::Any( &p1, rType );
227  else if (rType == Interface2::static_type())
228  return css::uno::Any( &p2, rType );
229  else if (rType == Interface3::static_type())
230  return css::uno::Any( &p3, rType );
231  else if (rType == Interface4::static_type())
232  return css::uno::Any( &p4, rType );
233  else if (rType == Interface5::static_type())
234  return css::uno::Any( &p5, rType );
235  else if (rType == Interface6::static_type())
236  return css::uno::Any( &p6, rType );
237  else if (rType == Interface7::static_type())
238  return css::uno::Any( &p7, rType );
239  else
240  return css::uno::Any();
241 }
263 template< class Interface1, class Interface2, class Interface3, class Interface4, class Interface5,
264  class Interface6, class Interface7, class Interface8 >
265 inline css::uno::Any SAL_CALL queryInterface(
266  const css::uno::Type & rType,
267  Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4, Interface5 * p5,
268  Interface6 * p6, Interface7 * p7, Interface8 * p8 )
269 {
270  if (rType == Interface1::static_type())
271  return css::uno::Any( &p1, rType );
272  else if (rType == Interface2::static_type())
273  return css::uno::Any( &p2, rType );
274  else if (rType == Interface3::static_type())
275  return css::uno::Any( &p3, rType );
276  else if (rType == Interface4::static_type())
277  return css::uno::Any( &p4, rType );
278  else if (rType == Interface5::static_type())
279  return css::uno::Any( &p5, rType );
280  else if (rType == Interface6::static_type())
281  return css::uno::Any( &p6, rType );
282  else if (rType == Interface7::static_type())
283  return css::uno::Any( &p7, rType );
284  else if (rType == Interface8::static_type())
285  return css::uno::Any( &p8, rType );
286  else
287  return css::uno::Any();
288 }
312 template< class Interface1, class Interface2, class Interface3, class Interface4, class Interface5,
313  class Interface6, class Interface7, class Interface8, class Interface9 >
314 inline css::uno::Any SAL_CALL queryInterface(
315  const css::uno::Type & rType,
316  Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4, Interface5 * p5,
317  Interface6 * p6, Interface7 * p7, Interface8 * p8, Interface9 * p9 )
318 {
319  if (rType == Interface1::static_type())
320  return css::uno::Any( &p1, rType );
321  else if (rType == Interface2::static_type())
322  return css::uno::Any( &p2, rType );
323  else if (rType == Interface3::static_type())
324  return css::uno::Any( &p3, rType );
325  else if (rType == Interface4::static_type())
326  return css::uno::Any( &p4, rType );
327  else if (rType == Interface5::static_type())
328  return css::uno::Any( &p5, rType );
329  else if (rType == Interface6::static_type())
330  return css::uno::Any( &p6, rType );
331  else if (rType == Interface7::static_type())
332  return css::uno::Any( &p7, rType );
333  else if (rType == Interface8::static_type())
334  return css::uno::Any( &p8, rType );
335  else if (rType == Interface9::static_type())
336  return css::uno::Any( &p9, rType );
337  else
338  return css::uno::Any();
339 }
365 template< class Interface1, class Interface2, class Interface3, class Interface4, class Interface5,
366  class Interface6, class Interface7, class Interface8, class Interface9, class Interface10 >
367 inline css::uno::Any SAL_CALL queryInterface(
368  const css::uno::Type & rType,
369  Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4, Interface5 * p5,
370  Interface6 * p6, Interface7 * p7, Interface8 * p8, Interface9 * p9, Interface10 * p10 )
371 {
372  if (rType == Interface1::static_type())
373  return css::uno::Any( &p1, rType );
374  else if (rType == Interface2::static_type())
375  return css::uno::Any( &p2, rType );
376  else if (rType == Interface3::static_type())
377  return css::uno::Any( &p3, rType );
378  else if (rType == Interface4::static_type())
379  return css::uno::Any( &p4, rType );
380  else if (rType == Interface5::static_type())
381  return css::uno::Any( &p5, rType );
382  else if (rType == Interface6::static_type())
383  return css::uno::Any( &p6, rType );
384  else if (rType == Interface7::static_type())
385  return css::uno::Any( &p7, rType );
386  else if (rType == Interface8::static_type())
387  return css::uno::Any( &p8, rType );
388  else if (rType == Interface9::static_type())
389  return css::uno::Any( &p9, rType );
390  else if (rType == Interface10::static_type())
391  return css::uno::Any( &p10, rType );
392  else
393  return css::uno::Any();
394 }
422 template< class Interface1, class Interface2, class Interface3, class Interface4, class Interface5,
423  class Interface6, class Interface7, class Interface8, class Interface9, class Interface10,
424  class Interface11 >
425 inline css::uno::Any SAL_CALL queryInterface(
426  const css::uno::Type & rType,
427  Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4, Interface5 * p5,
428  Interface6 * p6, Interface7 * p7, Interface8 * p8, Interface9 * p9, Interface10 * p10,
429  Interface11 * p11 )
430 {
431  if (rType == Interface1::static_type())
432  return css::uno::Any( &p1, rType );
433  else if (rType == Interface2::static_type())
434  return css::uno::Any( &p2, rType );
435  else if (rType == Interface3::static_type())
436  return css::uno::Any( &p3, rType );
437  else if (rType == Interface4::static_type())
438  return css::uno::Any( &p4, rType );
439  else if (rType == Interface5::static_type())
440  return css::uno::Any( &p5, rType );
441  else if (rType == Interface6::static_type())
442  return css::uno::Any( &p6, rType );
443  else if (rType == Interface7::static_type())
444  return css::uno::Any( &p7, rType );
445  else if (rType == Interface8::static_type())
446  return css::uno::Any( &p8, rType );
447  else if (rType == Interface9::static_type())
448  return css::uno::Any( &p9, rType );
449  else if (rType == Interface10::static_type())
450  return css::uno::Any( &p10, rType );
451  else if (rType == Interface11::static_type())
452  return css::uno::Any( &p11, rType );
453  else
454  return css::uno::Any();
455 }
485 template< class Interface1, class Interface2, class Interface3, class Interface4, class Interface5,
486  class Interface6, class Interface7, class Interface8, class Interface9, class Interface10,
487  class Interface11, class Interface12 >
488 inline css::uno::Any SAL_CALL queryInterface(
489  const css::uno::Type & rType,
490  Interface1 * p1, Interface2 * p2, Interface3 * p3, Interface4 * p4, Interface5 * p5,
491  Interface6 * p6, Interface7 * p7, Interface8 * p8, Interface9 * p9, Interface10 * p10,
492  Interface11 * p11, Interface12 * p12 )
493 {
494  if (rType == Interface1::static_type())
495  return css::uno::Any( &p1, rType );
496  else if (rType == Interface2::static_type())
497  return css::uno::Any( &p2, rType );
498  else if (rType == Interface3::static_type())
499  return css::uno::Any( &p3, rType );
500  else if (rType == Interface4::static_type())
501  return css::uno::Any( &p4, rType );
502  else if (rType == Interface5::static_type())
503  return css::uno::Any( &p5, rType );
504  else if (rType == Interface6::static_type())
505  return css::uno::Any( &p6, rType );
506  else if (rType == Interface7::static_type())
507  return css::uno::Any( &p7, rType );
508  else if (rType == Interface8::static_type())
509  return css::uno::Any( &p8, rType );
510  else if (rType == Interface9::static_type())
511  return css::uno::Any( &p9, rType );
512  else if (rType == Interface10::static_type())
513  return css::uno::Any( &p10, rType );
514  else if (rType == Interface11::static_type())
515  return css::uno::Any( &p11, rType );
516  else if (rType == Interface12::static_type())
517  return css::uno::Any( &p12, rType );
518  else
519  return css::uno::Any();
520 }
521 
522 }
523 
524 #endif
525 
526 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType, Interface1 *p1)
Compares demanded type to given template argument types.