cid#1371142: Move semantics for css::uno::WeakReferenceHelper

Change-Id: I442b2d8061bd7d50cbf832b345a7a63461e26224
This commit is contained in:
Stephan Bergmann
2016-09-19 12:40:51 +02:00
parent 2d31990ad0
commit 4f86b7a86c
3 changed files with 24 additions and 0 deletions

View File

@@ -430,6 +430,11 @@ global:
_ZN4cppu15supportsServiceEPN3com3sun4star4lang12XServiceInfoERKN3rtl8OUStringE; # cppu::supportsService(com::sun::star::lang::XServiceInfo*, rtl::OUString const&) _ZN4cppu15supportsServiceEPN3com3sun4star4lang12XServiceInfoERKN3rtl8OUStringE; # cppu::supportsService(com::sun::star::lang::XServiceInfo*, rtl::OUString const&)
} UDK_3.8; } UDK_3.8;
LIBO_UDK_5.3 { # LibO 5.3
global:
_ZN3com3sun4star3uno19WeakReferenceHelperaSEOS3_; # com::sun::star::uno::WeakReferenceHelper::operator=(com::sun::star::uno::WeakReferenceHelper&&)
} LIBO_UDK_3.9;
# Unique libstdc++ symbols: # Unique libstdc++ symbols:
GLIBCXX_3.4 { GLIBCXX_3.4 {
global: global:

View File

@@ -24,7 +24,9 @@
#include <cppuhelper/interfacecontainer.hxx> #include <cppuhelper/interfacecontainer.hxx>
#include <cppuhelper/exc_hlp.hxx> #include <cppuhelper/exc_hlp.hxx>
#include <cppuhelper/queryinterface.hxx> #include <cppuhelper/queryinterface.hxx>
#include <algorithm> #include <algorithm>
#include <utility>
using namespace osl; using namespace osl;
using namespace com::sun::star::uno; using namespace com::sun::star::uno;
@@ -485,6 +487,14 @@ WeakReferenceHelper& WeakReferenceHelper::operator=(const WeakReferenceHelper& r
return operator = ( xInt ); return operator = ( xInt );
} }
WeakReferenceHelper & WeakReferenceHelper::operator =(
WeakReferenceHelper && other)
{
clear();
std::swap(m_pImpl, other.m_pImpl);
return *this;
}
WeakReferenceHelper & SAL_CALL WeakReferenceHelper & SAL_CALL
WeakReferenceHelper::operator= (const Reference< XInterface > & xInt) WeakReferenceHelper::operator= (const Reference< XInterface > & xInt)
{ {

View File

@@ -63,6 +63,11 @@ public:
*/ */
WeakReferenceHelper( const WeakReferenceHelper & rWeakRef ); WeakReferenceHelper( const WeakReferenceHelper & rWeakRef );
#if defined LIBO_INTERNAL_ONLY
WeakReferenceHelper(WeakReferenceHelper && other): m_pImpl(other.m_pImpl)
{ other.m_pImpl = nullptr; }
#endif
/** Initialize this reference with the hard interface reference xInt. If the implementation /** Initialize this reference with the hard interface reference xInt. If the implementation
behind xInt does not support XWeak or xInt is null then this reference will be null. behind xInt does not support XWeak or xInt is null then this reference will be null.
@@ -80,6 +85,10 @@ public:
*/ */
WeakReferenceHelper & SAL_CALL operator = ( const WeakReferenceHelper & rWeakRef ); WeakReferenceHelper & SAL_CALL operator = ( const WeakReferenceHelper & rWeakRef );
#if defined LIBO_INTERNAL_ONLY
WeakReferenceHelper & operator =(WeakReferenceHelper && other);
#endif
/** Releases this reference and takes over hard reference xInt. /** Releases this reference and takes over hard reference xInt.
If the implementation behind xInt does not support XWeak If the implementation behind xInt does not support XWeak
or XInt is null, then this reference is null. or XInt is null, then this reference is null.