diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2016-04-25 17:56:36 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2016-04-25 20:01:33 +0000 |
commit | a68a285076fed9dc055bd9eae48cabd800632563 (patch) | |
tree | 6610f0677a740167de9e75963bd0a30ad45a4edb /bridges | |
parent | 5749afcc71438190853267029ee17d636c2cc910 (diff) |
bridges/inc/bridges/cpp_uno/bridge.hxx appears unused
Change-Id: I2b938739ebf4a5b13414bfa8ba27e83dd02b971d
Reviewed-on: https://gerrit.libreoffice.org/24370
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'bridges')
-rw-r--r-- | bridges/inc/bridges/cpp_uno/bridge.hxx | 462 |
1 files changed, 0 insertions, 462 deletions
diff --git a/bridges/inc/bridges/cpp_uno/bridge.hxx b/bridges/inc/bridges/cpp_uno/bridge.hxx deleted file mode 100644 index 8bcd1ccc817b..000000000000 --- a/bridges/inc/bridges/cpp_uno/bridge.hxx +++ /dev/null @@ -1,462 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ -#ifndef INCLUDED_BRIDGES_INC_BRIDGES_CPP_UNO_BRIDGE_HXX -#define INCLUDED_BRIDGES_INC_BRIDGES_CPP_UNO_BRIDGE_HXX - -#include <bridges/cpp_uno/bridge.h> -#include <osl/mutex.hxx> -#include <rtl/process.h> -#include <rtl/ustrbuf.hxx> -#include <com/sun/star/uno/genfunc.hxx> -#include <com/sun/star/uno/XInterface.hpp> -#include <uno/lbnames.h> - -namespace CPPU_CURRENT_NAMESPACE -{ - - -inline void SAL_CALL cppu_cppInterfaceProxy_free( uno_ExtEnvironment * pEnv, void * pProxy ) -{ - cppu_cppInterfaceProxy * pThis = - static_cast< cppu_cppInterfaceProxy * >( - reinterpret_cast< ::com::sun::star::uno::XInterface * >( pProxy ) ); - OSL_ASSERT( pEnv == pThis->pBridge->pCppEnv ); - - (*pThis->pBridge->pUnoEnv->revokeInterface)( pThis->pBridge->pUnoEnv, pThis->pUnoI ); - (*pThis->pUnoI->release)( pThis->pUnoI ); - ::typelib_typedescription_release( (typelib_TypeDescription *)pThis->pTypeDescr ); - pThis->pBridge->release(); - -#if OSL_DEBUG_LEVEL > 1 - *(int *)pProxy = 0xdeadbabe; -#endif - delete pThis; -} - -inline void SAL_CALL cppu_Mapping_uno2cpp( - uno_Mapping * pMapping, void ** ppCppI, - void * pUnoI, typelib_InterfaceTypeDescription * pTypeDescr ) -{ - OSL_ASSERT( ppCppI && pTypeDescr ); - if (*ppCppI) - { - reinterpret_cast< ::com::sun::star::uno::XInterface * >( *ppCppI )->release(); - *ppCppI = 0; - } - if (pUnoI) - { - cppu_Bridge * pBridge = static_cast< cppu_Mapping * >( pMapping )->pBridge; - - // get object id of uno interface to be wrapped - rtl_uString * pOId = 0; - (*pBridge->pUnoEnv->getObjectIdentifier)( pBridge->pUnoEnv, &pOId, pUnoI ); - OSL_ASSERT( pOId ); - - // try to get any known interface from target environment - (*pBridge->pCppEnv->getRegisteredInterface)( - pBridge->pCppEnv, ppCppI, pOId, pTypeDescr ); - - if (! *ppCppI) // no existing interface, register new proxy interface - { - // try to publish a new proxy (ref count initially 1) - cppu_cppInterfaceProxy * pProxy = new cppu_cppInterfaceProxy( - pBridge, reinterpret_cast< uno_Interface * >( pUnoI ), pTypeDescr, pOId ); - ::com::sun::star::uno::XInterface * pSurrogate = pProxy; - cppu_cppInterfaceProxy_patchVtable( pSurrogate, pProxy->pTypeDescr ); - - // proxy may be exchanged during registration - (*pBridge->pCppEnv->registerProxyInterface)( - pBridge->pCppEnv, reinterpret_cast< void ** >( &pSurrogate ), - (uno_freeProxyFunc)cppu_cppInterfaceProxy_free, pOId, pTypeDescr ); - - *ppCppI = pSurrogate; - } - ::rtl_uString_release( pOId ); - } -} - -inline void cppu_cppInterfaceProxy::acquireProxy() -{ - if (1 == osl_atomic_increment( &nRef )) - { - // rebirth of proxy zombie - // register at cpp env - void * pThis = static_cast< ::com::sun::star::uno::XInterface * >( this ); - (*pBridge->pCppEnv->registerProxyInterface)( - pBridge->pCppEnv, &pThis, (uno_freeProxyFunc)cppu_cppInterfaceProxy_free, - oid.pData, pTypeDescr ); - OSL_ASSERT( pThis == static_cast< ::com::sun::star::uno::XInterface * >( this ) ); - } -} - -inline void cppu_cppInterfaceProxy::releaseProxy() -{ - if (! osl_atomic_decrement( &nRef )) // last release - { - // revoke from cpp env - (*pBridge->pCppEnv->revokeInterface)( - pBridge->pCppEnv, static_cast< ::com::sun::star::uno::XInterface * >( this ) ); - } -} - -inline cppu_cppInterfaceProxy::cppu_cppInterfaceProxy( - cppu_Bridge * pBridge_, uno_Interface * pUnoI_, - typelib_InterfaceTypeDescription * pTypeDescr_, const OUString & rOId_ ) - : nRef( 1 ) - , pBridge( pBridge_ ) - , pUnoI( pUnoI_ ) - , pTypeDescr( pTypeDescr_ ) - , oid( rOId_ ) -{ - pBridge->acquire(); - ::typelib_typedescription_acquire( (typelib_TypeDescription *)pTypeDescr ); - if (! ((typelib_TypeDescription *)pTypeDescr)->bComplete) - ::typelib_typedescription_complete( (typelib_TypeDescription **)&pTypeDescr ); - OSL_ENSURE( ((typelib_TypeDescription *)pTypeDescr)->bComplete, "### type is incomplete!" ); - (*pUnoI->acquire)( pUnoI ); - (*pBridge->pUnoEnv->registerInterface)( - pBridge->pUnoEnv, reinterpret_cast< void ** >( &pUnoI ), oid.pData, pTypeDescr ); -} - - -inline void SAL_CALL cppu_unoInterfaceProxy_free( uno_ExtEnvironment * pEnv, void * pProxy ) -{ - cppu_unoInterfaceProxy * pThis = - static_cast< cppu_unoInterfaceProxy * >( - reinterpret_cast< uno_Interface * >( pProxy ) ); - OSL_ASSERT( pEnv == pThis->pBridge->pUnoEnv ); - - (*pThis->pBridge->pCppEnv->revokeInterface)( pThis->pBridge->pCppEnv, pThis->pCppI ); - pThis->pCppI->release(); - ::typelib_typedescription_release( (typelib_TypeDescription *)pThis->pTypeDescr ); - pThis->pBridge->release(); - -#if OSL_DEBUG_LEVEL > 1 - *(int *)pProxy = 0xdeadbabe; -#endif - delete pThis; -} - -inline void SAL_CALL cppu_unoInterfaceProxy_acquire( uno_Interface * pUnoI ) -{ - if (1 == osl_atomic_increment( & static_cast< cppu_unoInterfaceProxy * >( pUnoI )->nRef )) - { - // rebirth of proxy zombie - // register at uno env -#if OSL_DEBUG_LEVEL > 1 - void * pThis = pUnoI; -#endif - (*static_cast< cppu_unoInterfaceProxy * >( pUnoI )->pBridge->pUnoEnv->registerProxyInterface)( - static_cast< cppu_unoInterfaceProxy * >( pUnoI )->pBridge->pUnoEnv, - reinterpret_cast< void ** >( &pUnoI ), - (uno_freeProxyFunc)cppu_unoInterfaceProxy_free, - static_cast< cppu_unoInterfaceProxy * >( pUnoI )->oid.pData, - static_cast< cppu_unoInterfaceProxy * >( pUnoI )->pTypeDescr ); -#if OSL_DEBUG_LEVEL > 1 - OSL_ASSERT( pThis == pUnoI ); -#endif - } -} - -inline void SAL_CALL cppu_unoInterfaceProxy_release( uno_Interface * pUnoI ) -{ - if (! osl_atomic_decrement( & static_cast< cppu_unoInterfaceProxy * >( pUnoI )->nRef )) - { - // revoke from uno env on last release - (*static_cast< cppu_unoInterfaceProxy * >( pUnoI )->pBridge->pUnoEnv->revokeInterface)( - static_cast< cppu_unoInterfaceProxy * >( pUnoI )->pBridge->pUnoEnv, pUnoI ); - } -} - -inline void SAL_CALL cppu_Mapping_cpp2uno( - uno_Mapping * pMapping, void ** ppUnoI, - void * pCppI, typelib_InterfaceTypeDescription * pTypeDescr ) -{ - OSL_ENSURE( ppUnoI && pTypeDescr, "### null ptr!" ); - if (*ppUnoI) - { - (*reinterpret_cast< uno_Interface * >( *ppUnoI )->release)( - reinterpret_cast< uno_Interface * >( *ppUnoI ) ); - *ppUnoI = 0; - } - if (pCppI) - { - cppu_Bridge * pBridge = static_cast< cppu_Mapping * >( pMapping )->pBridge; - - // get object id of interface to be wrapped - rtl_uString * pOId = 0; - (*pBridge->pCppEnv->getObjectIdentifier)( pBridge->pCppEnv, &pOId, pCppI ); - OSL_ASSERT( pOId ); - - // try to get any known interface from target environment - (*pBridge->pUnoEnv->getRegisteredInterface)( - pBridge->pUnoEnv, ppUnoI, pOId, pTypeDescr ); - - if (! *ppUnoI) // no existing interface, register new proxy interface - { - // try to publish a new proxy (refcount initially 1) - uno_Interface * pSurrogate = new cppu_unoInterfaceProxy( - pBridge, reinterpret_cast< ::com::sun::star::uno::XInterface * >( pCppI ), - pTypeDescr, pOId ); - - // proxy may be exchanged during registration - (*pBridge->pUnoEnv->registerProxyInterface)( - pBridge->pUnoEnv, reinterpret_cast< void ** >( &pSurrogate ), - (uno_freeProxyFunc)cppu_unoInterfaceProxy_free, pOId, pTypeDescr ); - - *ppUnoI = pSurrogate; - } - ::rtl_uString_release( pOId ); - } -} - -inline cppu_unoInterfaceProxy::cppu_unoInterfaceProxy( - cppu_Bridge * pBridge_, ::com::sun::star::uno::XInterface * pCppI_, - typelib_InterfaceTypeDescription * pTypeDescr_, const OUString & rOId_ ) - : nRef( 1 ) - , pBridge( pBridge_ ) - , pCppI( pCppI_ ) - , pTypeDescr( pTypeDescr_ ) - , oid( rOId_ ) -{ - pBridge->acquire(); - ::typelib_typedescription_acquire( (typelib_TypeDescription *)pTypeDescr ); - if (! ((typelib_TypeDescription *)pTypeDescr)->bComplete) - ::typelib_typedescription_complete( (typelib_TypeDescription **)&pTypeDescr ); - OSL_ENSURE( ((typelib_TypeDescription *)pTypeDescr)->bComplete, "### type is incomplete!" ); - pCppI->acquire(); - (*pBridge->pCppEnv->registerInterface)( - pBridge->pCppEnv, reinterpret_cast< void ** >( &pCppI ), oid.pData, pTypeDescr ); - - // uno_Interface - uno_Interface::acquire = cppu_unoInterfaceProxy_acquire; - uno_Interface::release = cppu_unoInterfaceProxy_release; - uno_Interface::pDispatcher = (uno_DispatchMethod)cppu_unoInterfaceProxy_dispatch; -} - - -inline void SAL_CALL cppu_Mapping_acquire( uno_Mapping * pMapping ) -{ - static_cast< cppu_Mapping * >( pMapping )->pBridge->acquire(); -} - -inline void SAL_CALL cppu_Mapping_release( uno_Mapping * pMapping ) -{ - static_cast< cppu_Mapping * >( pMapping )->pBridge->release(); -} - -inline cppu_Bridge::cppu_Bridge( - uno_ExtEnvironment * pCppEnv_, uno_ExtEnvironment * pUnoEnv_, - sal_Bool bExportCpp2Uno_ ) - : nRef( 1 ) - , pCppEnv( pCppEnv_ ) - , pUnoEnv( pUnoEnv_ ) - , bExportCpp2Uno( bExportCpp2Uno_ ) -{ - aCpp2Uno.pBridge = this; - aCpp2Uno.acquire = cppu_Mapping_acquire; - aCpp2Uno.release = cppu_Mapping_release; - aCpp2Uno.mapInterface = cppu_Mapping_cpp2uno; - - aUno2Cpp.pBridge = this; - aUno2Cpp.acquire = cppu_Mapping_acquire; - aUno2Cpp.release = cppu_Mapping_release; - aUno2Cpp.mapInterface = cppu_Mapping_uno2cpp; - - (*((uno_Environment *)pCppEnv)->acquire)( (uno_Environment *)pCppEnv ); - (*((uno_Environment *)pUnoEnv)->acquire)( (uno_Environment *)pUnoEnv ); -} - -inline cppu_Bridge::~cppu_Bridge() -{ - (*((uno_Environment *)pUnoEnv)->release)( (uno_Environment *)pUnoEnv ); - (*((uno_Environment *)pCppEnv)->release)( (uno_Environment *)pCppEnv ); -} - -inline void SAL_CALL cppu_Bridge_free( uno_Mapping * pMapping ) -{ - delete static_cast< cppu_Mapping * >( pMapping )->pBridge; -} - -inline void cppu_Bridge::acquire() -{ - if (1 == osl_atomic_increment( &nRef )) - { - if (bExportCpp2Uno) - { - uno_Mapping * pMapping = &aCpp2Uno; - ::uno_registerMapping( - &pMapping, cppu_Bridge_free, - (uno_Environment *)pCppEnv, (uno_Environment *)pUnoEnv, 0 ); - } - else - { - uno_Mapping * pMapping = &aUno2Cpp; - ::uno_registerMapping( - &pMapping, cppu_Bridge_free, - (uno_Environment *)pUnoEnv, (uno_Environment *)pCppEnv, 0 ); - } - } -} - -inline void cppu_Bridge::release() -{ - if (! osl_atomic_decrement( &nRef )) - { - ::uno_revokeMapping( bExportCpp2Uno ? &aCpp2Uno : &aUno2Cpp ); - } -} - - -inline void SAL_CALL cppu_ext_getMapping( - uno_Mapping ** ppMapping, uno_Environment * pFrom, uno_Environment * pTo ) -{ - OSL_ASSERT( ppMapping && pFrom && pTo ); - if (ppMapping && pFrom && pTo && pFrom->pExtEnv && pTo->pExtEnv) - { - uno_Mapping * pMapping = 0; - - if (0 == rtl_ustr_ascii_compare( pFrom->pTypeName->buffer, CPPU_CURRENT_LANGUAGE_BINDING_NAME ) && - 0 == rtl_ustr_ascii_compare( pTo->pTypeName->buffer, UNO_LB_UNO )) - { - // ref count initially 1 - pMapping = &(new cppu_Bridge( pFrom->pExtEnv, pTo->pExtEnv, sal_True ))->aCpp2Uno; - ::uno_registerMapping( - &pMapping, cppu_Bridge_free, - (uno_Environment *)pFrom->pExtEnv, - (uno_Environment *)pTo->pExtEnv, 0 ); - } - else if (0 == rtl_ustr_ascii_compare( pTo->pTypeName->buffer, CPPU_CURRENT_LANGUAGE_BINDING_NAME ) && - 0 == rtl_ustr_ascii_compare( pFrom->pTypeName->buffer, UNO_LB_UNO )) - { - // ref count initially 1 - pMapping = &(new cppu_Bridge( pTo->pExtEnv, pFrom->pExtEnv, sal_False ))->aUno2Cpp; - ::uno_registerMapping( - &pMapping, cppu_Bridge_free, - (uno_Environment *)pFrom->pExtEnv, - (uno_Environment *)pTo->pExtEnv, 0 ); - } - - if (*ppMapping) - { - (*(*ppMapping)->release)( *ppMapping ); - } - if (pMapping) - *ppMapping = pMapping; - } -} - - -// environment init stuff - -inline const OUString & SAL_CALL cppu_cppenv_getStaticOIdPart() -{ - static OUString * s_pStaticOidPart = 0; - if (! s_pStaticOidPart) - { - ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); - if (! s_pStaticOidPart) - { - OUStringBuffer aRet( 64 ); - aRet.append( "];" ); - // good guid - sal_uInt8 ar[16]; - ::rtl_getGlobalProcessId( ar ); - for ( sal_Int32 i = 0; i < 16; ++i ) - { - aRet.append( (sal_Int32)ar[i], 16 ); - } - static OUString s_aStaticOidPart( aRet.makeStringAndClear() ); - s_pStaticOidPart = &s_aStaticOidPart; - } - } - return *s_pStaticOidPart; -} -// functions set at environment init - -inline void SAL_CALL cppu_cppenv_computeObjectIdentifier( - uno_ExtEnvironment * pEnv, rtl_uString ** ppOId, void * pInterface ) -{ - OSL_ENSURE( pEnv && ppOId && pInterface, "### null ptr!" ); - if (pEnv && ppOId && pInterface) - { - if (*ppOId) - { - rtl_uString_release( *ppOId ); - *ppOId = 0; - } - - try - { - ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xHome( - reinterpret_cast< ::com::sun::star::uno::XInterface * >( pInterface ), - ::com::sun::star::uno::UNO_QUERY ); - OSL_ENSURE( xHome.is(), "### query to XInterface failed!" ); - if (xHome.is()) - { - // interface - OUStringBuffer oid( 64 ); - oid.append( (sal_Int64)xHome.get(), 16 ); - oid.append( (sal_Unicode)';' ); - // ;environment[context] - oid.append( - OUString::unacquired( - &((uno_Environment *) pEnv)->pTypeName ) ); - oid.append( (sal_Unicode)'[' ); - oid.append( (sal_Int64)((uno_Environment *)pEnv)->pContext, 16 ); - // ];good guid - oid.append( cppu_cppenv_getStaticOIdPart() ); - OUString aRet( oid.makeStringAndClear() ); - ::rtl_uString_acquire( *ppOId = aRet.pData ); - } - } - catch (const ::com::sun::star::uno::RuntimeException &) - { - OSL_FAIL( "### RuntimeException occurred during queryInterface()!" ); - } - } -} - -inline void SAL_CALL cppu_cppenv_acquireInterface( uno_ExtEnvironment *, void * pCppI ) -{ - reinterpret_cast< ::com::sun::star::uno::XInterface * >( pCppI )->acquire(); -} - -inline void SAL_CALL cppu_cppenv_releaseInterface( uno_ExtEnvironment *, void * pCppI ) -{ - reinterpret_cast< ::com::sun::star::uno::XInterface * >( pCppI )->release(); -} - -inline void SAL_CALL cppu_cppenv_environmentDisposing( uno_Environment * ) {} - -inline void SAL_CALL cppu_cppenv_initEnvironment( uno_Environment * pCppEnv ) -{ - OSL_ENSURE( pCppEnv->pExtEnv, "### expected extended environment!" ); - OSL_ENSURE( ::rtl_ustr_ascii_compare( pCppEnv->pTypeName->buffer, CPPU_CURRENT_LANGUAGE_BINDING_NAME ) == 0, "### wrong environment type!" ); - ((uno_ExtEnvironment *)pCppEnv)->computeObjectIdentifier = cppu_cppenv_computeObjectIdentifier; - ((uno_ExtEnvironment *)pCppEnv)->acquireInterface = cppu_cppenv_acquireInterface; - ((uno_ExtEnvironment *)pCppEnv)->releaseInterface = cppu_cppenv_releaseInterface; - pCppEnv->environmentDisposing = cppu_cppenv_environmentDisposing; -} - -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |