My Project
UDK 3.2.7 C/C++ API Reference
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
implbase5.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*************************************************************************
3  *
4  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5  *
6  * Copyright 2000, 2010 Oracle and/or its affiliates.
7  *
8  * OpenOffice.org - a multi-platform office productivity suite
9  *
10  * This file is part of OpenOffice.org.
11  *
12  * OpenOffice.org is free software: you can redistribute it and/or modify
13  * it under the terms of the GNU Lesser General Public License version 3
14  * only, as published by the Free Software Foundation.
15  *
16  * OpenOffice.org is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Lesser General Public License version 3 for more details
20  * (a copy is included in the LICENSE file that accompanied this code).
21  *
22  * You should have received a copy of the GNU Lesser General Public License
23  * version 3 along with OpenOffice.org. If not, see
24  * <http://www.openoffice.org/license.html>
25  * for a copy of the LGPLv3 License.
26  *
27  ************************************************************************/
28 #ifndef _CPPUHELPER_IMPLBASE5_HXX_
29 #define _CPPUHELPER_IMPLBASE5_HXX_
30 
32 #include <rtl/instance.hxx>
33 
34 namespace cppu
35 {
37 
38  struct class_data5
39  {
40  sal_Int16 m_nTypes;
41  sal_Bool m_storedTypeRefs;
42  sal_Bool m_storedId;
43  sal_Int8 m_id[ 16 ];
44  type_entry m_typeEntries[ 5 + 1 ];
45  };
46 
47  template< typename Ifc1, typename Ifc2, typename Ifc3, typename Ifc4, typename Ifc5, typename Impl >
48  struct ImplClassData5
49  {
50  class_data* operator ()()
51  {
52  static class_data5 s_cd =
53  {
54  5 +1, sal_False, sal_False,
55  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
56  {
57  { { Ifc1::static_type }, ((sal_IntPtr)(Ifc1 *) (Impl *) 16) - 16 },
58  { { Ifc2::static_type }, ((sal_IntPtr)(Ifc2 *) (Impl *) 16) - 16 },
59  { { Ifc3::static_type }, ((sal_IntPtr)(Ifc3 *) (Impl *) 16) - 16 },
60  { { Ifc4::static_type }, ((sal_IntPtr)(Ifc4 *) (Impl *) 16) - 16 },
61  { { Ifc5::static_type }, ((sal_IntPtr)(Ifc5 *) (Impl *) 16) - 16 },
62  { { com::sun::star::lang::XTypeProvider::static_type }, ((sal_IntPtr)(com::sun::star::lang::XTypeProvider *) (Impl *) 16) - 16 }
63  }
64  };
65  return reinterpret_cast< class_data * >(&s_cd);
66  }
67  };
68 
70 
79  template< class Ifc1, class Ifc2, class Ifc3, class Ifc4, class Ifc5 >
80  class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE ImplHelper5
81  : public com::sun::star::lang::XTypeProvider
82  , public Ifc1, public Ifc2, public Ifc3, public Ifc4, public Ifc5
83  {
84  struct cd : public rtl::StaticAggregate< class_data, ImplClassData5 < Ifc1, Ifc2, Ifc3, Ifc4, Ifc5, ImplHelper5<Ifc1, Ifc2, Ifc3, Ifc4, Ifc5> > > {};
85  public:
86  virtual com::sun::star::uno::Any SAL_CALL queryInterface( com::sun::star::uno::Type const & rType ) throw (com::sun::star::uno::RuntimeException)
87  { return ImplHelper_query( rType, cd::get(), this ); }
88  virtual com::sun::star::uno::Sequence< com::sun::star::uno::Type > SAL_CALL getTypes() throw (com::sun::star::uno::RuntimeException)
89  { return ImplHelper_getTypes( cd::get() ); }
90  virtual com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (com::sun::star::uno::RuntimeException)
91  { return ImplHelper_getImplementationId( cd::get() ); }
92 
93 #if !defined _MSC_VER // public -> protected changes mangled names there
94  protected:
95 #endif
96  ~ImplHelper5() throw () {}
97  };
106  template< class Ifc1, class Ifc2, class Ifc3, class Ifc4, class Ifc5 >
107  class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE WeakImplHelper5
108  : public OWeakObject
109  , public com::sun::star::lang::XTypeProvider
110  , public Ifc1, public Ifc2, public Ifc3, public Ifc4, public Ifc5
111  {
112  struct cd : public rtl::StaticAggregate< class_data, ImplClassData5 < Ifc1, Ifc2, Ifc3, Ifc4, Ifc5, WeakImplHelper5<Ifc1, Ifc2, Ifc3, Ifc4, Ifc5> > > {};
113  public:
114  virtual com::sun::star::uno::Any SAL_CALL queryInterface( com::sun::star::uno::Type const & rType ) throw (com::sun::star::uno::RuntimeException)
115  { return WeakImplHelper_query( rType, cd::get(), this, (OWeakObject *)this ); }
116  virtual void SAL_CALL acquire() throw ()
117  { OWeakObject::acquire(); }
118  virtual void SAL_CALL release() throw ()
119  { OWeakObject::release(); }
120  virtual com::sun::star::uno::Sequence< com::sun::star::uno::Type > SAL_CALL getTypes() throw (com::sun::star::uno::RuntimeException)
121  { return WeakImplHelper_getTypes( cd::get() ); }
122  virtual com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (com::sun::star::uno::RuntimeException)
123  { return ImplHelper_getImplementationId( cd::get() ); }
124  };
138  template< class Ifc1, class Ifc2, class Ifc3, class Ifc4, class Ifc5 >
139  class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE WeakAggImplHelper5
140  : public OWeakAggObject
141  , public com::sun::star::lang::XTypeProvider
142  , public Ifc1, public Ifc2, public Ifc3, public Ifc4, public Ifc5
143  {
144  struct cd : public rtl::StaticAggregate< class_data, ImplClassData5 < Ifc1, Ifc2, Ifc3, Ifc4, Ifc5, WeakAggImplHelper5<Ifc1, Ifc2, Ifc3, Ifc4, Ifc5> > > {};
145  public:
146  virtual com::sun::star::uno::Any SAL_CALL queryInterface( com::sun::star::uno::Type const & rType ) throw (com::sun::star::uno::RuntimeException)
147  { return OWeakAggObject::queryInterface( rType ); }
148  virtual com::sun::star::uno::Any SAL_CALL queryAggregation( com::sun::star::uno::Type const & rType ) throw (com::sun::star::uno::RuntimeException)
149  { return WeakAggImplHelper_queryAgg( rType, cd::get(), this, (OWeakAggObject *)this ); }
150  virtual void SAL_CALL acquire() throw ()
152  virtual void SAL_CALL release() throw ()
154  virtual com::sun::star::uno::Sequence< com::sun::star::uno::Type > SAL_CALL getTypes() throw (com::sun::star::uno::RuntimeException)
155  { return WeakAggImplHelper_getTypes( cd::get() ); }
156  virtual com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (com::sun::star::uno::RuntimeException)
157  { return ImplHelper_getImplementationId( cd::get() ); }
158  };
175  template< class BaseClass, class Ifc1, class Ifc2, class Ifc3, class Ifc4, class Ifc5 >
176  class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE ImplInheritanceHelper5
177  : public BaseClass
178  , public Ifc1, public Ifc2, public Ifc3, public Ifc4, public Ifc5
179  {
180  struct cd : public rtl::StaticAggregate< class_data, ImplClassData5 < Ifc1, Ifc2, Ifc3, Ifc4, Ifc5, ImplInheritanceHelper5<BaseClass, Ifc1, Ifc2, Ifc3, Ifc4, Ifc5> > > {};
181  protected:
182  template< typename T1 >
183  explicit ImplInheritanceHelper5(T1 const & arg1): BaseClass(arg1) {}
184  template< typename T1, typename T2 >
185  ImplInheritanceHelper5(T1 const & arg1, T2 const & arg2):
186  BaseClass(arg1, arg2) {}
187  template< typename T1, typename T2, typename T3 >
189  T1 const & arg1, T2 const & arg2, T3 const & arg3):
190  BaseClass(arg1, arg2, arg3) {}
191  template< typename T1, typename T2, typename T3, typename T4 >
193  T1 const & arg1, T2 const & arg2, T3 const & arg3, T4 const & arg4):
194  BaseClass(arg1, arg2, arg3, arg4) {}
195  template<
196  typename T1, typename T2, typename T3, typename T4, typename T5 >
198  T1 const & arg1, T2 const & arg2, T3 const & arg3, T4 const & arg4,
199  T5 const & arg5):
200  BaseClass(arg1, arg2, arg3, arg4, arg5) {}
201  template<
202  typename T1, typename T2, typename T3, typename T4, typename T5,
203  typename T6 >
205  T1 const & arg1, T2 const & arg2, T3 const & arg3, T4 const & arg4,
206  T5 const & arg5, T6 const & arg6):
207  BaseClass(arg1, arg2, arg3, arg4, arg5, arg6) {}
208  public:
210  virtual com::sun::star::uno::Any SAL_CALL queryInterface( com::sun::star::uno::Type const & rType ) throw (com::sun::star::uno::RuntimeException)
211  {
212  com::sun::star::uno::Any aRet( ImplHelper_queryNoXInterface( rType, cd::get(), this ) );
213  if (aRet.hasValue())
214  return aRet;
215  return BaseClass::queryInterface( rType );
216  }
217  virtual void SAL_CALL acquire() throw ()
218  { BaseClass::acquire(); }
219  virtual void SAL_CALL release() throw ()
220  { BaseClass::release(); }
221  virtual com::sun::star::uno::Sequence< com::sun::star::uno::Type > SAL_CALL getTypes() throw (com::sun::star::uno::RuntimeException)
222  { return ImplInhHelper_getTypes( cd::get(), BaseClass::getTypes() ); }
223  virtual com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (com::sun::star::uno::RuntimeException)
224  { return ImplHelper_getImplementationId( cd::get() ); }
225  };
243  template< class BaseClass, class Ifc1, class Ifc2, class Ifc3, class Ifc4, class Ifc5 >
244  class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE AggImplInheritanceHelper5
245  : public BaseClass
246  , public Ifc1, public Ifc2, public Ifc3, public Ifc4, public Ifc5
247  {
248  struct cd : public rtl::StaticAggregate< class_data, ImplClassData5 < Ifc1, Ifc2, Ifc3, Ifc4, Ifc5, AggImplInheritanceHelper5<BaseClass, Ifc1, Ifc2, Ifc3, Ifc4, Ifc5> > > {};
249  protected:
250  template< typename T1 >
251  explicit AggImplInheritanceHelper5(T1 const & arg1): BaseClass(arg1) {}
252  template< typename T1, typename T2 >
253  AggImplInheritanceHelper5(T1 const & arg1, T2 const & arg2):
254  BaseClass(arg1, arg2) {}
255  template< typename T1, typename T2, typename T3 >
257  T1 const & arg1, T2 const & arg2, T3 const & arg3):
258  BaseClass(arg1, arg2, arg3) {}
259  template< typename T1, typename T2, typename T3, typename T4 >
261  T1 const & arg1, T2 const & arg2, T3 const & arg3, T4 const & arg4):
262  BaseClass(arg1, arg2, arg3, arg4) {}
263  template<
264  typename T1, typename T2, typename T3, typename T4, typename T5 >
266  T1 const & arg1, T2 const & arg2, T3 const & arg3, T4 const & arg4,
267  T5 const & arg5):
268  BaseClass(arg1, arg2, arg3, arg4, arg5) {}
269  template<
270  typename T1, typename T2, typename T3, typename T4, typename T5,
271  typename T6 >
273  T1 const & arg1, T2 const & arg2, T3 const & arg3, T4 const & arg4,
274  T5 const & arg5, T6 const & arg6):
275  BaseClass(arg1, arg2, arg3, arg4, arg5, arg6) {}
276  public:
278  virtual com::sun::star::uno::Any SAL_CALL queryInterface( com::sun::star::uno::Type const & rType ) throw (com::sun::star::uno::RuntimeException)
279  { return BaseClass::queryInterface( rType ); }
280  virtual com::sun::star::uno::Any SAL_CALL queryAggregation( com::sun::star::uno::Type const & rType ) throw (com::sun::star::uno::RuntimeException)
281  {
282  com::sun::star::uno::Any aRet( ImplHelper_queryNoXInterface( rType, cd::get(), this ) );
283  if (aRet.hasValue())
284  return aRet;
285  return BaseClass::queryAggregation( rType );
286  }
287  virtual void SAL_CALL acquire() throw ()
288  { BaseClass::acquire(); }
289  virtual void SAL_CALL release() throw ()
290  { BaseClass::release(); }
291  virtual com::sun::star::uno::Sequence< com::sun::star::uno::Type > SAL_CALL getTypes() throw (com::sun::star::uno::RuntimeException)
292  { return ImplInhHelper_getTypes( cd::get(), BaseClass::getTypes() ); }
293  virtual com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (com::sun::star::uno::RuntimeException)
294  { return ImplHelper_getImplementationId( cd::get() ); }
295  };
296 }
297 
298 #endif
299 
300 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */