AlterOffice
AlterOffice 3.4 SDK C/C++ API Reference
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
implbase_ex_post.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 
3 #ifndef INCLUDED_CPPUHELPER_IMPLBASE_EX_POST_HXX
4 #define INCLUDED_CPPUHELPER_IMPLBASE_EX_POST_HXX
5 
7 
8 #define __DEF_CLASS_DATA_INIT_EX( N, class_cast ) \
9 { \
10 N +1, sal_False, sal_False, \
11 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, \
12 { \
13 __IFC_EX_TYPE_INIT##N( class_cast ), \
14 __IFC_EX_TYPE_INIT_NAME( class_cast, css::lang::XTypeProvider ) \
15 } \
16 }
17 
18 #define __DEF_IMPLHELPER_EX( N ) \
19 namespace cppu \
20 { \
21 struct class_data##N \
22 { \
23  sal_Int16 m_nTypes; \
24  sal_Bool m_storedTypeRefs; \
25  sal_Bool m_storedId; \
26  sal_Int8 m_id[ 16 ]; \
27  type_entry m_typeEntries[ N + 1 ]; \
28 }; \
29 template< __CLASS_IFC##N > \
30 class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE ImplHelper##N \
31  : public css::lang::XTypeProvider \
32  , __PUBLIC_IFC##N \
33 { \
34  static class_data##N s_cd; \
35 public: \
36  virtual css::uno::Any SAL_CALL queryInterface( css::uno::Type const & rType ) SAL_OVERRIDE \
37  { return ImplHelper_query( rType, (class_data *)&s_cd, this ); } \
38  virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() SAL_OVERRIDE \
39  { return ImplHelper_getTypes( (class_data *)&s_cd ); } \
40  virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() SAL_OVERRIDE \
41  { return ImplHelper_getImplementationId( (class_data *)&s_cd ); } \
42 }; \
43 template< __CLASS_IFC##N > \
44 class_data##N ImplHelper##N< __IFC##N >::s_cd = \
45 __DEF_CLASS_DATA_INIT_EX( N, (ImplHelper##N< __IFC##N > *) ); \
46 template< __CLASS_IFC##N > \
47 class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE WeakImplHelper##N \
48  : public OWeakObject \
49  , public css::lang::XTypeProvider \
50  , __PUBLIC_IFC##N \
51 { \
52  static class_data##N s_cd; \
53 public: \
54  virtual css::uno::Any SAL_CALL queryInterface( css::uno::Type const & rType ) SAL_OVERRIDE \
55  { return WeakImplHelper_query( rType, (class_data *)&s_cd, this, static_cast<OWeakObject *>(this) ); } \
56  virtual void SAL_CALL acquire() SAL_NOEXCEPT SAL_OVERRIDE \
57  { OWeakObject::acquire(); } \
58  virtual void SAL_CALL release() SAL_NOEXCEPT SAL_OVERRIDE \
59  { OWeakObject::release(); } \
60  virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() SAL_OVERRIDE \
61  { return WeakImplHelper_getTypes( (class_data *)&s_cd ); } \
62  virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() SAL_OVERRIDE \
63  { return ImplHelper_getImplementationId( (class_data *)&s_cd ); } \
64 }; \
65 template< __CLASS_IFC##N > \
66 class_data##N WeakImplHelper##N< __IFC##N >::s_cd = \
67 __DEF_CLASS_DATA_INIT_EX( N, (WeakImplHelper##N< __IFC##N > *) ); \
68 template< __CLASS_IFC##N > \
69 class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE WeakAggImplHelper##N \
70  : public OWeakAggObject \
71  , public css::lang::XTypeProvider \
72  , __PUBLIC_IFC##N \
73 { \
74  static class_data##N s_cd; \
75 public: \
76  virtual css::uno::Any SAL_CALL queryInterface( css::uno::Type const & rType ) SAL_OVERRIDE \
77  { return OWeakAggObject::queryInterface( rType ); } \
78  virtual css::uno::Any SAL_CALL queryAggregation( css::uno::Type const & rType ) SAL_OVERRIDE \
79  { return WeakAggImplHelper_queryAgg( rType, (class_data *)&s_cd, this, static_cast<OWeakAggObject *>(this) ); } \
80  virtual void SAL_CALL acquire() SAL_NOEXCEPT SAL_OVERRIDE \
81  { OWeakAggObject::acquire(); } \
82  virtual void SAL_CALL release() SAL_NOEXCEPT SAL_OVERRIDE \
83  { OWeakAggObject::release(); } \
84  virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() SAL_OVERRIDE \
85  { return WeakAggImplHelper_getTypes( (class_data *)&s_cd ); } \
86  virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() SAL_OVERRIDE \
87  { return ImplHelper_getImplementationId( (class_data *)&s_cd ); } \
88 }; \
89 template< __CLASS_IFC##N > \
90 class_data##N WeakAggImplHelper##N< __IFC##N >::s_cd = \
91 __DEF_CLASS_DATA_INIT_EX( N, (WeakAggImplHelper##N< __IFC##N > *) ); \
92 template< class BaseClass, __CLASS_IFC##N > \
93 class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE ImplInheritanceHelper##N \
94  : public BaseClass \
95  , __PUBLIC_IFC##N \
96 { \
97  static class_data##N s_cd; \
98 public: \
99  virtual css::uno::Any SAL_CALL queryInterface( css::uno::Type const & rType ) \
100  { \
101  css::uno::Any aRet( ImplHelper_queryNoXInterface( rType, (class_data *)&s_cd, this ) ); \
102  if (aRet.hasValue()) \
103  return aRet; \
104  return BaseClass::queryInterface( rType ); \
105  } \
106  virtual void SAL_CALL acquire() SAL_NOEXCEPT \
107  { BaseClass::acquire(); } \
108  virtual void SAL_CALL release() SAL_NOEXCEPT \
109  { BaseClass::release(); } \
110  virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() \
111  { return ImplInhHelper_getTypes( (class_data *)&s_cd, BaseClass::getTypes() ); } \
112  virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() \
113  { return ImplHelper_getImplementationId( (class_data *)&s_cd ); } \
114 }; \
115 template< class BaseClass, __CLASS_IFC##N > \
116 class_data##N ImplInheritanceHelper##N< BaseClass, __IFC##N >::s_cd = \
117 __DEF_CLASS_DATA_INIT_EX( N, (ImplInheritanceHelper##N< BaseClass, __IFC##N > *) ); \
118 template< class BaseClass, __CLASS_IFC##N > \
119 class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE AggImplInheritanceHelper##N \
120  : public BaseClass \
121  , __PUBLIC_IFC##N \
122 { \
123  static class_data##N s_cd; \
124 public: \
125  virtual css::uno::Any SAL_CALL queryInterface( css::uno::Type const & rType ) \
126  { return BaseClass::queryInterface( rType ); } \
127  virtual css::uno::Any SAL_CALL queryAggregation( css::uno::Type const & rType ) \
128  { \
129  css::uno::Any aRet( ImplHelper_queryNoXInterface( rType, (class_data *)&s_cd, this ) ); \
130  if (aRet.hasValue()) \
131  return aRet; \
132  return BaseClass::queryAggregation( rType ); \
133  } \
134  virtual void SAL_CALL acquire() SAL_NOEXCEPT \
135  { BaseClass::acquire(); } \
136  virtual void SAL_CALL release() SAL_NOEXCEPT \
137  { BaseClass::release(); } \
138  virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() \
139  { return ImplInhHelper_getTypes( (class_data *)&s_cd, BaseClass::getTypes() ); } \
140  virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() \
141  { return ImplHelper_getImplementationId( (class_data *)&s_cd ); } \
142 }; \
143 template< class BaseClass, __CLASS_IFC##N > \
144 class_data##N AggImplInheritanceHelper##N< BaseClass, __IFC##N >::s_cd = \
145 __DEF_CLASS_DATA_INIT_EX( N, (AggImplInheritanceHelper##N< BaseClass, __IFC##N > *) ); \
146 }
147 
149 
150 #endif
151 
152 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */