[Libreoffice-commits] core.git: include/tools
Noel Grandin
noel at peralex.com
Wed Jun 8 06:39:54 UTC 2016
include/tools/weakbase.h | 5 +++--
include/tools/weakbase.hxx | 26 +++++---------------------
2 files changed, 8 insertions(+), 23 deletions(-)
New commits:
commit c941b5a103b5f2105106834c74842a3909216f9a
Author: Noel Grandin <noel at peralex.com>
Date: Tue Jun 7 11:31:47 2016 +0200
remove some manual refcounting in tools
Change-Id: Ic911b38f77dda7ce564f315a97624c9054c77a38
Reviewed-on: https://gerrit.libreoffice.org/26010
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin at gmail.com>
diff --git a/include/tools/weakbase.h b/include/tools/weakbase.h
index cd1ab64..aba255e 100644
--- a/include/tools/weakbase.h
+++ b/include/tools/weakbase.h
@@ -21,6 +21,7 @@
#include <sal/types.h>
#include <osl/diagnose.h>
+#include <rtl/ref.hxx>
/** the template classes in this header are helper to implement weak references
to implementation objects that are not refcounted.
@@ -113,7 +114,7 @@ public:
inline WeakReference<reference_type>& operator= (const WeakReference<reference_type> & handle);
private:
- WeakConnection< reference_type >* mpWeakConnection;
+ rtl::Reference<WeakConnection< reference_type >> mpWeakConnection;
};
/** derive your implementation classes from this class if you want them to support weak references */
@@ -136,7 +137,7 @@ public:
private:
inline WeakConnection< reference_type >* getWeakConnection();
- WeakConnection< reference_type >* mpWeakConnection;
+ rtl::Reference<WeakConnection< reference_type >> mpWeakConnection;
};
}
diff --git a/include/tools/weakbase.hxx b/include/tools/weakbase.hxx
index 4087160..bdbcded 100644
--- a/include/tools/weakbase.hxx
+++ b/include/tools/weakbase.hxx
@@ -31,7 +31,6 @@ template< class reference_type >
inline WeakReference< reference_type >::WeakReference()
{
mpWeakConnection = new WeakConnection<reference_type>( 0 );
- mpWeakConnection->acquire();
}
template< class reference_type >
@@ -41,21 +40,17 @@ inline WeakReference< reference_type >::WeakReference( reference_type* pReferenc
mpWeakConnection = pReference->getWeakConnection();
else
mpWeakConnection = new WeakConnection<reference_type>( 0 );
-
- mpWeakConnection->acquire();
}
template< class reference_type >
inline WeakReference< reference_type >::WeakReference( const WeakReference< reference_type >& rWeakRef )
{
mpWeakConnection = rWeakRef.mpWeakConnection;
- mpWeakConnection->acquire();
}
template< class reference_type >
inline WeakReference< reference_type >::~WeakReference()
{
- mpWeakConnection->release();
}
template< class reference_type >
@@ -73,20 +68,16 @@ inline reference_type * WeakReference< reference_type >::get() const
template< class reference_type >
inline void WeakReference< reference_type >::reset( reference_type* pReference )
{
- mpWeakConnection->release();
-
if( pReference )
mpWeakConnection = pReference->getWeakConnection();
else
mpWeakConnection = new WeakConnection<reference_type>( 0 );
-
- mpWeakConnection->acquire();
}
template< class reference_type >
inline reference_type * WeakReference< reference_type >::operator->() const
{
- OSL_PRECOND(mpWeakConnection, "tools::WeakReference::operator->() : null body");
+ OSL_PRECOND(mpWeakConnection.is(), "tools::WeakReference::operator->() : null body");
return mpWeakConnection->mpReference;
}
@@ -126,10 +117,7 @@ inline WeakReference<reference_type>& WeakReference<reference_type>::operator= (
{
if (&rReference != this)
{
- mpWeakConnection->release();
-
mpWeakConnection = rReference.mpWeakConnection;
- mpWeakConnection->acquire();
}
return *this;
}
@@ -137,36 +125,32 @@ inline WeakReference<reference_type>& WeakReference<reference_type>::operator= (
template< class reference_type >
inline WeakBase< reference_type >::WeakBase()
{
- mpWeakConnection = nullptr;
}
template< class reference_type >
inline WeakBase< reference_type >::~WeakBase()
{
- if( mpWeakConnection )
+ if( mpWeakConnection.is() )
{
mpWeakConnection->mpReference = 0;
- mpWeakConnection->release();
- mpWeakConnection = nullptr;
}
}
template< class reference_type >
inline void WeakBase< reference_type >::clearWeak()
{
- if( mpWeakConnection )
+ if( mpWeakConnection.is() )
mpWeakConnection->mpReference = 0;
}
template< class reference_type >
inline WeakConnection< reference_type >* WeakBase< reference_type >::getWeakConnection()
{
- if( !mpWeakConnection )
+ if( !mpWeakConnection.is() )
{
mpWeakConnection = new WeakConnection< reference_type >( static_cast< reference_type* >( this ) );
- mpWeakConnection->acquire();
}
- return mpWeakConnection;
+ return mpWeakConnection.get();
}
}
More information about the Libreoffice-commits
mailing list