summaryrefslogtreecommitdiff
path: root/chart2/source/inc/LifeTime.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'chart2/source/inc/LifeTime.hxx')
-rw-r--r--chart2/source/inc/LifeTime.hxx255
1 files changed, 0 insertions, 255 deletions
diff --git a/chart2/source/inc/LifeTime.hxx b/chart2/source/inc/LifeTime.hxx
deleted file mode 100644
index f7f502c0b..000000000
--- a/chart2/source/inc/LifeTime.hxx
+++ /dev/null
@@ -1,255 +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.
- *
- ************************************************************************/
-#ifndef _LIFETIME_HXX
-#define _LIFETIME_HXX
-
-#include <osl/mutex.hxx>
-#include <osl/conditn.hxx>
-#include <com/sun/star/uno/Exception.hdl>
-#include <cppuhelper/interfacecontainer.hxx>
-#include <com/sun/star/util/XCloseListener.hpp>
-#include <com/sun/star/util/XCloseable.hpp>
-#include <com/sun/star/lang/XComponent.hpp>
-#include <cppuhelper/weakref.hxx>
-#include "charttoolsdllapi.hxx"
-
-namespace apphelper
-{
-
-class LifeTimeGuard;
-class LifeTimeManager
-{
-friend class LifeTimeGuard;
-protected:
- mutable ::osl::Mutex m_aAccessMutex;
-public:
-OOO_DLLPUBLIC_CHARTTOOLS LifeTimeManager( ::com::sun::star::lang::XComponent* pComponent, sal_Bool bLongLastingCallsCancelable = sal_False );
-OOO_DLLPUBLIC_CHARTTOOLS virtual ~LifeTimeManager();
-
-OOO_DLLPUBLIC_CHARTTOOLS bool impl_isDisposed( bool bAssert=true );
-OOO_DLLPUBLIC_CHARTTOOLS sal_Bool dispose() throw(::com::sun::star::uno::RuntimeException);
-
-public:
- ::cppu::OMultiTypeInterfaceContainerHelper m_aListenerContainer;
-
-protected:
- virtual sal_Bool impl_canStartApiCall();
- virtual void impl_apiCallCountReachedNull(){}
-
- void impl_registerApiCall(sal_Bool bLongLastingCall);
- void impl_unregisterApiCall(sal_Bool bLongLastingCall);
-
- void impl_init();
-
-protected:
- ::com::sun::star::lang::XComponent* m_pComponent;
-
- ::osl::Condition m_aNoAccessCountCondition;
- sal_Int32 volatile m_nAccessCount;
-
- sal_Bool volatile m_bDisposed;
- sal_Bool volatile m_bInDispose;
-
- sal_Bool m_bLongLastingCallsCancelable;
- ::osl::Condition m_aNoLongLastingCallCountCondition;
- sal_Int32 volatile m_nLongLastingCallCount;
-};
-
-class CloseableLifeTimeManager : public LifeTimeManager
-{
-protected:
- ::com::sun::star::util::XCloseable* m_pCloseable;
-
- ::osl::Condition m_aEndTryClosingCondition;
- sal_Bool volatile m_bClosed;
- sal_Bool volatile m_bInTryClose;
- //the ownership between model and controller is not clear at first
- //each controller might consider him as owner of the model first
- //at start the model is not considered as owner of itself
- sal_Bool volatile m_bOwnership;
- //with a XCloseable::close call and during XCloseListener::queryClosing
- //the ownership can be regulated more explicit,
- //if so the ownership is considered to be well known
- sal_Bool volatile m_bOwnershipIsWellKnown;
-
-public:
-OOO_DLLPUBLIC_CHARTTOOLS CloseableLifeTimeManager( ::com::sun::star::util::XCloseable* pCloseable
- , ::com::sun::star::lang::XComponent* pComponent
- , sal_Bool bLongLastingCallsCancelable = sal_False );
-OOO_DLLPUBLIC_CHARTTOOLS virtual ~CloseableLifeTimeManager();
-
-OOO_DLLPUBLIC_CHARTTOOLS bool impl_isDisposedOrClosed( bool bAssert=true );
-OOO_DLLPUBLIC_CHARTTOOLS sal_Bool g_close_startTryClose(sal_Bool bDeliverOwnership)
- throw ( ::com::sun::star::uno::Exception );
-OOO_DLLPUBLIC_CHARTTOOLS sal_Bool g_close_isNeedToCancelLongLastingCalls( sal_Bool bDeliverOwnership, ::com::sun::star::util::CloseVetoException& ex )
- throw ( ::com::sun::star::util::CloseVetoException );
-OOO_DLLPUBLIC_CHARTTOOLS void g_close_endTryClose(sal_Bool bDeliverOwnership, sal_Bool bMyVeto );
-OOO_DLLPUBLIC_CHARTTOOLS void g_close_endTryClose_doClose();
-OOO_DLLPUBLIC_CHARTTOOLS sal_Bool g_addCloseListener( const ::com::sun::star::uno::Reference<
- ::com::sun::star::util::XCloseListener > & xListener )
- throw(::com::sun::star::uno::RuntimeException);
-
-protected:
- virtual sal_Bool impl_canStartApiCall();
- virtual void impl_apiCallCountReachedNull();
-
- void impl_setOwnership( sal_Bool bDeliverOwnership, sal_Bool bMyVeto );
- sal_Bool impl_shouldCloseAtNextChance();
- void impl_doClose();
-
- void impl_init()
- {
- m_bClosed = sal_False;
- m_bInTryClose = sal_False;
- m_bOwnership = sal_False;
- m_bOwnershipIsWellKnown = sal_False;
- m_aEndTryClosingCondition.set();
- }
-};
-
-//-----------------------------------------------------------------
-/*
-Use this Guard in your apicalls to protect access on resources
-which will be released in dispose.
-It's guarantied, that the release of resources only starts if your
-guarded call has finished.
-! It's only partly guaranteed that this resources will not change during the call.
-See the example for details.
-
-This class is to be used as described in the example.
-
-If this guard is used in all api calls of an XCloseable object
-it's guarantied, that the closeable will close itself after finishing the last call
-if it should do so.
-
- ::ApiCall
-{
- //hold no mutex!!!
- LifeTimeGuard aLifeTimeGuard(m_aLifeTimeManager);
-
- //mutex is acquired; call is not registered
-
- if(!aLifeTimeGuard.startApiCall())
- return ; //behave as passive as possible, if disposed or closed
-
- //mutex is acquired, call is registered
- {
- //you might access some private members here
- //but than you need to protect access to these members always like this
- //never call to the outside here
- }
-
- aLifeTimeGuard.clear(); //!!!
-
- //Mutex is released, the running call is still registered
- //this call will finish before the 'release-section' in dispose is allowed to start
-
- {
- //you might access some private members here guarded with your own mutex
- //but release your mutex at the end of this block
- }
-
- //you can call to the outside (without holding the mutex) without becoming disposed
-
- //End of method -> ~LifeTimeGuard
- //-> call is unregistered
- //-> this object might be disposed now
-}
-
-your XComponent::dispose method has to be implemented in the following way:
-
- ::dispose()
-{
- //hold no mutex!!!
- if( !m_aLifeTimeManager.dispose() )
- return;
-
- //--release all resources and references
- //...
-}
-
-*/
-//-----------------------------------------------------------------
-
-class OOO_DLLPUBLIC_CHARTTOOLS LifeTimeGuard
-{
-
-public:
- LifeTimeGuard( LifeTimeManager& rManager )
- : m_guard( rManager.m_aAccessMutex )
- , m_rManager(rManager)
- , m_bCallRegistered(sal_False)
- , m_bLongLastingCallRegistered(sal_False)
- {
-
- }
- sal_Bool startApiCall(sal_Bool bLongLastingCall=sal_False);
- ~LifeTimeGuard();
- void clear() { m_guard.clear(); }
-
-private:
- osl::ClearableMutexGuard m_guard;
- LifeTimeManager& m_rManager;
- sal_Bool m_bCallRegistered;
- sal_Bool m_bLongLastingCallRegistered;
-
-private:
- // these make no sense
- LifeTimeGuard( ::osl::Mutex& rMutex );
- LifeTimeGuard( const LifeTimeGuard& );
- LifeTimeGuard& operator= ( const LifeTimeGuard& );
-};
-
-
-template<class T>
-class NegativeGuard
-{
-protected:
- T * m_pT;
-public:
-
- NegativeGuard(T * pT) : m_pT(pT)
- {
- m_pT->release();
- }
-
- NegativeGuard(T & t) : m_pT(&t)
- {
- m_pT->release();
- }
-
- ~NegativeGuard()
- {
- m_pT->acquire();
- }
-};
-
-}//end namespace apphelper
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */