diff options
author | Daniel Boelzle <dbo@openoffice.org> | 2002-10-17 06:49:57 +0000 |
---|---|---|
committer | Daniel Boelzle <dbo@openoffice.org> | 2002-10-17 06:49:57 +0000 |
commit | 90be862021b2b8d85da8f4155e6f6e4a1e571e10 (patch) | |
tree | 30e39a81a6cacd8898f706a61b9d18f5ef57daac /stoc/source | |
parent | 4abfb98d50b43cd82d69791ef4c372f29de17495 (diff) |
#100586# mt safe
Diffstat (limited to 'stoc/source')
-rw-r--r-- | stoc/source/corereflection/base.hxx | 80 | ||||
-rw-r--r-- | stoc/source/corereflection/crbase.cxx | 15 | ||||
-rw-r--r-- | stoc/source/corereflection/crefl.cxx | 64 | ||||
-rw-r--r-- | stoc/source/corereflection/crenum.cxx | 7 | ||||
-rw-r--r-- | stoc/source/corereflection/criface.cxx | 55 |
5 files changed, 120 insertions, 101 deletions
diff --git a/stoc/source/corereflection/base.hxx b/stoc/source/corereflection/base.hxx index fd999dde92f6..606e744c12fb 100644 --- a/stoc/source/corereflection/base.hxx +++ b/stoc/source/corereflection/base.hxx @@ -2,9 +2,9 @@ * * $RCSfile: base.hxx,v $ * - * $Revision: 1.6 $ + * $Revision: 1.7 $ * - * last change: $Author: dbo $ $Date: 2001-06-26 13:01:03 $ + * last change: $Author: dbo $ $Date: 2002-10-17 07:49:57 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -130,8 +130,7 @@ extern ClassNameList g_aClassNames; Mutex & getMutexAccess(); //-------------------------------------------------------------------------------------------------- -inline td_equals( typelib_TypeDescription * pTD, - typelib_TypeDescriptionReference * pType ) +inline bool td_equals( typelib_TypeDescription * pTD, typelib_TypeDescriptionReference * pType ) { return (pTD->pWeakRef == pType || (pTD->pTypeName->length == pType->pTypeName->length && @@ -166,6 +165,9 @@ class IdlReflectionServiceImpl // caching LRU_CacheAnyByOUString _aElements; + Mapping _aCpp2Uno; + Mapping _aUno2Cpp; + inline Reference< XIdlClass > constructClass( typelib_TypeDescription * pTypeDescr ); public: Reference< XHierarchicalNameAccess > getTDMgr() const @@ -173,6 +175,10 @@ public: Reference< XMultiServiceFactory > getSMgr() const { return _xMgr; } + const Mapping & getCpp2Uno() throw(::com::sun::star::uno::RuntimeException); + const Mapping & getUno2Cpp() throw(::com::sun::star::uno::RuntimeException); + uno_Interface * mapToUno( const Any & rObj, typelib_InterfaceTypeDescription * pTo ) throw(::com::sun::star::uno::RuntimeException); + // ctor/ dtor IdlReflectionServiceImpl( const Reference< XComponentContext > & xContext ); virtual ~IdlReflectionServiceImpl(); @@ -397,9 +403,6 @@ public: class IdlMemberImpl : public WeakImplHelper1< XIdlMember > { - Mapping _aCpp2Uno; - Mapping _aUno2Cpp; - IdlReflectionServiceImpl * _pReflection; OUString _aName; @@ -419,10 +422,6 @@ public: typelib_TypeDescription * getDeclTypeDescr() const { return _pDeclTypeDescr; } - inline const Mapping & getCpp2Uno() throw(::com::sun::star::uno::RuntimeException); - inline const Mapping & getUno2Cpp() throw(::com::sun::star::uno::RuntimeException); - inline uno_Interface * mapToUno( const Any & rObj, typelib_InterfaceTypeDescription * pTo ) throw(::com::sun::star::uno::RuntimeException); - // ctor/ dtor IdlMemberImpl( IdlReflectionServiceImpl * pReflection, const OUString & rName, typelib_TypeDescription * pTypeDescr, typelib_TypeDescription * pDeclTypeDescr ); @@ -432,50 +431,6 @@ public: virtual Reference< XIdlClass > SAL_CALL getDeclaringClass() throw(::com::sun::star::uno::RuntimeException); virtual OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException); }; -//__________________________________________________________________________________________________ -inline const Mapping & IdlMemberImpl::getCpp2Uno() - throw(::com::sun::star::uno::RuntimeException) -{ - if (! _aCpp2Uno.is()) - { - MutexGuard aGuard( getMutexAccess() ); - if (! _aCpp2Uno.is()) - { - _aCpp2Uno = Mapping( OUString( RTL_CONSTASCII_USTRINGPARAM(CPPU_CURRENT_LANGUAGE_BINDING_NAME) ), - OUString( RTL_CONSTASCII_USTRINGPARAM(UNO_LB_UNO) ) ); - OSL_ENSURE( _aCpp2Uno.is(), "### cannot c++ to uno mapping!" ); - if (! _aCpp2Uno.is()) - { - throw RuntimeException( - OUString( RTL_CONSTASCII_USTRINGPARAM("cannot c++ to uno mapping!") ), - (XWeak *)(OWeakObject *)this ); - } - } - } - return _aCpp2Uno; -} -//__________________________________________________________________________________________________ -inline const Mapping & IdlMemberImpl::getUno2Cpp() - throw(::com::sun::star::uno::RuntimeException) -{ - if (! _aUno2Cpp.is()) - { - MutexGuard aGuard( getMutexAccess() ); - if (! _aUno2Cpp.is()) - { - _aUno2Cpp = Mapping( OUString( RTL_CONSTASCII_USTRINGPARAM(UNO_LB_UNO) ), - OUString( RTL_CONSTASCII_USTRINGPARAM(CPPU_CURRENT_LANGUAGE_BINDING_NAME) ) ); - OSL_ENSURE( _aUno2Cpp.is(), "### cannot uno to c++ mapping!" ); - if (! _aUno2Cpp.is()) - { - throw RuntimeException( - OUString( RTL_CONSTASCII_USTRINGPARAM("cannot uno TO c++ mapping!") ), - (XWeak *)(OWeakObject *)this ); - } - } - } - return _aUno2Cpp; -} //-------------------------------------------------------------------------------------------------- // coerces to type descr pTo else queries for it: the interface pointer is returned via rDest @@ -537,21 +492,6 @@ inline sal_Bool coerce_assign( } } -//__________________________________________________________________________________________________ -inline uno_Interface * IdlMemberImpl::mapToUno( const Any & rObj, - typelib_InterfaceTypeDescription * pTo ) - throw(::com::sun::star::uno::RuntimeException) -{ - Reference< XInterface > xObj; - if (extract( rObj, pTo, xObj, getReflection() )) - return (uno_Interface *)getCpp2Uno().mapInterface( xObj.get(), pTo ); - - throw RuntimeException( - OUString( RTL_CONSTASCII_USTRINGPARAM("illegal object given!") ), - (XWeak *)(OWeakObject *)this ); - return 0; // dummy -} - } diff --git a/stoc/source/corereflection/crbase.cxx b/stoc/source/corereflection/crbase.cxx index 719bedd91112..23a72ddccd48 100644 --- a/stoc/source/corereflection/crbase.cxx +++ b/stoc/source/corereflection/crbase.cxx @@ -2,9 +2,9 @@ * * $RCSfile: crbase.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: jl $ $Date: 2001-03-12 15:32:15 $ + * last change: $Author: dbo $ $Date: 2002-10-17 07:49:57 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -287,7 +287,11 @@ IdlMemberImpl::IdlMemberImpl( IdlReflectionServiceImpl * pReflection, const OUSt { _pReflection->acquire(); typelib_typedescription_acquire( _pTypeDescr ); + if (! _pTypeDescr->bComplete) + typelib_typedescription_complete( &_pTypeDescr ); typelib_typedescription_acquire( _pDeclTypeDescr ); + if (! _pDeclTypeDescr->bComplete) + typelib_typedescription_complete( &_pDeclTypeDescr ); } //__________________________________________________________________________________________________ IdlMemberImpl::~IdlMemberImpl() @@ -303,7 +307,12 @@ Reference< XIdlClass > IdlMemberImpl::getDeclaringClass() throw(::com::sun::star::uno::RuntimeException) { if (! _xDeclClass.is()) - _xDeclClass = getReflection()->forType( getDeclTypeDescr() ); + { + Reference< XIdlClass > xDeclClass( getReflection()->forType( getDeclTypeDescr() ) ); + MutexGuard aGuard( getMutexAccess() ); + if (! _xDeclClass.is()) + _xDeclClass = xDeclClass; + } return _xDeclClass; } //__________________________________________________________________________________________________ diff --git a/stoc/source/corereflection/crefl.cxx b/stoc/source/corereflection/crefl.cxx index 3cde0fb9dd63..13ef5d988a98 100644 --- a/stoc/source/corereflection/crefl.cxx +++ b/stoc/source/corereflection/crefl.cxx @@ -2,9 +2,9 @@ * * $RCSfile: crefl.cxx,v $ * - * $Revision: 1.6 $ + * $Revision: 1.7 $ * - * last change: $Author: dbo $ $Date: 2001-10-11 14:53:51 $ + * last change: $Author: dbo $ $Date: 2002-10-17 07:49:57 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -446,6 +446,66 @@ Reference< XIdlClass > IdlReflectionServiceImpl::forType( typelib_TypeDescriptio return Reference< XIdlClass >(); // dummy } +//__________________________________________________________________________________________________ +const Mapping & IdlReflectionServiceImpl::getCpp2Uno() + throw(::com::sun::star::uno::RuntimeException) +{ + if (! _aCpp2Uno.is()) + { + MutexGuard aGuard( getMutexAccess() ); + if (! _aCpp2Uno.is()) + { + _aCpp2Uno = Mapping( + OUString( RTL_CONSTASCII_USTRINGPARAM(CPPU_CURRENT_LANGUAGE_BINDING_NAME) ), + OUString( RTL_CONSTASCII_USTRINGPARAM(UNO_LB_UNO) ) ); + OSL_ENSURE( _aCpp2Uno.is(), "### cannot get c++ to uno mapping!" ); + if (! _aCpp2Uno.is()) + { + throw RuntimeException( + OUString( RTL_CONSTASCII_USTRINGPARAM("cannot get c++ to uno mapping!") ), + (XWeak *)(OWeakObject *)this ); + } + } + } + return _aCpp2Uno; +} +//__________________________________________________________________________________________________ +const Mapping & IdlReflectionServiceImpl::getUno2Cpp() + throw(::com::sun::star::uno::RuntimeException) +{ + if (! _aUno2Cpp.is()) + { + MutexGuard aGuard( getMutexAccess() ); + if (! _aUno2Cpp.is()) + { + _aUno2Cpp = Mapping( + OUString( RTL_CONSTASCII_USTRINGPARAM(UNO_LB_UNO) ), + OUString( RTL_CONSTASCII_USTRINGPARAM(CPPU_CURRENT_LANGUAGE_BINDING_NAME) ) ); + OSL_ENSURE( _aUno2Cpp.is(), "### cannot get uno to c++ mapping!" ); + if (! _aUno2Cpp.is()) + { + throw RuntimeException( + OUString( RTL_CONSTASCII_USTRINGPARAM("cannot get uno to c++ mapping!") ), + (XWeak *)(OWeakObject *)this ); + } + } + } + return _aUno2Cpp; +} +//__________________________________________________________________________________________________ +uno_Interface * IdlReflectionServiceImpl::mapToUno( + const Any & rObj, typelib_InterfaceTypeDescription * pTo ) + throw(::com::sun::star::uno::RuntimeException) +{ + Reference< XInterface > xObj; + if (extract( rObj, pTo, xObj, this )) + return (uno_Interface *)getCpp2Uno().mapInterface( xObj.get(), pTo ); + + throw RuntimeException( + OUString( RTL_CONSTASCII_USTRINGPARAM("illegal object given!") ), + (XWeak *)(OWeakObject *)this ); +} + //================================================================================================== Reference< XInterface > SAL_CALL IdlReflectionServiceImpl_create( const Reference< XComponentContext > & xContext ) diff --git a/stoc/source/corereflection/crenum.cxx b/stoc/source/corereflection/crenum.cxx index 0e6b1b0e1bd5..6a4a7641a79f 100644 --- a/stoc/source/corereflection/crenum.cxx +++ b/stoc/source/corereflection/crenum.cxx @@ -2,9 +2,9 @@ * * $RCSfile: crenum.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: jsc $ $Date: 2001-05-03 13:56:57 $ + * last change: $Author: dbo $ $Date: 2002-10-17 07:49:57 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -268,7 +268,8 @@ Sequence< Reference< XIdlField > > EnumIdlClassImpl::getFields() void EnumIdlClassImpl::createObject( Any & rObj ) throw(::com::sun::star::uno::RuntimeException) { - int eVal = ((typelib_EnumTypeDescription *)IdlClassImpl::getTypeDescr())->nDefaultEnumValue; + sal_Int32 eVal = + ((typelib_EnumTypeDescription *)IdlClassImpl::getTypeDescr())->nDefaultEnumValue; rObj.setValue( &eVal, IdlClassImpl::getTypeDescr() ); } diff --git a/stoc/source/corereflection/criface.cxx b/stoc/source/corereflection/criface.cxx index 1d1c8f957196..bfc370d2cca8 100644 --- a/stoc/source/corereflection/criface.cxx +++ b/stoc/source/corereflection/criface.cxx @@ -2,9 +2,9 @@ * * $RCSfile: criface.cxx,v $ * - * $Revision: 1.6 $ + * $Revision: 1.7 $ * - * last change: $Author: jsc $ $Date: 2001-05-03 13:56:57 $ + * last change: $Author: dbo $ $Date: 2002-10-17 07:49:57 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -233,7 +233,8 @@ FieldAccessMode IdlAttributeFieldImpl::getAccessMode() Any IdlAttributeFieldImpl::get( const Any & rObj ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException) { - uno_Interface * pUnoI = mapToUno( rObj, (typelib_InterfaceTypeDescription *)getDeclTypeDescr() ); + uno_Interface * pUnoI = getReflection()->mapToUno( + rObj, (typelib_InterfaceTypeDescription *)getDeclTypeDescr() ); OSL_ENSURE( pUnoI, "### illegal destination object given!" ); if (pUnoI) { @@ -259,7 +260,7 @@ Any IdlAttributeFieldImpl::get( const Any & rObj ) else { uno_any_destruct( &aRet, cpp_release ); - uno_any_constructAndConvert( &aRet, pReturn, pTD, getUno2Cpp().get() ); + uno_any_constructAndConvert( &aRet, pReturn, pTD, getReflection()->getUno2Cpp().get() ); uno_destructData( pReturn, pTD, 0 ); } return aRet; @@ -280,7 +281,8 @@ void IdlAttributeFieldImpl::set( const Any & rObj, const Any & rValue ) (XWeak *)(OWeakObject *)this ); } - uno_Interface * pUnoI = mapToUno( rObj, (typelib_InterfaceTypeDescription *)getDeclTypeDescr() ); + uno_Interface * pUnoI = getReflection()->mapToUno( + rObj, (typelib_InterfaceTypeDescription *)getDeclTypeDescr() ); OSL_ENSURE( pUnoI, "### illegal destination object given!" ); if (pUnoI) { @@ -295,13 +297,13 @@ void IdlAttributeFieldImpl::set( const Any & rObj, const Any & rValue ) if (pTD->eTypeClass == typelib_TypeClass_ANY) { uno_copyAndConvertData( pArg, SAL_CONST_CAST( Any *, &rValue ), - pTD, getCpp2Uno().get() ); + pTD, getReflection()->getCpp2Uno().get() ); bAssign = sal_True; } else if (typelib_typedescriptionreference_equals( rValue.getValueTypeRef(), pTD->pWeakRef )) { uno_copyAndConvertData( pArg, SAL_CONST_CAST( void *, rValue.getValue() ), - pTD, getCpp2Uno().get() ); + pTD, getReflection()->getCpp2Uno().get() ); bAssign = sal_True; } else if (pTD->eTypeClass == typelib_TypeClass_INTERFACE) @@ -310,7 +312,7 @@ void IdlAttributeFieldImpl::set( const Any & rObj, const Any & rValue ) if (bAssign = extract( rValue, (typelib_InterfaceTypeDescription *)pTD, xObj, getReflection() )) { - *(void **)pArg = getCpp2Uno().mapInterface( + *(void **)pArg = getReflection()->getCpp2Uno().mapInterface( xObj.get(), (typelib_InterfaceTypeDescription *)pTD ); } } @@ -321,7 +323,7 @@ void IdlAttributeFieldImpl::set( const Any & rObj, const Any & rValue ) // construct temp uno val to do proper assignment: todo opt void * pTemp = alloca( pValueTD->nSize ); uno_copyAndConvertData( - pTemp, (void *)rValue.getValue(), pValueTD, getCpp2Uno().get() ); + pTemp, (void *)rValue.getValue(), pValueTD, getReflection()->getCpp2Uno().get() ); uno_constructData( pArg, pTD ); // assignment does simple conversion @@ -371,7 +373,8 @@ void IdlAttributeFieldImpl::set( Any & rObj, const Any & rValue ) (XWeak *)(OWeakObject *)this ); } - uno_Interface * pUnoI = mapToUno( rObj, (typelib_InterfaceTypeDescription *)getDeclTypeDescr() ); + uno_Interface * pUnoI = getReflection()->mapToUno( + rObj, (typelib_InterfaceTypeDescription *)getDeclTypeDescr() ); OSL_ENSURE( pUnoI, "### illegal destination object given!" ); if (pUnoI) { @@ -386,13 +389,13 @@ void IdlAttributeFieldImpl::set( Any & rObj, const Any & rValue ) if (pTD->eTypeClass == typelib_TypeClass_ANY) { uno_copyAndConvertData( pArg, SAL_CONST_CAST( Any *, &rValue ), - pTD, getCpp2Uno().get() ); + pTD, getReflection()->getCpp2Uno().get() ); bAssign = sal_True; } else if (typelib_typedescriptionreference_equals( rValue.getValueTypeRef(), pTD->pWeakRef )) { uno_copyAndConvertData( pArg, SAL_CONST_CAST( void *, rValue.getValue() ), - pTD, getCpp2Uno().get() ); + pTD, getReflection()->getCpp2Uno().get() ); bAssign = sal_True; } else if (pTD->eTypeClass == typelib_TypeClass_INTERFACE) @@ -401,7 +404,7 @@ void IdlAttributeFieldImpl::set( Any & rObj, const Any & rValue ) if (bAssign = extract( rValue, (typelib_InterfaceTypeDescription *)pTD, xObj, getReflection() )) { - *(void **)pArg = getCpp2Uno().mapInterface( + *(void **)pArg = getReflection()->getCpp2Uno().mapInterface( xObj.get(), (typelib_InterfaceTypeDescription *)pTD ); } } @@ -412,7 +415,7 @@ void IdlAttributeFieldImpl::set( Any & rObj, const Any & rValue ) // construct temp uno val to do proper assignment: todo opt void * pTemp = alloca( pValueTD->nSize ); uno_copyAndConvertData( - pTemp, (void *)rValue.getValue(), pValueTD, getCpp2Uno().get() ); + pTemp, (void *)rValue.getValue(), pValueTD, getReflection()->getCpp2Uno().get() ); uno_constructData( pArg, pTD ); // assignment does simple conversion @@ -744,7 +747,8 @@ Any SAL_CALL IdlInterfaceMethodImpl::invoke( const Any & rObj, Sequence< Any > & } } - uno_Interface * pUnoI = mapToUno( rObj, (typelib_InterfaceTypeDescription *)getDeclTypeDescr() ); + uno_Interface * pUnoI = getReflection()->mapToUno( + rObj, (typelib_InterfaceTypeDescription *)getDeclTypeDescr() ); OSL_ENSURE( pUnoI, "### illegal destination object given!" ); if (pUnoI) { @@ -781,14 +785,14 @@ Any SAL_CALL IdlInterfaceMethodImpl::invoke( const Any & rObj, Sequence< Any > & { uno_type_copyAndConvertData( ppUnoArgs[nPos], (void *)pCppArgs[nPos].getValue(), - pCppArgs[nPos].getValueTypeRef(), getCpp2Uno().get() ); + pCppArgs[nPos].getValueTypeRef(), getReflection()->getCpp2Uno().get() ); bAssign = sal_True; } else if (pTD->eTypeClass == typelib_TypeClass_ANY) { uno_type_any_constructAndConvert( (uno_Any *)ppUnoArgs[nPos], (void *)pCppArgs[nPos].getValue(), - pCppArgs[nPos].getValueTypeRef(), getCpp2Uno().get() ); + pCppArgs[nPos].getValueTypeRef(), getReflection()->getCpp2Uno().get() ); bAssign = sal_True; } else if (pCppArgs[nPos].getValueTypeClass() == TypeClass_INTERFACE && @@ -798,7 +802,7 @@ Any SAL_CALL IdlInterfaceMethodImpl::invoke( const Any & rObj, Sequence< Any > & if (bAssign = extract( pCppArgs[nPos], (typelib_InterfaceTypeDescription *)pTD, xDest, getReflection() )) { - *(void **)ppUnoArgs[nPos] = getCpp2Uno().mapInterface( + *(void **)ppUnoArgs[nPos] = getReflection()->getCpp2Uno().mapInterface( xDest.get(), (typelib_InterfaceTypeDescription *)pTD ); } } @@ -809,7 +813,8 @@ Any SAL_CALL IdlInterfaceMethodImpl::invoke( const Any & rObj, Sequence< Any > & // construct temp uno val to do proper assignment: todo opt void * pTemp = alloca( pValueTD->nSize ); uno_copyAndConvertData( - pTemp, (void *)pCppArgs[nPos].getValue(), pValueTD, getCpp2Uno().get() ); + pTemp, (void *)pCppArgs[nPos].getValue(), pValueTD, + getReflection()->getCpp2Uno().get() ); uno_constructData( ppUnoArgs[nPos], pTD ); // assignment does simple conversion @@ -824,7 +829,7 @@ Any SAL_CALL IdlInterfaceMethodImpl::invoke( const Any & rObj, Sequence< Any > & { IllegalArgumentException aExc( OUString( RTL_CONSTASCII_USTRINGPARAM("cannot coerce argument type during corereflection call!") ), - *(const Reference< XInterface > *)rObj.getValue(), nPos ); + *(const Reference< XInterface > *)rObj.getValue(), (sal_Int16)nPos ); // cleanup while (nPos--) @@ -865,7 +870,8 @@ Any SAL_CALL IdlInterfaceMethodImpl::invoke( const Any & rObj, Sequence< Any > & aExc.Message = OUString( RTL_CONSTASCII_USTRINGPARAM("exception occured during invocation!") ); uno_any_destruct( &aExc.TargetException, cpp_release ); uno_type_copyAndConvertData( - &aExc.TargetException, pUnoExc, ::getCppuType( (const Any *)0 ).getTypeLibType(), getUno2Cpp().get() ); + &aExc.TargetException, pUnoExc, ::getCppuType( (const Any *)0 ).getTypeLibType(), + getReflection()->getUno2Cpp().get() ); uno_any_destruct( pUnoExc, 0 ); throw aExc; } @@ -878,13 +884,16 @@ Any SAL_CALL IdlInterfaceMethodImpl::invoke( const Any & rObj, Sequence< Any > & { uno_any_destruct( &pCppArgs[nParams], cpp_release ); uno_any_constructAndConvert( - &pCppArgs[nParams], ppUnoArgs[nParams], ppParamTypes[nParams], getUno2Cpp().get() ); + &pCppArgs[nParams], ppUnoArgs[nParams], ppParamTypes[nParams], + getReflection()->getUno2Cpp().get() ); } uno_destructData( ppUnoArgs[nParams], ppParamTypes[nParams], 0 ); TYPELIB_DANGER_RELEASE( ppParamTypes[nParams] ); } uno_any_destruct( &aRet, cpp_release ); - uno_any_constructAndConvert( &aRet, pUnoReturn, pReturnType, getUno2Cpp().get() ); + uno_any_constructAndConvert( + &aRet, pUnoReturn, pReturnType, + getReflection()->getUno2Cpp().get() ); uno_destructData( pUnoReturn, pReturnType, 0 ); TYPELIB_DANGER_RELEASE( pReturnType ); } |