diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2017-09-30 22:45:16 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2017-10-01 08:57:22 +0200 |
commit | 3e9f0d6f6e99b064bf140212b33a8b6ebce91101 (patch) | |
tree | 7cd31f585105a8e0c9292e22acefb3e138b87f0c /extensions/source | |
parent | 0a478850dc29a61f36c04093f95027ac9260f0fa (diff) |
loplugin:flatten (clang-cl, extensions)
Change-Id: I2aceee910e8e39a7c4ebb89282447dc4b26ad3cb
Reviewed-on: https://gerrit.libreoffice.org/42978
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'extensions/source')
-rw-r--r-- | extensions/source/ole/oleobjw.cxx | 130 | ||||
-rw-r--r-- | extensions/source/ole/unoconversionutilities.hxx | 21 |
2 files changed, 69 insertions, 82 deletions
diff --git a/extensions/source/ole/oleobjw.cxx b/extensions/source/ole/oleobjw.cxx index ccb4004eabf5..3caab88a4765 100644 --- a/extensions/source/ole/oleobjw.cxx +++ b/extensions/source/ole/oleobjw.cxx @@ -933,30 +933,7 @@ Any IUnknownWrapper_Impl::invokeWithDispIdUnoTlb(const OUString& sFunctionName, else if( pMethod->pParams[i].bOut ) { CComObject<JScriptOutParam>* pParamObject; - if( SUCCEEDED( CComObject<JScriptOutParam>::CreateInstance( &pParamObject))) - { - CComPtr<IUnknown> pUnk(pParamObject->GetUnknown()); - CComQIPtr<IDispatch> pDisp( pUnk); - - pVarParams[ parameterCount - i -1].vt= VT_DISPATCH; - pVarParams[ parameterCount - i -1].pdispVal= pDisp; - pVarParams[ parameterCount - i -1].pdispVal->AddRef(); - // if the param is in/out then put the parameter on index 0 - if( pMethod->pParams[i].bIn ) // in / out - { - CComVariant varParam; - anyToVariant( &varParam, Params.getConstArray()[i]); - CComDispatchDriver dispDriver( pDisp); - if(FAILED( dispDriver.PutPropertyByName( L"0", &varParam))) - throw BridgeRuntimeError( - "[automation bridge]IUnknownWrapper_Impl::" - "invokeWithDispIdUnoTlb\n" - "Could not set property \"0\" for the in/out " - "param!"); - - } - } - else + if( !SUCCEEDED( CComObject<JScriptOutParam>::CreateInstance( &pParamObject))) { throw BridgeRuntimeError( "[automation bridge]IUnknownWrapper_Impl::" @@ -965,6 +942,26 @@ Any IUnknownWrapper_Impl::invokeWithDispIdUnoTlb(const OUString& sFunctionName, OUString::number((sal_Int32) i)); } + CComPtr<IUnknown> pUnk(pParamObject->GetUnknown()); + CComQIPtr<IDispatch> pDisp( pUnk); + + pVarParams[ parameterCount - i -1].vt= VT_DISPATCH; + pVarParams[ parameterCount - i -1].pdispVal= pDisp; + pVarParams[ parameterCount - i -1].pdispVal->AddRef(); + // if the param is in/out then put the parameter on index 0 + if( pMethod->pParams[i].bIn ) // in / out + { + CComVariant varParam; + anyToVariant( &varParam, Params.getConstArray()[i]); + CComDispatchDriver dispDriver( pDisp); + if(FAILED( dispDriver.PutPropertyByName( L"0", &varParam))) + throw BridgeRuntimeError( + "[automation bridge]IUnknownWrapper_Impl::" + "invokeWithDispIdUnoTlb\n" + "Could not set property \"0\" for the in/out " + "param!"); + + } } } } @@ -2211,21 +2208,18 @@ void IUnknownWrapper_Impl::getFuncDesc(const OUString & sFuncName, FUNCDESC ** p { ITypeInfo* pType= getTypeInfo(); FUNCDESC * pDesc = nullptr; - if (SUCCEEDED(pType->GetFuncDesc(itIndex->second, & pDesc))) + if (!SUCCEEDED(pType->GetFuncDesc(itIndex->second, & pDesc))) { - if (pDesc->invkind == INVOKE_FUNC) - { - (*pFuncDesc) = pDesc; - } - else - { - pType->ReleaseFuncDesc(pDesc); - } + throw BridgeRuntimeError("[automation bridge] Could not get " + "FUNCDESC for " + sFuncName); + } + if (pDesc->invkind == INVOKE_FUNC) + { + (*pFuncDesc) = pDesc; } else { - throw BridgeRuntimeError("[automation bridge] Could not get " - "FUNCDESC for " + sFuncName); + pType->ReleaseFuncDesc(pDesc); } } //else no entry found for sFuncName, pFuncDesc will not be filled in @@ -2464,49 +2458,43 @@ ITypeInfo* IUnknownWrapper_Impl::getTypeInfo() if( ! m_spTypeInfo) { CComPtr< ITypeInfo > spType; - if( SUCCEEDED( m_spDispatch->GetTypeInfo( 0, LOCALE_USER_DEFAULT, &spType.p))) - + if( !SUCCEEDED( m_spDispatch->GetTypeInfo( 0, LOCALE_USER_DEFAULT, &spType.p))) { - OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER(); + throw BridgeRuntimeError("[automation bridge]The dispatch object does not " + "support ITypeInfo!"); + } + + OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER(); - //If this is a dual interface then TYPEATTR::typekind is usually TKIND_INTERFACE - //We need to get the type description for TKIND_DISPATCH - TypeAttr typeAttr(spType.p); - if( SUCCEEDED(spType->GetTypeAttr( &typeAttr))) + //If this is a dual interface then TYPEATTR::typekind is usually TKIND_INTERFACE + //We need to get the type description for TKIND_DISPATCH + TypeAttr typeAttr(spType.p); + if( SUCCEEDED(spType->GetTypeAttr( &typeAttr))) + { + if (typeAttr->typekind == TKIND_INTERFACE && + typeAttr->wTypeFlags & TYPEFLAG_FDUAL) { - if (typeAttr->typekind == TKIND_INTERFACE && - typeAttr->wTypeFlags & TYPEFLAG_FDUAL) - { - HREFTYPE refDispatch; - if (SUCCEEDED(spType->GetRefTypeOfImplType(::sal::static_int_cast< UINT, int >( -1 ), &refDispatch))) - { - CComPtr<ITypeInfo> spTypeDisp; - if (SUCCEEDED(spType->GetRefTypeInfo(refDispatch, & spTypeDisp))) - m_spTypeInfo= spTypeDisp; - } - else - { - throw BridgeRuntimeError( - "[automation bridge] Could not obtain type information " - "for dispatch interface." ); - } - } - else if (typeAttr->typekind == TKIND_DISPATCH) - { - m_spTypeInfo= spType; - } - else + HREFTYPE refDispatch; + if (!SUCCEEDED(spType->GetRefTypeOfImplType(::sal::static_int_cast< UINT, int >( -1 ), &refDispatch))) { throw BridgeRuntimeError( - "[automation bridge] Automation object does not " - "provide type information."); + "[automation bridge] Could not obtain type information " + "for dispatch interface." ); } + CComPtr<ITypeInfo> spTypeDisp; + if (SUCCEEDED(spType->GetRefTypeInfo(refDispatch, & spTypeDisp))) + m_spTypeInfo= spTypeDisp; + } + else if (typeAttr->typekind == TKIND_DISPATCH) + { + m_spTypeInfo= spType; + } + else + { + throw BridgeRuntimeError( + "[automation bridge] Automation object does not " + "provide type information."); } - } - else - { - throw BridgeRuntimeError("[automation bridge]The dispatch object does not " - "support ITypeInfo!"); } } } diff --git a/extensions/source/ole/unoconversionutilities.hxx b/extensions/source/ole/unoconversionutilities.hxx index 56ab58a1e9e8..5b5612c42a1b 100644 --- a/extensions/source/ole/unoconversionutilities.hxx +++ b/extensions/source/ole/unoconversionutilities.hxx @@ -1836,22 +1836,21 @@ Reference<XInterface> UnoConversionUtilities<T>::createAdapter(const Sequence<Ty if( xAdapterFac.is()) xIntAdapted= xAdapterFac->createAdapter( xInv, seqTypes); - if( xIntAdapted.is()) - { - // Put the pointer to the wrapper object and the interface pointer of the adapted interface - // in a global map. Thus we can determine in a call to createUnoObjectWrapper whether the UNO - // object is a wrapped COM object. In that case we extract the original COM object rather than - // creating a wrapper around the UNO object. - typedef std::unordered_map<sal_uInt64,sal_uInt64>::value_type VALUE; - AdapterToWrapperMap.insert( VALUE( reinterpret_cast<sal_uInt64>(xIntAdapted.get()), reinterpret_cast<sal_uInt64>(receiver.get()))); - WrapperToAdapterMap.insert( VALUE( reinterpret_cast<sal_uInt64>(receiver.get()), reinterpret_cast<sal_uInt64>(xIntAdapted.get()))); - } - else + if( !xIntAdapted.is()) { throw BridgeRuntimeError( "[automation bridge]UnoConversionUtilities<T>::createOleObjectWrapper \n" "Could not create a proxy for COM object! Creation of adapter failed."); } + + // Put the pointer to the wrapper object and the interface pointer of the adapted interface + // in a global map. Thus we can determine in a call to createUnoObjectWrapper whether the UNO + // object is a wrapped COM object. In that case we extract the original COM object rather than + // creating a wrapper around the UNO object. + typedef std::unordered_map<sal_uInt64,sal_uInt64>::value_type VALUE; + AdapterToWrapperMap.insert( VALUE( reinterpret_cast<sal_uInt64>(xIntAdapted.get()), reinterpret_cast<sal_uInt64>(receiver.get()))); + WrapperToAdapterMap.insert( VALUE( reinterpret_cast<sal_uInt64>(receiver.get()), reinterpret_cast<sal_uInt64>(xIntAdapted.get()))); + return xIntAdapted; } // "convertValueObject" converts a JScriptValue object contained in "var" into |