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_TYPEPROVIDER_HXX_ 24 #define _CPPUHELPER_TYPEPROVIDER_HXX_ 25 26 #include <rtl/alloc.h> 27 #include <rtl/uuid.h> 28 #include <com/sun/star/uno/Sequence.hxx> 29 30 #include "cppuhelper/cppuhelperdllapi.h" 31 32 namespace cppu 33 { 34 35 /** Helper class to implement ::com::sun::star::lang::XTypeProvider. Construct a static object 36 of this class with your UNO object's supported types. 37 */ 38 class CPPUHELPER_DLLPUBLIC OTypeCollection 39 { 40 ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > _aTypes; 41 42 public: 43 // these are here to force memory de/allocation to sal lib. 44 /** @internal */ operator new(size_t nSize)45 inline static void * SAL_CALL operator new( size_t nSize ) SAL_THROW( () ) 46 { return ::rtl_allocateMemory( nSize ); } 47 /** @internal */ operator delete(void * pMem)48 inline static void SAL_CALL operator delete( void * pMem ) SAL_THROW( () ) 49 { ::rtl_freeMemory( pMem ); } 50 /** @internal */ operator new(size_t,void * pMem)51 inline static void * SAL_CALL operator new( size_t, void * pMem ) SAL_THROW( () ) 52 { return pMem; } 53 /** @internal */ operator delete(void *,void *)54 inline static void SAL_CALL operator delete( void *, void * ) SAL_THROW( () ) 55 {} 56 57 inline OTypeCollection( const OTypeCollection & rCollection ) 58 SAL_THROW( () ) 59 : _aTypes( rCollection._aTypes ) 60 {} 61 OTypeCollection( 62 const ::com::sun::star::uno::Type & rType1, 63 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > & rAddTypes = ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >() ) 64 SAL_THROW( () ); 65 OTypeCollection( 66 const ::com::sun::star::uno::Type & rType1, 67 const ::com::sun::star::uno::Type & rType2, 68 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > & rAddTypes = ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >() ) 69 SAL_THROW( () ); 70 OTypeCollection( 71 const ::com::sun::star::uno::Type & rType1, 72 const ::com::sun::star::uno::Type & rType2, 73 const ::com::sun::star::uno::Type & rType3, 74 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > & rAddTypes = ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >() ) 75 SAL_THROW( () ); 76 OTypeCollection( 77 const ::com::sun::star::uno::Type & rType1, 78 const ::com::sun::star::uno::Type & rType2, 79 const ::com::sun::star::uno::Type & rType3, 80 const ::com::sun::star::uno::Type & rType4, 81 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > & rAddTypes = ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >() ) 82 SAL_THROW( () ); 83 OTypeCollection( 84 const ::com::sun::star::uno::Type & rType1, 85 const ::com::sun::star::uno::Type & rType2, 86 const ::com::sun::star::uno::Type & rType3, 87 const ::com::sun::star::uno::Type & rType4, 88 const ::com::sun::star::uno::Type & rType5, 89 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > & rAddTypes = ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >() ) 90 SAL_THROW( () ); 91 OTypeCollection( 92 const ::com::sun::star::uno::Type & rType1, 93 const ::com::sun::star::uno::Type & rType2, 94 const ::com::sun::star::uno::Type & rType3, 95 const ::com::sun::star::uno::Type & rType4, 96 const ::com::sun::star::uno::Type & rType5, 97 const ::com::sun::star::uno::Type & rType6, 98 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > & rAddTypes = ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >() ) 99 SAL_THROW( () ); 100 OTypeCollection( 101 const ::com::sun::star::uno::Type & rType1, 102 const ::com::sun::star::uno::Type & rType2, 103 const ::com::sun::star::uno::Type & rType3, 104 const ::com::sun::star::uno::Type & rType4, 105 const ::com::sun::star::uno::Type & rType5, 106 const ::com::sun::star::uno::Type & rType6, 107 const ::com::sun::star::uno::Type & rType7, 108 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > & rAddTypes = ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >() ) 109 SAL_THROW( () ); 110 OTypeCollection( 111 const ::com::sun::star::uno::Type & rType1, 112 const ::com::sun::star::uno::Type & rType2, 113 const ::com::sun::star::uno::Type & rType3, 114 const ::com::sun::star::uno::Type & rType4, 115 const ::com::sun::star::uno::Type & rType5, 116 const ::com::sun::star::uno::Type & rType6, 117 const ::com::sun::star::uno::Type & rType7, 118 const ::com::sun::star::uno::Type & rType8, 119 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > & rAddTypes = ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >() ) 120 SAL_THROW( () ); 121 OTypeCollection( 122 const ::com::sun::star::uno::Type & rType1, 123 const ::com::sun::star::uno::Type & rType2, 124 const ::com::sun::star::uno::Type & rType3, 125 const ::com::sun::star::uno::Type & rType4, 126 const ::com::sun::star::uno::Type & rType5, 127 const ::com::sun::star::uno::Type & rType6, 128 const ::com::sun::star::uno::Type & rType7, 129 const ::com::sun::star::uno::Type & rType8, 130 const ::com::sun::star::uno::Type & rType9, 131 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > & rAddTypes = ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >() ) 132 SAL_THROW( () ); 133 OTypeCollection( 134 const ::com::sun::star::uno::Type & rType1, 135 const ::com::sun::star::uno::Type & rType2, 136 const ::com::sun::star::uno::Type & rType3, 137 const ::com::sun::star::uno::Type & rType4, 138 const ::com::sun::star::uno::Type & rType5, 139 const ::com::sun::star::uno::Type & rType6, 140 const ::com::sun::star::uno::Type & rType7, 141 const ::com::sun::star::uno::Type & rType8, 142 const ::com::sun::star::uno::Type & rType9, 143 const ::com::sun::star::uno::Type & rType10, 144 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > & rAddTypes = ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >() ) 145 SAL_THROW( () ); 146 OTypeCollection( 147 const ::com::sun::star::uno::Type & rType1, 148 const ::com::sun::star::uno::Type & rType2, 149 const ::com::sun::star::uno::Type & rType3, 150 const ::com::sun::star::uno::Type & rType4, 151 const ::com::sun::star::uno::Type & rType5, 152 const ::com::sun::star::uno::Type & rType6, 153 const ::com::sun::star::uno::Type & rType7, 154 const ::com::sun::star::uno::Type & rType8, 155 const ::com::sun::star::uno::Type & rType9, 156 const ::com::sun::star::uno::Type & rType10, 157 const ::com::sun::star::uno::Type & rType11, 158 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > & rAddTypes = ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >() ) 159 SAL_THROW( () ); 160 OTypeCollection( 161 const ::com::sun::star::uno::Type & rType1, 162 const ::com::sun::star::uno::Type & rType2, 163 const ::com::sun::star::uno::Type & rType3, 164 const ::com::sun::star::uno::Type & rType4, 165 const ::com::sun::star::uno::Type & rType5, 166 const ::com::sun::star::uno::Type & rType6, 167 const ::com::sun::star::uno::Type & rType7, 168 const ::com::sun::star::uno::Type & rType8, 169 const ::com::sun::star::uno::Type & rType9, 170 const ::com::sun::star::uno::Type & rType10, 171 const ::com::sun::star::uno::Type & rType11, 172 const ::com::sun::star::uno::Type & rType12, 173 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > & rAddTypes = ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >() ) 174 SAL_THROW( () ); 175 176 /** Called upon XTypeProvider::getTypes(). 177 178 @return type collection 179 */ getTypes()180 ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() SAL_THROW( () ) 181 { return _aTypes; } 182 }; 183 184 /** Helper class to implement ::com::sun::star::lang::XTypeProvider. Construct a static object 185 of this class for your UNO object's implementation id. 186 */ 187 class CPPUHELPER_DLLPUBLIC OImplementationId 188 { 189 /** @internal */ 190 mutable ::com::sun::star::uno::Sequence< sal_Int8 > * _pSeq; 191 /** @internal */ 192 sal_Bool _bUseEthernetAddress; 193 194 public: 195 // these are here to force memory de/allocation to sal lib. 196 /** @internal */ operator new(size_t nSize)197 inline static void * SAL_CALL operator new( size_t nSize ) SAL_THROW( () ) 198 { return ::rtl_allocateMemory( nSize ); } 199 /** @internal */ operator delete(void * pMem)200 inline static void SAL_CALL operator delete( void * pMem ) SAL_THROW( () ) 201 { ::rtl_freeMemory( pMem ); } 202 /** @internal */ operator new(size_t,void * pMem)203 inline static void * SAL_CALL operator new( size_t, void * pMem ) SAL_THROW( () ) 204 { return pMem; } 205 /** @internal */ operator delete(void *,void *)206 inline static void SAL_CALL operator delete( void *, void * ) SAL_THROW( () ) 207 {} 208 209 /** @internal */ 210 ~OImplementationId() SAL_THROW( () ); 211 /** Constructor. 212 213 @param bUseEthernetAddress whether an ethernet mac address should be taken into account 214 */ 215 inline OImplementationId( sal_Bool bUseEthernetAddress = sal_True ) SAL_THROW( () ) 216 : _pSeq( 0 ) 217 , _bUseEthernetAddress( bUseEthernetAddress ) 218 {} 219 /** Constructor giving implementation id. 220 221 @param rSeq implementation id 222 */ 223 inline OImplementationId( const ::com::sun::star::uno::Sequence< sal_Int8 > & rSeq ) SAL_THROW( () ) 224 : _pSeq( new ::com::sun::star::uno::Sequence< sal_Int8 >( rSeq ) ) 225 {} 226 inline OImplementationId( const OImplementationId & rId ) SAL_THROW( () ) 227 : _pSeq( new ::com::sun::star::uno::Sequence< sal_Int8 >( rId.getImplementationId() ) ) 228 {} 229 230 /** Called upon XTypeProvider::getImplementationId(). 231 232 @return implementation id 233 */ 234 ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() const SAL_THROW( () ); 235 }; 236 237 } 238 239 #endif 240