diff options
Diffstat (limited to 'cppu/source/helper/purpenv/helper_purpenv_Environment.cxx')
-rw-r--r-- | cppu/source/helper/purpenv/helper_purpenv_Environment.cxx | 540 |
1 files changed, 0 insertions, 540 deletions
diff --git a/cppu/source/helper/purpenv/helper_purpenv_Environment.cxx b/cppu/source/helper/purpenv/helper_purpenv_Environment.cxx deleted file mode 100644 index b0b6388f1..000000000 --- a/cppu/source/helper/purpenv/helper_purpenv_Environment.cxx +++ /dev/null @@ -1,540 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_cppu.hxx" - -#include "cppu/helper/purpenv/Environment.hxx" - -#include "osl/diagnose.h" -#include "uno/lbnames.h" - -#include "typelib/typedescription.h" -#include "osl/interlck.h" - -#ifdef debug -# define LOG_LIFECYCLE_cppu_helper_purpenv_Base -#endif - -#ifdef LOG_LIFECYCLE_cppu_helper_purpenv_Base -# include <iostream> -# define LOG_LIFECYCLE_cppu_helper_purpenv_Base_emit(x) x - -#else -# define LOG_LIFECYCLE_cppu_helper_purpenv_Base_emit(x) - -#endif - - -extern "C" { -typedef void SAL_CALL EnvFun_P (uno_Environment *); -typedef void SAL_CALL EnvFun_PP_P(uno_Environment ** ppHardEnv, uno_Environment *); -typedef void SAL_CALL ExtEnv_registerProxyInterface (uno_ExtEnvironment *, - void ** ppProxy, - uno_freeProxyFunc freeProxy, - rtl_uString * pOId, - typelib_InterfaceTypeDescription * pTypeDescr); -typedef void SAL_CALL ExtEnv_revokeInterface (uno_ExtEnvironment *, - void * pInterface); -typedef void SAL_CALL ExtEnv_getObjectIdentifier (uno_ExtEnvironment *, - rtl_uString **, - void *); -typedef void SAL_CALL ExtEnv_getRegisteredInterface (uno_ExtEnvironment *, - void **, - rtl_uString *, - typelib_InterfaceTypeDescription *); -typedef void SAL_CALL ExtEnv_getRegisteredInterfaces(uno_ExtEnvironment *, - void *** pppInterfaces, - sal_Int32 * pnLen, - uno_memAlloc memAlloc); -typedef void SAL_CALL ExtEnv_computeObjectIdentifier(uno_ExtEnvironment *, - rtl_uString ** ppOId, - void * pInterface); -typedef void SAL_CALL ExtEnv_acquireInterface (uno_ExtEnvironment *, - void * pInterface); -typedef void SAL_CALL ExtEnv_releaseInterface (uno_ExtEnvironment *, - void * pInterface); -} - -class Base : public cppu::Enterable -{ -public: - explicit Base(uno_Environment * pEnv, cppu::Enterable * pEnterable); - - void acquireWeak(void); - void releaseWeak(void); - void harden (uno_Environment ** ppHardEnv); - void acquire (void); - void release (void); - - void registerProxyInterface (void ** ppProxy, - uno_freeProxyFunc freeProxy, - rtl::OUString const & oid, - typelib_InterfaceTypeDescription * pTypeDescr); - void revokeInterface (void * pInterface); - void getObjectIdentifier (void * pInterface, - rtl::OUString * pOid); - void getRegisteredInterface (void **, - rtl::OUString const & oid, - typelib_InterfaceTypeDescription *); - void getRegisteredInterfaces(void ***, - sal_Int32 * pnLen, - uno_memAlloc memAlloc); - void computeObjectIdentifier(void * pInterface, - rtl::OUString * pOid); - void acquireInterface (void * pInterface); - void releaseInterface (void * pInterface); - - virtual void v_enter (void); - virtual void v_leave (void); - virtual void v_callInto_v(uno_EnvCallee * pCallee, va_list * pParam); - virtual void v_callOut_v (uno_EnvCallee * pCallee, va_list * pParam); - virtual int v_isValid (rtl::OUString * pReason); - -protected: - oslInterlockedCount m_nRef; - uno_Environment * m_pEnv; - cppu::Enterable * m_pEnterable; - - EnvFun_P * m_env_acquire; - EnvFun_P * m_env_release; - EnvFun_PP_P * m_env_harden; - EnvFun_P * m_env_acquireWeak; - EnvFun_P * m_env_releaseWeak; - - ExtEnv_registerProxyInterface * m_env_registerProxyInterface; - ExtEnv_revokeInterface * m_env_revokeInterface; - ExtEnv_getObjectIdentifier * m_env_getObjectIdentifier; - ExtEnv_getRegisteredInterface * m_env_getRegisteredInterface; - ExtEnv_getRegisteredInterfaces * m_env_getRegisteredInterfaces; - ExtEnv_computeObjectIdentifier * m_env_computeObjectIdentifier; - ExtEnv_acquireInterface * m_env_acquireInterface; - ExtEnv_releaseInterface * m_env_releaseInterface; - - virtual ~Base(); -}; - -extern "C" { -static void SAL_CALL s_acquire(uno_Environment * pEnv) //SAL_THROW_EXTERN_C() -{ - Base * pBase = static_cast<Base *>(pEnv->pReserved); - pBase->acquire(); -} - -static void SAL_CALL s_release(uno_Environment * pEnv) SAL_THROW_EXTERN_C() -{ - Base * pBase = static_cast<Base *>(pEnv->pReserved); - pBase->release(); -} - -static void SAL_CALL s_harden(uno_Environment ** ppHardEnv, uno_Environment * pEnv) SAL_THROW_EXTERN_C() -{ - Base * pBase = static_cast<Base *>(pEnv->pReserved); - pBase->harden(ppHardEnv); -} - -static void SAL_CALL s_acquireWeak(uno_Environment * pEnv) SAL_THROW_EXTERN_C() -{ - Base * pBase = static_cast<Base *>(pEnv->pReserved); - pBase->acquireWeak(); -} - -static void SAL_CALL s_releaseWeak(uno_Environment * pEnv) SAL_THROW_EXTERN_C() -{ - Base * pBase = static_cast<Base *>(pEnv->pReserved); - pBase->releaseWeak(); -} - - -static void SAL_CALL s_registerProxyInterface(uno_ExtEnvironment * pExtEnv, - void ** ppProxy, - uno_freeProxyFunc freeProxy, - rtl_uString * pOId, - typelib_InterfaceTypeDescription * pTypeDescr) -{ - Base * pBase = static_cast<Base *>(pExtEnv->aBase.pReserved); - pBase->registerProxyInterface(ppProxy, freeProxy, pOId, pTypeDescr); -} - -static void SAL_CALL s_revokeInterface(uno_ExtEnvironment * pExtEnv, void * pInterface) -{ - Base * pBase = static_cast<Base *>(pExtEnv->aBase.pReserved); - pBase->revokeInterface(pInterface); -} - -static void SAL_CALL s_getObjectIdentifier(uno_ExtEnvironment * pExtEnv, - rtl_uString ** ppOId, - void * pInterface) -{ - Base * pBase = static_cast<Base *>(pExtEnv->aBase.pReserved); - pBase->getObjectIdentifier(pInterface, reinterpret_cast<rtl::OUString *>(ppOId)); -} - -static void SAL_CALL s_getRegisteredInterface(uno_ExtEnvironment * pExtEnv, - void ** ppInterface, - rtl_uString * pOId, - typelib_InterfaceTypeDescription * pTypeDescr) -{ - Base * pBase = static_cast<Base *>(pExtEnv->aBase.pReserved); - pBase->getRegisteredInterface(ppInterface, pOId, pTypeDescr); -} - -static void SAL_CALL s_getRegisteredInterfaces(uno_ExtEnvironment * pExtEnv, - void *** pppInterface, - sal_Int32 * pnLen, - uno_memAlloc memAlloc) -{ - Base * pBase = static_cast<Base *>(pExtEnv->aBase.pReserved); - pBase->getRegisteredInterfaces(pppInterface, pnLen, memAlloc); -} - -static void SAL_CALL s_computeObjectIdentifier(uno_ExtEnvironment * pExtEnv, - rtl_uString ** ppOId, - void * pInterface) -{ - Base * pBase = static_cast<Base *>(pExtEnv->aBase.pReserved); - pBase->computeObjectIdentifier(pInterface, reinterpret_cast<rtl::OUString *>(ppOId)); -} - -static void SAL_CALL s_acquireInterface(uno_ExtEnvironment * pExtEnv, void * pInterface) { - Base * pBase = static_cast<Base *>(pExtEnv->aBase.pReserved); - pBase->acquireInterface(pInterface); -} - -static void SAL_CALL s_releaseInterface(uno_ExtEnvironment * pExtEnv, void * pInterface) { - Base * pBase = static_cast<Base *>(pExtEnv->aBase.pReserved); - pBase->releaseInterface(pInterface); -} - -} - -Base::Base(uno_Environment * pEnv, cppu::Enterable * pEnterable) - :m_nRef(1), - m_pEnv(pEnv), - m_pEnterable (pEnterable), - m_env_acquire (pEnv->acquire), - m_env_release (pEnv->release), - m_env_harden (pEnv->harden), - m_env_acquireWeak(pEnv->acquireWeak), - m_env_releaseWeak(pEnv->releaseWeak), - m_env_registerProxyInterface (pEnv->pExtEnv->registerProxyInterface), - m_env_revokeInterface (pEnv->pExtEnv->revokeInterface), - m_env_getObjectIdentifier (pEnv->pExtEnv->getObjectIdentifier), - m_env_getRegisteredInterface (pEnv->pExtEnv->getRegisteredInterface), - m_env_getRegisteredInterfaces(pEnv->pExtEnv->getRegisteredInterfaces), - m_env_computeObjectIdentifier(pEnv->pExtEnv->computeObjectIdentifier), - m_env_acquireInterface (pEnv->pExtEnv->acquireInterface), - m_env_releaseInterface (pEnv->pExtEnv->releaseInterface) -{ - LOG_LIFECYCLE_cppu_helper_purpenv_Base_emit(fprintf(stderr, "LIFE: %s -> %p\n", "cppu::helper::purpenv::Base::Base(uno_Environment * pEnv)", this)); - OSL_ENSURE( - rtl_ustr_ascii_compare_WithLength(pEnv->pTypeName->buffer, rtl_str_getLength(UNO_LB_UNO), UNO_LB_UNO) - == 0, - "### wrong environment type!"); - - pEnv->acquire = s_acquire; - pEnv->release = s_release; - pEnv->harden = s_harden; - pEnv->acquireWeak = s_acquireWeak; - pEnv->releaseWeak = s_releaseWeak; - - pEnv->pExtEnv->registerProxyInterface = s_registerProxyInterface; - pEnv->pExtEnv->revokeInterface = s_revokeInterface; - pEnv->pExtEnv->getObjectIdentifier = s_getObjectIdentifier; - pEnv->pExtEnv->getRegisteredInterface = s_getRegisteredInterface; - pEnv->pExtEnv->getRegisteredInterfaces = s_getRegisteredInterfaces; - pEnv->pExtEnv->computeObjectIdentifier = s_computeObjectIdentifier; - pEnv->pExtEnv->acquireInterface = s_acquireInterface; - pEnv->pExtEnv->releaseInterface = s_releaseInterface; - - pEnv->pReserved = this; -} - -Base::~Base() -{ - LOG_LIFECYCLE_cppu_helper_purpenv_Base_emit(fprintf(stderr, "LIFE: %s -> %p\n", "cppu::helper::purpenv::Base::~Base()", this)); - - m_pEnv->acquire = m_env_acquire; - m_pEnv->release = m_env_release; - m_pEnv->harden = m_env_harden; - m_pEnv->acquireWeak = m_env_acquireWeak; - m_pEnv->releaseWeak = m_env_releaseWeak; - - m_pEnv->pReserved = NULL; - - delete m_pEnterable; - m_pEnv->release(m_pEnv); -} - -void Base::acquire(void) -{ - m_env_acquire(m_pEnv); - - osl_incrementInterlockedCount(&m_nRef); -} - -void Base::release(void) -{ - if (osl_decrementInterlockedCount(&m_nRef) == 0) - delete this; - - else - m_env_release(m_pEnv); -} - -void Base::harden(uno_Environment ** ppHardEnv) -{ - m_env_harden(ppHardEnv, m_pEnv); - osl_incrementInterlockedCount(&m_nRef); -} - -void Base::acquireWeak(void) -{ - m_env_acquireWeak(m_pEnv); -} - -void Base::releaseWeak(void) -{ - m_env_releaseWeak(m_pEnv); -} - - -extern "C" { static void s_registerProxyInterface_v(va_list * pParam) -{ - uno_ExtEnvironment * pExtEnv = va_arg(*pParam, uno_ExtEnvironment *); - void ** ppProxy = va_arg(*pParam, void **); - uno_freeProxyFunc freeProxy = va_arg(*pParam, uno_freeProxyFunc); - rtl_uString * pOId = va_arg(*pParam, rtl_uString *); - typelib_InterfaceTypeDescription * pTypeDescr = va_arg(*pParam, typelib_InterfaceTypeDescription *); - ExtEnv_registerProxyInterface * pRegisterProxyInterface - = va_arg(*pParam, ExtEnv_registerProxyInterface *); - - pRegisterProxyInterface(pExtEnv, ppProxy, freeProxy, pOId, pTypeDescr); -}} - -void Base::registerProxyInterface(void ** ppProxy, - uno_freeProxyFunc freeProxy, - rtl::OUString const & oid, - typelib_InterfaceTypeDescription * pTypeDescr) -{ - uno_Environment_invoke(m_pEnv, - s_registerProxyInterface_v, - m_pEnv->pExtEnv, - ppProxy, - freeProxy, - oid.pData, - pTypeDescr, - m_env_registerProxyInterface); -} - - -extern "C" { static void s_revokeInterface_v(va_list * pParam) -{ - uno_ExtEnvironment * pExtEnv = va_arg(*pParam, uno_ExtEnvironment *); - void * pInterface = va_arg(*pParam, void *); - ExtEnv_revokeInterface * pRevokeInterface = va_arg(*pParam, ExtEnv_revokeInterface *); - - pRevokeInterface(pExtEnv, pInterface); -}} - -void Base::revokeInterface(void * pInterface) -{ - uno_Environment_invoke(m_pEnv, - s_revokeInterface_v, - m_pEnv->pExtEnv, - pInterface, - m_env_revokeInterface); -} - - -extern "C" { static void s_getObjectIdentifier_v(va_list * pParam) -{ - uno_ExtEnvironment * pExtEnv = va_arg(*pParam, uno_ExtEnvironment *); - void * pInterface = va_arg(*pParam, void *); - rtl::OUString * pOId = va_arg(*pParam, rtl::OUString *); - ExtEnv_getObjectIdentifier * pGetObjectIdentifier - = va_arg(*pParam, ExtEnv_getObjectIdentifier *); - - pGetObjectIdentifier(pExtEnv, reinterpret_cast<rtl_uString **>(pOId), pInterface); -}} - -void Base::getObjectIdentifier(void * pInterface, rtl::OUString * pOid) -{ - uno_Environment_invoke(m_pEnv, - s_getObjectIdentifier_v, - m_pEnv->pExtEnv, - pInterface, - pOid, - m_env_getObjectIdentifier); -} - - -extern "C" { static void s_getRegisteredInterface_v(va_list * pParam) -{ - uno_ExtEnvironment * pExtEnv = va_arg(*pParam, uno_ExtEnvironment *); - void ** ppInterface = va_arg(*pParam, void **); - rtl_uString * pOId = va_arg(*pParam, rtl_uString *); - typelib_InterfaceTypeDescription * pTypeDescr = va_arg(*pParam, typelib_InterfaceTypeDescription *); - ExtEnv_getRegisteredInterface * pGetRegisteredInterface - = va_arg(*pParam, ExtEnv_getRegisteredInterface *); - - pGetRegisteredInterface(pExtEnv, ppInterface, pOId, pTypeDescr); -}} - -void Base::getRegisteredInterface(void ** ppInterface, - rtl::OUString const & oid, - typelib_InterfaceTypeDescription * pTypeDescr) -{ - uno_Environment_invoke(m_pEnv, - s_getRegisteredInterface_v, - m_pEnv->pExtEnv, - ppInterface, - oid.pData, - pTypeDescr, - m_env_getRegisteredInterface); -} - - -extern "C" { static void s_getRegisteredInterfaces_v(va_list * pParam) -{ - uno_ExtEnvironment * pExtEnv = va_arg(*pParam, uno_ExtEnvironment *); - void *** pppInterface = va_arg(*pParam, void ***); - sal_Int32 * pnLen = va_arg(*pParam, sal_Int32 *); - uno_memAlloc memAlloc = va_arg(*pParam, uno_memAlloc); - ExtEnv_getRegisteredInterfaces * pGetRegisteredInterfaces - = va_arg(*pParam, ExtEnv_getRegisteredInterfaces *); - - pGetRegisteredInterfaces(pExtEnv, pppInterface, pnLen, memAlloc); -}} - -void Base::getRegisteredInterfaces(void *** pppInterface, - sal_Int32 * pnLen, - uno_memAlloc memAlloc) -{ - uno_Environment_invoke(m_pEnv, - s_getRegisteredInterfaces_v, - m_pEnv->pExtEnv, - pppInterface, - pnLen, - memAlloc, - m_env_getRegisteredInterfaces); -} - - -extern "C" { static void s_computeObjectIdentifier_v(va_list * pParam) -{ - uno_ExtEnvironment * pExtEnv = va_arg(*pParam, uno_ExtEnvironment *); - void * pInterface = va_arg(*pParam, void *); - rtl::OUString * pOId = va_arg(*pParam, rtl::OUString *); - ExtEnv_computeObjectIdentifier * pComputeObjectIdentifier - = va_arg(*pParam, ExtEnv_computeObjectIdentifier *); - - pComputeObjectIdentifier(pExtEnv, reinterpret_cast<rtl_uString **>(pOId), pInterface); -}} - -void Base::computeObjectIdentifier(void * pInterface, rtl::OUString * pOid) -{ - uno_Environment_invoke(m_pEnv, - s_computeObjectIdentifier_v, - m_pEnv->pExtEnv, - pInterface, - pOid, - m_env_computeObjectIdentifier); -} - - -extern "C" { static void s_acquireInterface_v(va_list * pParam) -{ - uno_ExtEnvironment * pExtEnv = va_arg(*pParam, uno_ExtEnvironment *); - void * pInterface = va_arg(*pParam, void *); - ExtEnv_acquireInterface * pAcquireInterface - = va_arg(*pParam, ExtEnv_acquireInterface *); - - pAcquireInterface(pExtEnv, pInterface); -}} - -void Base::acquireInterface(void * pInterface) -{ - uno_Environment_invoke(m_pEnv, s_acquireInterface_v, m_pEnv->pExtEnv, pInterface, m_env_acquireInterface); -} - - -extern "C" { static void s_releaseInterface_v(va_list * pParam) -{ - uno_ExtEnvironment * pExtEnv = va_arg(*pParam, uno_ExtEnvironment *); - void * pInterface = va_arg(*pParam, void *); - ExtEnv_releaseInterface * pReleaseInterface - = va_arg(*pParam, ExtEnv_releaseInterface *); - - pReleaseInterface(pExtEnv, pInterface); -}} - -void Base::releaseInterface(void * pInterface) -{ - uno_Environment_invoke(m_pEnv, - s_releaseInterface_v, - m_pEnv->pExtEnv, - pInterface, - m_env_releaseInterface); -} - -void Base::v_enter(void) -{ - m_pEnterable->enter(); -} - -void Base::v_leave(void) -{ - m_pEnterable->leave(); -} - -void Base::v_callInto_v(uno_EnvCallee * pCallee, va_list * pParam) -{ - m_pEnterable->callInto_v(pCallee, pParam); -} - -void Base::v_callOut_v(uno_EnvCallee * pCallee, va_list * pParam) -{ - m_pEnterable->callOut_v(pCallee, pParam); -} - -int Base::v_isValid(rtl::OUString * pReason) -{ - return m_pEnterable->isValid(pReason); -} - -namespace cppu { namespace helper { namespace purpenv { - -void Environment_initWithEnterable(uno_Environment * pEnvironment, cppu::Enterable * pEnterable) -{ - new Base(pEnvironment, pEnterable); -} - -}}} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |