1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
19 #ifndef _CPPUHELPER_TYPEPROVIDER_HXX_
20 #define _CPPUHELPER_TYPEPROVIDER_HXX_
22 #include <rtl/alloc.h>
24 #include <com/sun/star/uno/Sequence.hxx>
25 #include "cppuhelperdllapi.h"
31 /** Helper class to implement com::sun::star::lang::XTypeProvider. Construct a static object
32 of this class with your UNO object's supported types.
34 class CPPUHELPER_DLLPUBLIC OTypeCollection
36 ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> _aTypes
;
40 // these are here to force memory de/allocation to sal lib.
41 inline static void * SAL_CALL
operator new( size_t nSize
) SAL_THROW(())
42 { return ::rtl_allocateMemory( nSize
); }
43 inline static void SAL_CALL
operator delete( void * pMem
) SAL_THROW(())
44 { ::rtl_freeMemory( pMem
); }
45 inline static void * SAL_CALL
operator new( size_t, void * pMem
) SAL_THROW(())
47 inline static void SAL_CALL
operator delete( void *, void * ) SAL_THROW(())
51 inline OTypeCollection( const OTypeCollection
& rCollection
)
53 : _aTypes( rCollection
._aTypes
)
56 const ::com::sun::star::uno::Type
& rType1
,
57 const ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> & rAddTypes
= ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
>() )
60 const ::com::sun::star::uno::Type
& rType1
,
61 const ::com::sun::star::uno::Type
& rType2
,
62 const ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> & rAddTypes
= ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
>() )
65 const ::com::sun::star::uno::Type
& rType1
,
66 const ::com::sun::star::uno::Type
& rType2
,
67 const ::com::sun::star::uno::Type
& rType3
,
68 const ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> & rAddTypes
= ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
>() )
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::Type
& rType4
,
75 const ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> & rAddTypes
= ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
>() )
78 const ::com::sun::star::uno::Type
& rType1
,
79 const ::com::sun::star::uno::Type
& rType2
,
80 const ::com::sun::star::uno::Type
& rType3
,
81 const ::com::sun::star::uno::Type
& rType4
,
82 const ::com::sun::star::uno::Type
& rType5
,
83 const ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> & rAddTypes
= ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
>() )
86 const ::com::sun::star::uno::Type
& rType1
,
87 const ::com::sun::star::uno::Type
& rType2
,
88 const ::com::sun::star::uno::Type
& rType3
,
89 const ::com::sun::star::uno::Type
& rType4
,
90 const ::com::sun::star::uno::Type
& rType5
,
91 const ::com::sun::star::uno::Type
& rType6
,
92 const ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> & rAddTypes
= ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
>() )
95 const ::com::sun::star::uno::Type
& rType1
,
96 const ::com::sun::star::uno::Type
& rType2
,
97 const ::com::sun::star::uno::Type
& rType3
,
98 const ::com::sun::star::uno::Type
& rType4
,
99 const ::com::sun::star::uno::Type
& rType5
,
100 const ::com::sun::star::uno::Type
& rType6
,
101 const ::com::sun::star::uno::Type
& rType7
,
102 const ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> & rAddTypes
= ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
>() )
105 const ::com::sun::star::uno::Type
& rType1
,
106 const ::com::sun::star::uno::Type
& rType2
,
107 const ::com::sun::star::uno::Type
& rType3
,
108 const ::com::sun::star::uno::Type
& rType4
,
109 const ::com::sun::star::uno::Type
& rType5
,
110 const ::com::sun::star::uno::Type
& rType6
,
111 const ::com::sun::star::uno::Type
& rType7
,
112 const ::com::sun::star::uno::Type
& rType8
,
113 const ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> & rAddTypes
= ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
>() )
116 const ::com::sun::star::uno::Type
& rType1
,
117 const ::com::sun::star::uno::Type
& rType2
,
118 const ::com::sun::star::uno::Type
& rType3
,
119 const ::com::sun::star::uno::Type
& rType4
,
120 const ::com::sun::star::uno::Type
& rType5
,
121 const ::com::sun::star::uno::Type
& rType6
,
122 const ::com::sun::star::uno::Type
& rType7
,
123 const ::com::sun::star::uno::Type
& rType8
,
124 const ::com::sun::star::uno::Type
& rType9
,
125 const ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> & rAddTypes
= ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
>() )
128 const ::com::sun::star::uno::Type
& rType1
,
129 const ::com::sun::star::uno::Type
& rType2
,
130 const ::com::sun::star::uno::Type
& rType3
,
131 const ::com::sun::star::uno::Type
& rType4
,
132 const ::com::sun::star::uno::Type
& rType5
,
133 const ::com::sun::star::uno::Type
& rType6
,
134 const ::com::sun::star::uno::Type
& rType7
,
135 const ::com::sun::star::uno::Type
& rType8
,
136 const ::com::sun::star::uno::Type
& rType9
,
137 const ::com::sun::star::uno::Type
& rType10
,
138 const ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> & rAddTypes
= ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
>() )
141 const ::com::sun::star::uno::Type
& rType1
,
142 const ::com::sun::star::uno::Type
& rType2
,
143 const ::com::sun::star::uno::Type
& rType3
,
144 const ::com::sun::star::uno::Type
& rType4
,
145 const ::com::sun::star::uno::Type
& rType5
,
146 const ::com::sun::star::uno::Type
& rType6
,
147 const ::com::sun::star::uno::Type
& rType7
,
148 const ::com::sun::star::uno::Type
& rType8
,
149 const ::com::sun::star::uno::Type
& rType9
,
150 const ::com::sun::star::uno::Type
& rType10
,
151 const ::com::sun::star::uno::Type
& rType11
,
152 const ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> & rAddTypes
= ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
>() )
155 const ::com::sun::star::uno::Type
& rType1
,
156 const ::com::sun::star::uno::Type
& rType2
,
157 const ::com::sun::star::uno::Type
& rType3
,
158 const ::com::sun::star::uno::Type
& rType4
,
159 const ::com::sun::star::uno::Type
& rType5
,
160 const ::com::sun::star::uno::Type
& rType6
,
161 const ::com::sun::star::uno::Type
& rType7
,
162 const ::com::sun::star::uno::Type
& rType8
,
163 const ::com::sun::star::uno::Type
& rType9
,
164 const ::com::sun::star::uno::Type
& rType10
,
165 const ::com::sun::star::uno::Type
& rType11
,
166 const ::com::sun::star::uno::Type
& rType12
,
167 const ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> & rAddTypes
= ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
>() )
170 /** Called upon XTypeProvider::getTypes().
172 @return type collection
174 ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> SAL_CALL
getTypes() SAL_THROW(())
178 /** Helper class to implement com::sun::star::lang::XTypeProvider. Construct a static object
179 of this class for your UNO object's implementation id.
181 class CPPUHELPER_DLLPUBLIC OImplementationId
183 mutable ::com::sun::star::uno::Sequence
< sal_Int8
> * _pSeq
;
184 sal_Bool _bUseEthernetAddress
;
189 // these are here to force memory de/allocation to sal lib.
190 inline static void * SAL_CALL
operator new( size_t nSize
) SAL_THROW(())
191 { return ::rtl_allocateMemory( nSize
); }
192 inline static void SAL_CALL
operator delete( void * pMem
) SAL_THROW(())
193 { ::rtl_freeMemory( pMem
); }
194 inline static void * SAL_CALL
operator new( size_t, void * pMem
) SAL_THROW(())
196 inline static void SAL_CALL
operator delete( void *, void * ) SAL_THROW(())
199 ~OImplementationId() SAL_THROW(());
205 @param bUseEthernetAddress whether an ethernet mac address should be taken into account
207 inline OImplementationId( sal_Bool bUseEthernetAddress
= sal_True
) SAL_THROW(())
209 , _bUseEthernetAddress( bUseEthernetAddress
)
211 /** Constructor giving implementation id.
213 @param rSeq implementation id
215 inline OImplementationId( const ::com::sun::star::uno::Sequence
< sal_Int8
> & rSeq
) SAL_THROW(())
216 : _pSeq( new ::com::sun::star::uno::Sequence
< sal_Int8
>( rSeq
) )
218 inline OImplementationId( const OImplementationId
& rId
) SAL_THROW(())
219 : _pSeq( new ::com::sun::star::uno::Sequence
< sal_Int8
>( rId
.getImplementationId() ) )
222 /** Called upon XTypeProvider::getImplementationId().
224 @return implementation id
226 ::com::sun::star::uno::Sequence
< sal_Int8
> SAL_CALL
getImplementationId() const SAL_THROW(());
233 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */