LibreOffice Module stoc (master) 1
base.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// #define TEST_LIST_CLASSES
20
21#ifndef INCLUDED_STOC_SOURCE_COREREFLECTION_BASE_HXX
22#define INCLUDED_STOC_SOURCE_COREREFLECTION_BASE_HXX
23
24#include <sal/config.h>
25
26#include <o3tl/any.hxx>
27#include <osl/mutex.hxx>
28#include <uno/mapping.hxx>
29#include <uno/dispatcher.h>
32#include <rtl/ustring.hxx>
33#include <rtl/ref.hxx>
34
35#include "lrucache.hxx"
36
37#ifdef TEST_LIST_CLASSES
38#include <vector>
39#include <algorithm>
40#endif
41#include <unordered_map>
42#include <memory>
43
44#include <com/sun/star/lang/XServiceInfo.hpp>
45#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
46
47#include <com/sun/star/reflection/XIdlReflection.hpp>
48
49namespace com::sun::star::uno { class XComponentContext; }
50namespace com::sun::star::reflection { class XIdlClass; }
51namespace com::sun::star::reflection { class XIdlField; }
52namespace com::sun::star::reflection { class XIdlMethod; }
53
54namespace stoc_corefl
55{
56
57#ifdef TEST_LIST_CLASSES
58extern std::vector<OUString> g_aClassNames;
59#endif
60
61
62::osl::Mutex & getMutexAccess();
63
64
65inline bool td_equals( typelib_TypeDescription * pTD, typelib_TypeDescriptionReference * pType )
66{
67 return (pTD->pWeakRef == pType ||
68 (pTD->pTypeName->length == pType->pTypeName->length &&
69 rtl_ustr_compare( pTD->pTypeName->buffer, pType->pTypeName->buffer ) == 0));
70}
71
72typedef std::unordered_map< OUString, css::uno::WeakReference< css::reflection::XIdlField > > OUString2Field;
73typedef std::unordered_map< OUString, css::uno::WeakReference< css::reflection::XIdlMethod > > OUString2Method;
74
75
77 : public ::cppu::WeakComponentImplHelper<
78 css::reflection::XIdlReflection,
79 css::container::XHierarchicalNameAccess,
80 css::lang::XServiceInfo>
81{
82 ::osl::Mutex _aComponentMutex;
83 css::uno::Reference< css::container::XHierarchicalNameAccess > _xTDMgr;
84
85 // caching
87
88 css::uno::Mapping _aCpp2Uno;
89 css::uno::Mapping _aUno2Cpp;
90
91 inline css::uno::Reference< css::reflection::XIdlClass > constructClass( typelib_TypeDescription * pTypeDescr );
92
93public:
95 const css::uno::Mapping & getCpp2Uno();
97 const css::uno::Mapping & getUno2Cpp();
99 uno_Interface * mapToUno( const css::uno::Any & rObj, typelib_InterfaceTypeDescription * pTo );
100
101 // ctor/ dtor
102 explicit IdlReflectionServiceImpl( const css::uno::Reference< css::uno::XComponentContext > & xContext );
103 virtual ~IdlReflectionServiceImpl() override;
104
105 // WeakComponentImplHelper
106 virtual void SAL_CALL disposing() override;
107
108 // XServiceInfo
109 virtual OUString SAL_CALL getImplementationName() override;
110 virtual sal_Bool SAL_CALL supportsService( const OUString & rServiceName ) override;
111 virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
112
113 // XIdlReflection
114 virtual css::uno::Reference< css::reflection::XIdlClass > SAL_CALL forName( const OUString & rTypeName ) override;
115 virtual css::uno::Reference< css::reflection::XIdlClass > SAL_CALL getType( const css::uno::Any & rObj ) override;
116
117 // XHierarchicalNameAccess
118 virtual css::uno::Any SAL_CALL getByHierarchicalName( const OUString & rName ) override;
119 virtual sal_Bool SAL_CALL hasByHierarchicalName( const OUString & rName ) override;
120
122 css::uno::Reference< css::reflection::XIdlClass > forType( typelib_TypeDescription * pTypeDescr );
124 css::uno::Reference< css::reflection::XIdlClass > forType( typelib_TypeDescriptionReference * pRef );
125};
126
127
129 : public ::cppu::WeakImplHelper< css::reflection::XIdlClass >
130{
133
134 OUString _aName;
135 css::uno::TypeClass _eTypeClass;
136
138
139public:
141 { return _pTypeDescr; }
143 { return m_xReflection.get(); }
144
145 // Ctor
147 OUString aName, typelib_TypeClass eTypeClass,
148 typelib_TypeDescription * pTypeDescr );
149 virtual ~IdlClassImpl() override;
150
151 // XIdlClassImpl default implementation
152 virtual css::uno::TypeClass SAL_CALL getTypeClass() override;
153 virtual OUString SAL_CALL getName() override;
154 virtual sal_Bool SAL_CALL equals( const css::uno::Reference< css::reflection::XIdlClass >& xType ) override;
155
156 virtual sal_Bool SAL_CALL isAssignableFrom( const css::uno::Reference< css::reflection::XIdlClass > & xType ) override;
157 virtual void SAL_CALL createObject( css::uno::Any & rObj ) override;
158
159 // def impl ????
160 virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlClass > > SAL_CALL getClasses() override;
161 virtual css::uno::Reference< css::reflection::XIdlClass > SAL_CALL getClass( const OUString & rName ) override;
162 virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlClass > > SAL_CALL getInterfaces() override;
163
164 // structs, interfaces
165 virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlClass > > SAL_CALL getSuperclasses() override;
166 // structs
167 virtual css::uno::Reference< css::reflection::XIdlField > SAL_CALL getField( const OUString & rName ) override;
168 virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlField > > SAL_CALL getFields() override;
169 // interfaces
170 virtual css::uno::Uik SAL_CALL getUik() override;
171 virtual css::uno::Reference< css::reflection::XIdlMethod > SAL_CALL getMethod( const OUString & rName ) override;
172 virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlMethod > > SAL_CALL getMethods() override;
173 // array
174 virtual css::uno::Reference< css::reflection::XIdlClass > SAL_CALL getComponentType() override;
175 virtual css::uno::Reference< css::reflection::XIdlArray > SAL_CALL getArray() override;
176};
177
178
180 : public IdlClassImpl
181{
182 typedef std::pair< OUString, typelib_TypeDescription * > MemberInit;
183
184 css::uno::Sequence< css::uno::Reference< css::reflection::XIdlClass > > _xSuperClasses;
185
186 std::unique_ptr<MemberInit[]> _pSortedMemberInit; // first methods, then attributes
189 sal_Int32 _nMethods;
190 sal_Int32 _nAttributes;
191
192 void initMembers();
193
194public:
195 typelib_InterfaceTypeDescription * getTypeDescr() const
196 { return reinterpret_cast<typelib_InterfaceTypeDescription *>(IdlClassImpl::getTypeDescr()); }
197
198 // ctor/ dtor
200 const OUString & rName, typelib_TypeClass eTypeClass,
201 typelib_TypeDescription * pTypeDescr )
202 : IdlClassImpl( pReflection, rName, eTypeClass, pTypeDescr )
203 , _nMethods( 0 )
204 , _nAttributes( 0 )
205 {}
206 virtual ~InterfaceIdlClassImpl() override;
207
208 // IdlClassImpl modifications
209 virtual sal_Bool SAL_CALL isAssignableFrom( const css::uno::Reference< css::reflection::XIdlClass > & xType ) override;
210 virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlClass > > SAL_CALL getSuperclasses() override;
211 virtual css::uno::Uik SAL_CALL getUik() override;
212 virtual css::uno::Reference< css::reflection::XIdlMethod > SAL_CALL getMethod( const OUString & rName ) override;
213 virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlMethod > > SAL_CALL getMethods() override;
214 virtual css::uno::Reference< css::reflection::XIdlField > SAL_CALL getField( const OUString & rName ) override;
215 virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlField > > SAL_CALL getFields() override;
216 virtual void SAL_CALL createObject( css::uno::Any & rObj ) override;
217};
218
219
221 : public IdlClassImpl
222{
223 css::uno::Reference< css::reflection::XIdlClass >
225 std::optional< css::uno::Sequence< css::uno::Reference< css::reflection::XIdlField > > >
228
229public:
230 typelib_CompoundTypeDescription * getTypeDescr() const
231 { return reinterpret_cast<typelib_CompoundTypeDescription *>(IdlClassImpl::getTypeDescr()); }
232
233 // ctor/ dtor
235 const OUString & rName, typelib_TypeClass eTypeClass,
236 typelib_TypeDescription * pTypeDescr )
237 : IdlClassImpl( pReflection, rName, eTypeClass, pTypeDescr )
238 {}
239 virtual ~CompoundIdlClassImpl() override;
240
241 // IdlClassImpl modifications
242 virtual sal_Bool SAL_CALL isAssignableFrom( const css::uno::Reference< css::reflection::XIdlClass > & xType ) override;
243 virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlClass > > SAL_CALL getSuperclasses() override;
244 virtual css::uno::Reference< css::reflection::XIdlField > SAL_CALL getField( const OUString & rName ) override;
245 virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlField > > SAL_CALL getFields() override;
246};
247
248
249typedef cppu::ImplInheritanceHelper<IdlClassImpl, css::reflection::XIdlArray> ArrayIdlClassImpl_Base;
251{
252public:
253 typelib_IndirectTypeDescription * getTypeDescr() const
254 { return reinterpret_cast<typelib_IndirectTypeDescription *>(IdlClassImpl::getTypeDescr()); }
255
256 // ctor
258 const OUString & rName, typelib_TypeClass eTypeClass,
259 typelib_TypeDescription * pTypeDescr )
260 : ArrayIdlClassImpl_Base( pReflection, rName, eTypeClass, pTypeDescr )
261 {}
262
263 // IdlClassImpl modifications
264 virtual sal_Bool SAL_CALL isAssignableFrom( const css::uno::Reference< css::reflection::XIdlClass > & xType ) override;
265 virtual css::uno::Reference< css::reflection::XIdlClass > SAL_CALL getComponentType() override;
266 virtual css::uno::Reference< css::reflection::XIdlArray > SAL_CALL getArray() override;
267
268 // XIdlArray
269 virtual void SAL_CALL realloc( css::uno::Any & rArray, sal_Int32 nLen ) override;
270 virtual sal_Int32 SAL_CALL getLen( const css::uno::Any & rArray ) override;
271 virtual css::uno::Any SAL_CALL get( const css::uno::Any & rArray, sal_Int32 nIndex ) override;
272 virtual void SAL_CALL set( css::uno::Any & rArray, sal_Int32 nIndex, const css::uno::Any & rNewValue ) override;
273};
274
275
277 : public IdlClassImpl
278{
279 std::optional< css::uno::Sequence< css::uno::Reference< css::reflection::XIdlField > > > m_xFields;
281
282public:
283 typelib_EnumTypeDescription * getTypeDescr() const
284 { return reinterpret_cast<typelib_EnumTypeDescription *>(IdlClassImpl::getTypeDescr()); }
285
286 // ctor/ dtor
288 const OUString & rName, typelib_TypeClass eTypeClass,
289 typelib_TypeDescription * pTypeDescr )
290 : IdlClassImpl( pReflection, rName, eTypeClass, pTypeDescr )
291 {}
292 virtual ~EnumIdlClassImpl() override;
293
294 // IdlClassImpl modifications
295 virtual css::uno::Reference< css::reflection::XIdlField > SAL_CALL getField( const OUString & rName ) override;
296 virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlField > > SAL_CALL getFields() override;
297 virtual void SAL_CALL createObject( css::uno::Any & rObj ) override;
298};
299
300
302 : public ::cppu::WeakImplHelper< css::reflection::XIdlMember >
303{
306 OUString _aName;
307
310
311protected:
312 css::uno::Reference< css::reflection::XIdlClass > _xDeclClass;
313
314public:
316 { return m_xReflection.get(); }
318 { return _pTypeDescr; }
320 { return _pDeclTypeDescr; }
321
322 // ctor/ dtor
323 IdlMemberImpl( IdlReflectionServiceImpl * pReflection, OUString aName,
324 typelib_TypeDescription * pTypeDescr, typelib_TypeDescription * pDeclTypeDescr );
325 virtual ~IdlMemberImpl() override;
326
327 // XIdlMember
328 virtual css::uno::Reference< css::reflection::XIdlClass > SAL_CALL getDeclaringClass() override;
329 virtual OUString SAL_CALL getName() override;
330};
331
332
333// coerces to type descr pTo else queries for it: the interface pointer is returned via rDest
334// ## type to XidlClass coercion possible
335inline bool extract(
336 const css::uno::Any & rObj, typelib_InterfaceTypeDescription * pTo,
337 css::uno::Reference< css::uno::XInterface > & rDest,
339{
340 rDest.clear();
341 if (nullptr != pTo)
342 {
343 if (! rObj.hasValue())
344 return true;
345 if (rObj.getValueTypeClass() == css::uno::TypeClass_INTERFACE)
346 {
347 return ::uno_type_assignData(
348 &rDest, pTo->aBase.pWeakRef,
349 const_cast< void * >( rObj.getValue() ), rObj.getValueTypeRef(),
350 reinterpret_cast< uno_QueryInterfaceFunc >(css::uno::cpp_queryInterface),
351 reinterpret_cast< uno_AcquireFunc >(css::uno::cpp_acquire),
352 reinterpret_cast< uno_ReleaseFunc >(css::uno::cpp_release) );
353 }
354 else if (auto t = o3tl::tryAccess<css::uno::Type>(rObj))
355 {
356 rDest = pRefl->forType( t->getTypeLibType() );
357 return rDest.is();
358 }
359 }
360 return false;
361}
362
363inline bool coerce_assign(
364 void * pDest, typelib_TypeDescription * pTD, const css::uno::Any & rSource,
366{
367 if (pTD->eTypeClass == typelib_TypeClass_INTERFACE)
368 {
369 css::uno::Reference< css::uno::XInterface > xVal;
370 if (extract( rSource, reinterpret_cast<typelib_InterfaceTypeDescription *>(pTD), xVal, pRefl ))
371 {
372 if (*static_cast<css::uno::XInterface **>(pDest))
373 (*static_cast<css::uno::XInterface **>(pDest))->release();
374 *static_cast<css::uno::XInterface **>(pDest) = xVal.get();
375 if (*static_cast<css::uno::XInterface **>(pDest))
376 (*static_cast<css::uno::XInterface **>(pDest))->acquire();
377 return true;
378 }
379 return false;
380 }
381 else if (pTD->eTypeClass == typelib_TypeClass_ANY)
382 {
383 return uno_assignData(
384 pDest, pTD,
385 const_cast<css::uno::Any *>(&rSource), pTD,
386 reinterpret_cast< uno_QueryInterfaceFunc >(css::uno::cpp_queryInterface),
387 reinterpret_cast< uno_AcquireFunc >(css::uno::cpp_acquire),
388 reinterpret_cast< uno_ReleaseFunc >(css::uno::cpp_release) );
389 }
390 else
391 {
392 return uno_type_assignData(
393 pDest, pTD->pWeakRef,
394 const_cast<void *>(rSource.getValue()), rSource.getValueTypeRef(),
395 reinterpret_cast< uno_QueryInterfaceFunc >(css::uno::cpp_queryInterface),
396 reinterpret_cast< uno_AcquireFunc >(css::uno::cpp_acquire),
397 reinterpret_cast< uno_ReleaseFunc >(css::uno::cpp_release) );
398 }
399}
400
401}
402
403
404#endif // INCLUDED_STOC_SOURCE_COREREFLECTION_BASE_HXX
405
406/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
XPropertyListType t
virtual css::uno::Any SAL_CALL get(const css::uno::Any &rArray, sal_Int32 nIndex) override
Definition: crarray.cxx:73
virtual void SAL_CALL set(css::uno::Any &rArray, sal_Int32 nIndex, const css::uno::Any &rNewValue) override
Definition: crarray.cxx:103
typelib_IndirectTypeDescription * getTypeDescr() const
Definition: base.hxx:253
virtual sal_Int32 SAL_CALL getLen(const css::uno::Any &rArray) override
Definition: crarray.cxx:60
virtual void SAL_CALL realloc(css::uno::Any &rArray, sal_Int32 nLen) override
Definition: crarray.cxx:36
virtual sal_Bool SAL_CALL isAssignableFrom(const css::uno::Reference< css::reflection::XIdlClass > &xType) override
Definition: crarray.cxx:145
virtual css::uno::Reference< css::reflection::XIdlClass > SAL_CALL getComponentType() override
Definition: crarray.cxx:153
ArrayIdlClassImpl(IdlReflectionServiceImpl *pReflection, const OUString &rName, typelib_TypeClass eTypeClass, typelib_TypeDescription *pTypeDescr)
Definition: base.hxx:257
virtual css::uno::Reference< css::reflection::XIdlArray > SAL_CALL getArray() override
Definition: crarray.cxx:158
virtual ~CompoundIdlClassImpl() override
Definition: crcomp.cxx:209
typelib_CompoundTypeDescription * getTypeDescr() const
Definition: base.hxx:230
CompoundIdlClassImpl(IdlReflectionServiceImpl *pReflection, const OUString &rName, typelib_TypeClass eTypeClass, typelib_TypeDescription *pTypeDescr)
Definition: base.hxx:234
virtual css::uno::Reference< css::reflection::XIdlField > SAL_CALL getField(const OUString &rName) override
Definition: crcomp.cxx:255
std::optional< css::uno::Sequence< css::uno::Reference< css::reflection::XIdlField > > > m_xFields
Definition: base.hxx:226
virtual sal_Bool SAL_CALL isAssignableFrom(const css::uno::Reference< css::reflection::XIdlClass > &xType) override
Definition: crcomp.cxx:214
css::uno::Reference< css::reflection::XIdlClass > _xSuperClass
Definition: base.hxx:224
virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlField > > SAL_CALL getFields() override
Definition: crcomp.cxx:267
virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlClass > > SAL_CALL getSuperclasses() override
Definition: crcomp.cxx:237
OUString2Field _aName2Field
Definition: base.hxx:280
virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlField > > SAL_CALL getFields() override
Definition: crenum.cxx:124
EnumIdlClassImpl(IdlReflectionServiceImpl *pReflection, const OUString &rName, typelib_TypeClass eTypeClass, typelib_TypeDescription *pTypeDescr)
Definition: base.hxx:287
typelib_EnumTypeDescription * getTypeDescr() const
Definition: base.hxx:283
virtual css::uno::Reference< css::reflection::XIdlField > SAL_CALL getField(const OUString &rName) override
Definition: crenum.cxx:112
std::optional< css::uno::Sequence< css::uno::Reference< css::reflection::XIdlField > > > m_xFields
Definition: base.hxx:279
virtual void SAL_CALL createObject(css::uno::Any &rObj) override
Definition: crenum.cxx:148
virtual ~EnumIdlClassImpl() override
Definition: crenum.cxx:106
virtual sal_Bool SAL_CALL isAssignableFrom(const css::uno::Reference< css::reflection::XIdlClass > &xType) override
Definition: crbase.cxx:114
virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlField > > SAL_CALL getFields() override
Definition: crbase.cxx:173
IdlReflectionServiceImpl * getReflection() const
Definition: base.hxx:142
css::uno::TypeClass _eTypeClass
Definition: base.hxx:135
virtual css::uno::Reference< css::reflection::XIdlArray > SAL_CALL getArray() override
Definition: crbase.cxx:200
virtual css::uno::Reference< css::reflection::XIdlMethod > SAL_CALL getMethod(const OUString &rName) override
Definition: crbase.cxx:184
virtual css::uno::Reference< css::reflection::XIdlClass > SAL_CALL getComponentType() override
Definition: crbase.cxx:195
virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlClass > > SAL_CALL getInterfaces() override
Definition: crbase.cxx:154
rtl::Reference< IdlReflectionServiceImpl > m_xReflection
Definition: base.hxx:132
virtual void SAL_CALL createObject(css::uno::Any &rObj) override
Definition: crbase.cxx:133
virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlMethod > > SAL_CALL getMethods() override
Definition: crbase.cxx:189
virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlClass > > SAL_CALL getClasses() override
Definition: crbase.cxx:142
typelib_TypeDescription * getTypeDescr() const
Definition: base.hxx:140
virtual sal_Bool SAL_CALL equals(const css::uno::Reference< css::reflection::XIdlClass > &xType) override
Definition: crbase.cxx:92
virtual OUString SAL_CALL getName() override
Definition: crbase.cxx:87
virtual ~IdlClassImpl() override
Definition: crbase.cxx:67
virtual css::uno::Reference< css::reflection::XIdlField > SAL_CALL getField(const OUString &rName) override
Definition: crbase.cxx:168
virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlClass > > SAL_CALL getSuperclasses() override
Definition: crbase.cxx:162
typelib_TypeDescription * _pTypeDescr
Definition: base.hxx:137
virtual css::uno::TypeClass SAL_CALL getTypeClass() override
Definition: crbase.cxx:82
IdlClassImpl(IdlReflectionServiceImpl *pReflection, OUString aName, typelib_TypeClass eTypeClass, typelib_TypeDescription *pTypeDescr)
Definition: crbase.cxx:45
virtual css::uno::Reference< css::reflection::XIdlClass > SAL_CALL getClass(const OUString &rName) override
Definition: crbase.cxx:148
virtual css::uno::Uik SAL_CALL getUik() override
Definition: crbase.cxx:179
virtual css::uno::Reference< css::reflection::XIdlClass > SAL_CALL getDeclaringClass() override
Definition: crbase.cxx:230
virtual ~IdlMemberImpl() override
Definition: crbase.cxx:222
css::uno::Reference< css::reflection::XIdlClass > _xDeclClass
Definition: base.hxx:312
IdlMemberImpl(IdlReflectionServiceImpl *pReflection, OUString aName, typelib_TypeDescription *pTypeDescr, typelib_TypeDescription *pDeclTypeDescr)
Definition: crbase.cxx:206
rtl::Reference< IdlReflectionServiceImpl > m_xReflection
Definition: base.hxx:305
virtual OUString SAL_CALL getName() override
Definition: crbase.cxx:242
typelib_TypeDescription * _pDeclTypeDescr
Definition: base.hxx:309
typelib_TypeDescription * _pTypeDescr
Definition: base.hxx:308
IdlReflectionServiceImpl * getReflection() const
Definition: base.hxx:315
typelib_TypeDescription * getTypeDescr() const
Definition: base.hxx:317
typelib_TypeDescription * getDeclTypeDescr() const
Definition: base.hxx:319
LRU_CacheAnyByOUString _aElements
Definition: base.hxx:86
virtual sal_Bool SAL_CALL hasByHierarchicalName(const OUString &rName) override
Definition: crefl.cxx:222
virtual sal_Bool SAL_CALL supportsService(const OUString &rServiceName) override
Definition: crefl.cxx:79
virtual ~IdlReflectionServiceImpl() override
Definition: crefl.cxx:55
uno_Interface * mapToUno(const css::uno::Any &rObj, typelib_InterfaceTypeDescription *pTo)
Definition: crefl.cxx:311
virtual css::uno::Any SAL_CALL getByHierarchicalName(const OUString &rName) override
Definition: crefl.cxx:171
virtual css::uno::Reference< css::reflection::XIdlClass > SAL_CALL getType(const css::uno::Any &rObj) override
Definition: crefl.cxx:92
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Definition: crefl.cxx:84
IdlReflectionServiceImpl(const css::uno::Reference< css::uno::XComponentContext > &xContext)
Definition: crefl.cxx:46
virtual css::uno::Reference< css::reflection::XIdlClass > SAL_CALL forName(const OUString &rTypeName) override
Definition: crefl.cxx:143
css::uno::Reference< css::reflection::XIdlClass > constructClass(typelib_TypeDescription *pTypeDescr)
Definition: crefl.cxx:98
const css::uno::Mapping & getCpp2Uno()
Definition: crefl.cxx:271
css::uno::Reference< css::reflection::XIdlClass > forType(typelib_TypeDescription *pTypeDescr)
Definition: crefl.cxx:235
css::uno::Reference< css::container::XHierarchicalNameAccess > _xTDMgr
Definition: base.hxx:83
virtual OUString SAL_CALL getImplementationName() override
Definition: crefl.cxx:74
const css::uno::Mapping & getUno2Cpp()
Definition: crefl.cxx:291
virtual void SAL_CALL disposing() override
Definition: crefl.cxx:59
virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlMethod > > SAL_CALL getMethods() override
Definition: criface.cxx:729
std::unique_ptr< MemberInit[]> _pSortedMemberInit
Definition: base.hxx:186
typelib_InterfaceTypeDescription * getTypeDescr() const
Definition: base.hxx:195
OUString2Method _aName2Method
Definition: base.hxx:188
css::uno::Sequence< css::uno::Reference< css::reflection::XIdlClass > > _xSuperClasses
Definition: base.hxx:184
virtual css::uno::Reference< css::reflection::XIdlMethod > SAL_CALL getMethod(const OUString &rName) override
Definition: criface.cxx:767
std::pair< OUString, typelib_TypeDescription * > MemberInit
Definition: base.hxx:182
virtual sal_Bool SAL_CALL isAssignableFrom(const css::uno::Reference< css::reflection::XIdlClass > &xType) override
Definition: criface.cxx:706
virtual void SAL_CALL createObject(css::uno::Any &rObj) override
Definition: criface.cxx:825
InterfaceIdlClassImpl(IdlReflectionServiceImpl *pReflection, const OUString &rName, typelib_TypeClass eTypeClass, typelib_TypeDescription *pTypeDescr)
Definition: base.hxx:199
virtual css::uno::Reference< css::reflection::XIdlField > SAL_CALL getField(const OUString &rName) override
Definition: criface.cxx:796
virtual ~InterfaceIdlClassImpl() override
Definition: criface.cxx:651
virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlField > > SAL_CALL getFields() override
Definition: criface.cxx:748
virtual css::uno::Uik SAL_CALL getUik() override
Definition: criface.cxx:723
virtual css::uno::Sequence< css::uno::Reference< css::reflection::XIdlClass > > SAL_CALL getSuperclasses() override
Definition: criface.cxx:658
sal_Bool SAL_CALL uno_assignData(void *pDest, typelib_TypeDescription *pDestTD, void *pSource, typelib_TypeDescription *pSourceTD, uno_QueryInterfaceFunc queryInterface, uno_AcquireFunc acquire, uno_ReleaseFunc release) SAL_THROW_EXTERN_C()
sal_Bool SAL_CALL uno_type_assignData(void *pDest, typelib_TypeDescriptionReference *pDestType, void *pSource, typelib_TypeDescriptionReference *pSourceType, uno_QueryInterfaceFunc queryInterface, uno_AcquireFunc acquire, uno_ReleaseFunc release) SAL_THROW_EXTERN_C()
sal_Int32 nIndex
Definition: invocation.cxx:697
OUString aName
Definition: invocation.cxx:689
struct _typelib_TypeDescription typelib_TypeDescription
std::unordered_map< OUString, css::uno::WeakReference< css::reflection::XIdlField > > OUString2Field
Definition: base.hxx:72
cppu::ImplInheritanceHelper< IdlClassImpl, css::reflection::XIdlArray > ArrayIdlClassImpl_Base
Definition: base.hxx:249
::osl::Mutex & getMutexAccess()
Definition: crbase.cxx:37
bool coerce_assign(void *pDest, typelib_TypeDescription *pTD, const css::uno::Any &rSource, IdlReflectionServiceImpl *pRefl)
Definition: base.hxx:363
bool td_equals(typelib_TypeDescription *pTD, typelib_TypeDescriptionReference *pType)
Definition: base.hxx:65
bool extract(const css::uno::Any &rObj, typelib_InterfaceTypeDescription *pTo, css::uno::Reference< css::uno::XInterface > &rDest, IdlReflectionServiceImpl *pRefl)
Definition: base.hxx:335
std::unordered_map< OUString, css::uno::WeakReference< css::reflection::XIdlMethod > > OUString2Method
Definition: base.hxx:73
unsigned char sal_Bool