[Libreoffice-commits] core.git: 20 commits - basegfx/source comphelper/source include/basegfx include/comphelper include/sfx2 include/store include/svl include/svx include/tools include/ucbhelper include/vcl svl/source svx/source tools/source ucbhelper/source vcl/source

Noel Grandin noel at peralex.com
Mon Aug 29 07:29:58 UTC 2016


 basegfx/source/matrix/b2dhommatrix.cxx             |   11 ++++++
 basegfx/source/polygon/b2dpolygon.cxx              |   10 ++++++
 basegfx/source/polygon/b2dpolypolygon.cxx          |   11 ++++++
 comphelper/source/misc/namedvaluecollection.cxx    |    9 +++++
 include/basegfx/matrix/b2dhommatrix.hxx            |    2 +
 include/basegfx/polygon/b2dpolygon.hxx             |    2 +
 include/basegfx/polygon/b2dpolypolygon.hxx         |    2 +
 include/comphelper/namedvaluecollection.hxx        |    2 +
 include/sfx2/objsh.hxx                             |   34 ++++++++++++++-------
 include/store/store.hxx                            |   19 +++++++++++
 include/svl/sharedstring.hxx                       |    2 +
 include/svx/dataaccessdescriptor.hxx               |    2 +
 include/svx/sdr/attribute/sdrformtextattribute.hxx |    2 +
 include/svx/sdr/attribute/sdrtextattribute.hxx     |    2 +
 include/svx/xpoly.hxx                              |    4 ++
 include/tools/fract.hxx                            |    2 +
 include/tools/globname.hxx                         |    5 +++
 include/tools/ref.hxx                              |   10 ++++++
 include/tools/weakbase.h                           |    8 ++++
 include/tools/weakbase.hxx                         |   14 ++++++++
 include/ucbhelper/content.hxx                      |   10 ++++++
 include/vcl/font.hxx                               |    2 +
 include/vcl/gradient.hxx                           |    2 +
 include/vcl/image.hxx                              |   12 ++++---
 include/vcl/lineinfo.hxx                           |    2 +
 include/vcl/wall.hxx                               |    2 +
 svl/source/misc/sharedstring.cxx                   |   22 +++++++++++++
 svx/source/form/dataaccessdescriptor.cxx           |   11 ++++++
 svx/source/sdr/attribute/sdrformtextattribute.cxx  |   11 ++++++
 svx/source/sdr/attribute/sdrtextattribute.cxx      |   11 ++++++
 svx/source/xoutdev/_xpoly.cxx                      |   22 +++++++++++++
 tools/source/generic/fract.cxx                     |   10 ++++++
 tools/source/ref/globname.cxx                      |    6 +++
 ucbhelper/source/client/content.cxx                |    9 +++++
 vcl/source/font/font.cxx                           |   10 ++++++
 vcl/source/gdi/gradient.cxx                        |   11 ++++++
 vcl/source/gdi/lineinfo.cxx                        |   10 ++++++
 vcl/source/gdi/wall.cxx                            |   11 ++++++
 vcl/source/image/ImageList.cxx                     |   17 ++++++++++
 39 files changed, 328 insertions(+), 16 deletions(-)

New commits:
commit 7577ce1b1dc34f0b4a3264938cc5fe5e71670291
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 15:38:52 2016 +0200

    cid#1371168 Missing move assignment operator
    
    Change-Id: I986b94df4aa8158f3e0623ab6cb392c178a820ce

diff --git a/include/vcl/font.hxx b/include/vcl/font.hxx
index 5c24f8a..9e0a637 100644
--- a/include/vcl/font.hxx
+++ b/include/vcl/font.hxx
@@ -47,6 +47,7 @@ class VCL_DLLPUBLIC Font
 public:
     explicit            Font();
                         Font( const Font& ); // TODO make me explicit
+                        Font( Font&& );
     explicit            Font( const OUString& rFamilyName, const Size& );
     explicit            Font( const OUString& rFamilyName, const OUString& rStyleName, const Size& );
     explicit            Font( FontFamily eFamily, const Size& );
@@ -159,6 +160,7 @@ public:
     void                GetFontAttributes( FontAttributes& rAttrs ) const;
 
     Font&               operator=( const Font& );
+    Font&               operator=( Font&& );
     bool                operator==( const Font& ) const;
     bool                operator!=( const Font& rFont ) const
                             { return !(Font::operator==( rFont )); }
diff --git a/vcl/source/font/font.cxx b/vcl/source/font/font.cxx
index e6b2682..c608faf 100644
--- a/vcl/source/font/font.cxx
+++ b/vcl/source/font/font.cxx
@@ -52,6 +52,10 @@ Font::Font( const vcl::Font& rFont ) : mpImplFont( rFont.mpImplFont )
 {
 }
 
+Font::Font( vcl::Font&& rFont ) : mpImplFont( std::move(rFont.mpImplFont) )
+{
+}
+
 Font::Font( const OUString& rFamilyName, const Size& rSize ) : mpImplFont()
 {
     mpImplFont->SetFamilyName( rFamilyName );
@@ -282,6 +286,12 @@ Font& Font::operator=( const vcl::Font& rFont )
     return *this;
 }
 
+Font& Font::operator=( vcl::Font&& rFont )
+{
+    mpImplFont = std::move(rFont.mpImplFont);
+    return *this;
+}
+
 bool Font::operator==( const vcl::Font& rFont ) const
 {
     return mpImplFont == rFont.mpImplFont;
commit ae23dca9847e7f456d39ae8e71b433531eba1eb3
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 15:33:59 2016 +0200

    cid#1371235 Missing move assignment operator
    
    Change-Id: If5fc8d783211a131711b5961d6b076c24dd64412

diff --git a/include/vcl/gradient.hxx b/include/vcl/gradient.hxx
index 6ebff6d..6563b51a 100644
--- a/include/vcl/gradient.hxx
+++ b/include/vcl/gradient.hxx
@@ -61,6 +61,7 @@ private:
 public:
                     Gradient();
                     Gradient( const Gradient& rGradient );
+                    Gradient( Gradient&& rGradient );
                     Gradient( GradientStyle eStyle,
                               const Color& rStartColor,
                               const Color& rEndColor );
@@ -95,6 +96,7 @@ public:
     void            GetBoundRect( const Rectangle& rRect, Rectangle &rBoundRect, Point& rCenter ) const;
 
     Gradient&       operator=( const Gradient& rGradient );
+    Gradient&       operator=( Gradient&& rGradient );
     bool            operator==( const Gradient& rGradient ) const;
     bool            operator!=( const Gradient& rGradient ) const
                         { return !(Gradient::operator==( rGradient )); }
diff --git a/vcl/source/gdi/gradient.cxx b/vcl/source/gdi/gradient.cxx
index 878b6d9..2c7170e 100644
--- a/vcl/source/gdi/gradient.cxx
+++ b/vcl/source/gdi/gradient.cxx
@@ -77,6 +77,11 @@ Gradient::Gradient( const Gradient& rGradient ) :
 {
 }
 
+Gradient::Gradient( Gradient&& rGradient ) :
+    mpImplGradient( std::move(rGradient.mpImplGradient) )
+{
+}
+
 Gradient::Gradient( GradientStyle eStyle,
                     const Color& rStartColor, const Color& rEndColor ) :
     mpImplGradient()
@@ -225,6 +230,12 @@ Gradient& Gradient::operator=( const Gradient& rGradient )
     return *this;
 }
 
+Gradient& Gradient::operator=( Gradient&& rGradient )
+{
+    mpImplGradient = std::move(rGradient.mpImplGradient);
+    return *this;
+}
+
 bool Gradient::operator==( const Gradient& rGradient ) const
 {
     return mpImplGradient == rGradient.mpImplGradient;
commit 529cfa4a16c79600f6ac09811d027134055a8c0c
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 15:30:49 2016 +0200

    cid#1371170 Missing move assignment operator
    
    Change-Id: Iaf02d5bd3090190b6b9ad15a884d3f0444983297

diff --git a/include/vcl/image.hxx b/include/vcl/image.hxx
index 697dacc..910bb02 100644
--- a/include/vcl/image.hxx
+++ b/include/vcl/image.hxx
@@ -82,6 +82,7 @@ public:
                     ImageList( const std::vector<OUString>& rNameVector,
                                const OUString& rPrefix);
                     ImageList( const ImageList& rImageList );
+                    ImageList( ImageList&& rImageList );
                     ~ImageList();
 
     void                    InsertFromHorizontalStrip( const BitmapEx &rBitmapEx,
@@ -93,7 +94,7 @@ public:
                                     const Color *pReplaceColors = nullptr,
                                     sal_uLong        nColorCount = 0);
     BitmapEx        GetAsHorizontalStrip() const;
-    sal_uInt16          GetImageCount() const;
+    sal_uInt16      GetImageCount() const;
     Size            GetImageSize() const;
 
     void            AddImage( const OUString& rImageName, const Image& rImage );
@@ -105,16 +106,17 @@ public:
     Image           GetImage( sal_uInt16 nId ) const;
     Image           GetImage( const OUString& rImageName ) const;
 
-    sal_uInt16          GetImagePos( sal_uInt16 nId ) const;
+    sal_uInt16      GetImagePos( sal_uInt16 nId ) const;
     bool            HasImageAtPos( sal_uInt16 nId ) const;
-    sal_uInt16          GetImagePos( const OUString& rImageName ) const;
+    sal_uInt16      GetImagePos( const OUString& rImageName ) const;
 
-    sal_uInt16          GetImageId( sal_uInt16 nPos ) const;
+    sal_uInt16      GetImageId( sal_uInt16 nPos ) const;
 
-    OUString GetImageName( sal_uInt16 nPos ) const;
+    OUString        GetImageName( sal_uInt16 nPos ) const;
     void            GetImageNames( ::std::vector< OUString >& rNames ) const;
 
     ImageList&      operator=( const ImageList& rImageList );
+    ImageList&      operator=( ImageList&& rImageList );
     bool            operator==( const ImageList& rImageList ) const;
     bool            operator!=( const ImageList& rImageList ) const { return !(ImageList::operator==( rImageList )); }
 
diff --git a/vcl/source/image/ImageList.cxx b/vcl/source/image/ImageList.cxx
index 07182af..dfbf751 100644
--- a/vcl/source/image/ImageList.cxx
+++ b/vcl/source/image/ImageList.cxx
@@ -109,6 +109,12 @@ ImageList::ImageList( const ImageList& rImageList ) :
         ++mpImplData->mnRefCount;
 }
 
+ImageList::ImageList( ImageList&& rImageList ) :
+    mpImplData( rImageList.mpImplData )
+{
+    rImageList.mpImplData = nullptr;
+}
+
 ImageList::~ImageList()
 {
     if( mpImplData && ( 0 == --mpImplData->mnRefCount ) )
@@ -435,6 +441,17 @@ ImageList& ImageList::operator=( const ImageList& rImageList )
     return *this;
 }
 
+ImageList& ImageList::operator=( ImageList&& rImageList )
+{
+    if( mpImplData && ( 0 == --mpImplData->mnRefCount ) )
+        delete mpImplData;
+
+    mpImplData = rImageList.mpImplData;
+    rImageList.mpImplData = nullptr;
+
+    return *this;
+}
+
 bool ImageList::operator==( const ImageList& rImageList ) const
 {
 
commit e2c309adf59e21b187e050a5fe17df91d7d57f8f
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 15:27:26 2016 +0200

    cid#1371176 Missing move assignment operator
    
    Change-Id: I57df53df6933e1945fabc0e4a7f0e1c5815aeaca

diff --git a/include/vcl/lineinfo.hxx b/include/vcl/lineinfo.hxx
index e5d8fc9..e36c1c0 100644
--- a/include/vcl/lineinfo.hxx
+++ b/include/vcl/lineinfo.hxx
@@ -55,9 +55,11 @@ class VCL_DLLPUBLIC LineInfo
 public:
                     LineInfo( LineStyle eLineStyle = LINE_SOLID, long nWidth = 0L );
                     LineInfo( const LineInfo& rLineInfo );
+                    LineInfo( LineInfo&& rLineInfo );
                     ~LineInfo();
 
     LineInfo&       operator=( const LineInfo& rLineInfo );
+    LineInfo&       operator=( LineInfo&& rLineInfo );
     bool            operator==( const LineInfo& rLineInfo ) const;
     bool            operator!=( const LineInfo& rLineInfo ) const { return !(LineInfo::operator==( rLineInfo ) ); }
 
diff --git a/vcl/source/gdi/lineinfo.cxx b/vcl/source/gdi/lineinfo.cxx
index 2b71a28..608ce4d 100644
--- a/vcl/source/gdi/lineinfo.cxx
+++ b/vcl/source/gdi/lineinfo.cxx
@@ -77,6 +77,10 @@ LineInfo::LineInfo( const LineInfo& rLineInfo ) : mpImplLineInfo(rLineInfo.mpImp
 {
 }
 
+LineInfo::LineInfo( LineInfo&& rLineInfo ) : mpImplLineInfo(std::move(rLineInfo.mpImplLineInfo))
+{
+}
+
 LineInfo::~LineInfo()
 {
 }
@@ -87,6 +91,12 @@ LineInfo& LineInfo::operator=( const LineInfo& rLineInfo )
     return *this;
 }
 
+LineInfo& LineInfo::operator=( LineInfo&& rLineInfo )
+{
+    mpImplLineInfo = std::move(rLineInfo.mpImplLineInfo);
+    return *this;
+}
+
 bool LineInfo::operator==( const LineInfo& rLineInfo ) const
 {
     return mpImplLineInfo == rLineInfo.mpImplLineInfo;
commit c455eb45aa2ff3cfd882c928f04d679fd68f073d
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 15:23:02 2016 +0200

    cid#1371144 Missing move assignment operator
    
    Change-Id: Ice8c22324700d51b86696fc3df140bb9f84973cb

diff --git a/include/vcl/wall.hxx b/include/vcl/wall.hxx
index 282a1db..bfcd72f 100644
--- a/include/vcl/wall.hxx
+++ b/include/vcl/wall.hxx
@@ -64,6 +64,7 @@ private:
 public:
                     Wallpaper();
                     Wallpaper( const Wallpaper& rWallpaper );
+                    Wallpaper( Wallpaper&& rWallpaper );
                     Wallpaper( const Color& rColor );
                     explicit Wallpaper( const BitmapEx& rBmpEx );
                     Wallpaper( const Gradient& rGradient );
@@ -91,6 +92,7 @@ public:
     bool            IsScrollable() const;
 
     Wallpaper&      operator=( const Wallpaper& rWallpaper );
+    Wallpaper&      operator=( Wallpaper&& rWallpaper );
     bool            operator==( const Wallpaper& rWallpaper ) const;
     bool            operator!=( const Wallpaper& rWallpaper ) const
                         { return !(Wallpaper::operator==( rWallpaper )); }
diff --git a/vcl/source/gdi/wall.cxx b/vcl/source/gdi/wall.cxx
index 26b3448..8d336b2 100644
--- a/vcl/source/gdi/wall.cxx
+++ b/vcl/source/gdi/wall.cxx
@@ -178,6 +178,11 @@ Wallpaper::Wallpaper( const Wallpaper& rWallpaper )
 {
 }
 
+Wallpaper::Wallpaper( Wallpaper&& rWallpaper )
+    : mpImplWallpaper( std::move(rWallpaper.mpImplWallpaper) )
+{
+}
+
 Wallpaper::Wallpaper( const Color& rColor ) : mpImplWallpaper()
 {
     mpImplWallpaper->maColor    = rColor;
@@ -396,6 +401,12 @@ Wallpaper& Wallpaper::operator=( const Wallpaper& rWallpaper )
     return *this;
 }
 
+Wallpaper& Wallpaper::operator=( Wallpaper&& rWallpaper )
+{
+    mpImplWallpaper = std::move(rWallpaper.mpImplWallpaper);
+    return *this;
+}
+
 bool Wallpaper::operator==( const Wallpaper& rWallpaper ) const
 {
     return mpImplWallpaper == rWallpaper.mpImplWallpaper;
commit 3c127bc71d04167a731c4b58c77104e59d42dad7
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 15:16:51 2016 +0200

    cid#1371163 Missing move assignment operator
    
    Change-Id: Ie050cfae965adf7bc43c91f366904cf6876783c0

diff --git a/include/ucbhelper/content.hxx b/include/ucbhelper/content.hxx
index d407c6c..2d1eb03 100644
--- a/include/ucbhelper/content.hxx
+++ b/include/ucbhelper/content.hxx
@@ -145,6 +145,11 @@ public:
     Content( const Content& rOther );
 
     /**
+      * Move constructor.
+      */
+    Content( Content&& rOther );
+
+    /**
       * Destructor.
       */
     ~Content();
@@ -157,6 +162,11 @@ public:
     Content& operator=( const Content& rOther );
 
     /**
+      * Move assignment operator.
+      */
+    Content& operator=( Content&& rOther );
+
+    /**
       * Constructor. This method should be used, if the exception thrown
       * by the direct ctors of this class are to 'expensive' for your
       * application
diff --git a/ucbhelper/source/client/content.cxx b/ucbhelper/source/client/content.cxx
index 080e9e5..82af44c 100644
--- a/ucbhelper/source/client/content.cxx
+++ b/ucbhelper/source/client/content.cxx
@@ -337,6 +337,10 @@ Content::Content( const Content& rOther )
     m_xImpl = rOther.m_xImpl;
 }
 
+Content::Content( Content&& rOther )
+{
+    m_xImpl = std::move(rOther.m_xImpl);
+}
 
 // static
 bool Content::create( const OUString& rURL,
@@ -374,6 +378,11 @@ Content& Content::operator=( const Content& rOther )
     return *this;
 }
 
+Content& Content::operator=( Content&& rOther )
+{
+    m_xImpl = std::move(rOther.m_xImpl);
+    return *this;
+}
 
 Reference< XContent > Content::get() const
 {
commit 74fbfde33205e0af1c44fbbe47963c827c7efedc
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 15:13:34 2016 +0200

    cid#1371173 Missing move assignment operator
    
    Change-Id: Idf179403426d9714fa73d0c3370a6debc30a0431

diff --git a/include/tools/weakbase.h b/include/tools/weakbase.h
index aba255e..f8c7428 100644
--- a/include/tools/weakbase.h
+++ b/include/tools/weakbase.h
@@ -78,9 +78,12 @@ public:
     /** constructs a reference with a pointer to a class derived from WeakBase */
     inline WeakReference( reference_type* pReference );
 
-    /** constructs a reference with another reference */
+    /** constructs a reference from another reference */
     inline WeakReference( const WeakReference< reference_type >& rWeakRef );
 
+    /** constructs a reference from another reference */
+    inline WeakReference( WeakReference< reference_type >&& rWeakRef );
+
     inline ~WeakReference();
 
     /** returns true if the reference object is not null and still alive */
@@ -113,6 +116,9 @@ public:
     /** the assignment operator */
     inline WeakReference<reference_type>& operator= (const WeakReference<reference_type> & handle);
 
+    /** the move assignment operator */
+    inline WeakReference<reference_type>& operator= (WeakReference<reference_type> && handle);
+
 private:
     rtl::Reference<WeakConnection< reference_type >> mpWeakConnection;
 };
diff --git a/include/tools/weakbase.hxx b/include/tools/weakbase.hxx
index bdbcded..7b693cc 100644
--- a/include/tools/weakbase.hxx
+++ b/include/tools/weakbase.hxx
@@ -49,6 +49,12 @@ inline WeakReference< reference_type >::WeakReference( const WeakReference< refe
 }
 
 template< class reference_type >
+inline WeakReference< reference_type >::WeakReference( WeakReference< reference_type >&& rWeakRef )
+{
+    mpWeakConnection = std::move(rWeakRef.mpWeakConnection);
+}
+
+template< class reference_type >
 inline WeakReference< reference_type >::~WeakReference()
 {
 }
@@ -123,6 +129,14 @@ inline WeakReference<reference_type>& WeakReference<reference_type>::operator= (
 }
 
 template< class reference_type >
+inline WeakReference<reference_type>& WeakReference<reference_type>::operator= (
+    WeakReference<reference_type>&& rReference)
+{
+    mpWeakConnection = std::move(rReference.mpWeakConnection);
+    return *this;
+}
+
+template< class reference_type >
 inline WeakBase< reference_type >::WeakBase()
 {
 }
commit 4e07987ce8134312920682e3481c3f8e3d7b66c3
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 15:08:55 2016 +0200

    cid#1371154 Missing move assignment operator
    
    Change-Id: If434a0ee5c97018777646c96f52ddded46ce0337

diff --git a/include/tools/ref.hxx b/include/tools/ref.hxx
index f9c2c38..170e53a 100644
--- a/include/tools/ref.hxx
+++ b/include/tools/ref.hxx
@@ -78,6 +78,16 @@ public:
         return *this;
     }
 
+    SvRef & operator =(SvRef && rObj)
+    {
+        if (pObj != nullptr) {
+            pObj->ReleaseRef();
+        }
+        pObj = rObj.pObj;
+        rObj.pObj = nullptr;
+        return *this;
+    }
+
     bool Is()         const { return pObj != nullptr; }
 
     T * get()         const { return pObj; }
commit 8ae8e5d12eea6c3416674b4ce83a29fa3e6f99b4
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 15:04:15 2016 +0200

    cid#1371171 Missing move assignment operator
    
    Change-Id: I3150428f130823cdb1584e30c54f5591896214cf

diff --git a/include/tools/globname.hxx b/include/tools/globname.hxx
index 42928a8..76bcef1 100644
--- a/include/tools/globname.hxx
+++ b/include/tools/globname.hxx
@@ -62,6 +62,10 @@ public:
         pImp( rObj.pImp )
     {
     }
+    SvGlobalName( SvGlobalName && rObj ) :
+        pImp( std::move(rObj.pImp) )
+    {
+    }
 
     SvGlobalName( sal_uInt32 n1, sal_uInt16 n2, sal_uInt16 n3,
                   sal_uInt8 b8, sal_uInt8 b9, sal_uInt8 b10, sal_uInt8 b11,
@@ -73,6 +77,7 @@ public:
     SvGlobalName( const SvGUID & rId );
 
     SvGlobalName & operator = ( const SvGlobalName & rObj );
+    SvGlobalName & operator = ( SvGlobalName && rObj );
     ~SvGlobalName();
 
     TOOLS_DLLPUBLIC friend SvStream & operator >> ( SvStream &, SvGlobalName & );
diff --git a/tools/source/ref/globname.cxx b/tools/source/ref/globname.cxx
index f92a9f2..67bbf7e 100644
--- a/tools/source/ref/globname.cxx
+++ b/tools/source/ref/globname.cxx
@@ -106,6 +106,12 @@ SvGlobalName & SvGlobalName::operator = ( const SvGlobalName & rObj )
     return *this;
 }
 
+SvGlobalName & SvGlobalName::operator = ( SvGlobalName && rObj )
+{
+    pImp = std::move(rObj.pImp);
+    return *this;
+}
+
 SvStream& WriteSvGlobalName( SvStream& rOStr, const SvGlobalName & rObj )
 {
     rOStr.WriteUInt32( rObj.pImp->szData.Data1 );
commit 0157009f2293a255e2de682832ef9074924dd4b5
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 15:02:47 2016 +0200

    cid#1371160 Missing move assignment operator
    
    Change-Id: Ifcddd08cd1ec6bfb7679ee0433524c4bd68803dd

diff --git a/include/tools/fract.hxx b/include/tools/fract.hxx
index 65110d2..35790a9 100644
--- a/include/tools/fract.hxx
+++ b/include/tools/fract.hxx
@@ -38,6 +38,7 @@ class SAL_WARN_UNUSED TOOLS_DLLPUBLIC Fraction
 public:
                     Fraction();
                     Fraction( const Fraction & rFrac );
+                    Fraction( Fraction && rFrac );
                     Fraction( long nNum, long nDen=1 );
                     Fraction( double dVal );
                     ~Fraction();
@@ -51,6 +52,7 @@ public:
     operator        double() const;
 
     Fraction&       operator=( const Fraction& rfrFrac );
+    Fraction&       operator=( Fraction&& rfrFrac );
 
     Fraction&       operator+=( const Fraction& rfrFrac );
     Fraction&       operator-=( const Fraction& rfrFrac );
diff --git a/tools/source/generic/fract.cxx b/tools/source/generic/fract.cxx
index 2a7ad54..c79b24b 100644
--- a/tools/source/generic/fract.cxx
+++ b/tools/source/generic/fract.cxx
@@ -62,6 +62,10 @@ Fraction::Fraction( const Fraction& rFrac ) : mpImpl(new Impl)
         mpImpl->value.assign( rFrac.mpImpl->value.numerator(), rFrac.mpImpl->value.denominator() );
 }
 
+Fraction::Fraction( Fraction&& rFrac ) : mpImpl(std::move(rFrac.mpImpl))
+{
+}
+
 // Initialized by setting nNum as nominator and nDen as denominator
 // Negative values in the denominator are invalid and cause the
 // inversion of both nominator and denominator signs
@@ -271,6 +275,12 @@ Fraction& Fraction::operator=( const Fraction& rFrac )
     return *this;
 }
 
+Fraction& Fraction::operator=( Fraction&& rFrac )
+{
+    mpImpl = std::move(rFrac.mpImpl);
+    return *this;
+}
+
 bool Fraction::IsValid() const
 {
     return mpImpl->valid;
commit 05eed2888c8e33257137536453a84f4c458dd249
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 14:58:59 2016 +0200

    cid#1371253 Missing move assignment operator
    
    Change-Id: Ic95894569380927da5dbd9aba4844f17bbbf25f6

diff --git a/include/svx/xpoly.hxx b/include/svx/xpoly.hxx
index dc607df..07e2f5b 100644
--- a/include/svx/xpoly.hxx
+++ b/include/svx/xpoly.hxx
@@ -126,6 +126,7 @@ protected:
 public:
                     XPolyPolygon();
                     XPolyPolygon( const XPolyPolygon& rXPolyPoly );
+                    XPolyPolygon( XPolyPolygon&& rXPolyPoly );
 
                     ~XPolyPolygon();
 
@@ -144,6 +145,7 @@ public:
     XPolygon&       operator[]( sal_uInt16 nPos );
 
     XPolyPolygon&   operator=( const XPolyPolygon& rXPolyPoly );
+    XPolyPolygon&   operator=( XPolyPolygon&& rXPolyPoly );
 
     // transformations
     void Distort(const Rectangle& rRefRect, const XPolygon& rDistortedRect);
diff --git a/svx/source/xoutdev/_xpoly.cxx b/svx/source/xoutdev/_xpoly.cxx
index cf78c7b..d2410a4 100644
--- a/svx/source/xoutdev/_xpoly.cxx
+++ b/svx/source/xoutdev/_xpoly.cxx
@@ -885,6 +885,11 @@ XPolyPolygon::XPolyPolygon( const XPolyPolygon& rXPolyPoly )
 {
 }
 
+XPolyPolygon::XPolyPolygon( XPolyPolygon&& rXPolyPoly )
+    : pImpXPolyPolygon( std::move(rXPolyPoly.pImpXPolyPolygon) )
+{
+}
+
 XPolyPolygon::XPolyPolygon(const basegfx::B2DPolyPolygon& rPolyPolygon)
     : pImpXPolyPolygon()
 {
@@ -970,6 +975,12 @@ XPolyPolygon& XPolyPolygon::operator=( const XPolyPolygon& rXPolyPoly )
     return *this;
 }
 
+XPolyPolygon& XPolyPolygon::operator=( XPolyPolygon&& rXPolyPoly )
+{
+    pImpXPolyPolygon = std::move(rXPolyPoly.pImpXPolyPolygon);
+    return *this;
+}
+
 /**
  * Distort a polygon by scaling its coordinates relative to a reference
  * rectangle into an arbitrary rectangle.
commit e0ecd9b536ea60038795be31386f5d2785cb4d4e
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 14:55:06 2016 +0200

    cid#1371241 Missing move assignment operator
    
    Change-Id: Ic914ac2ed5fb48cf340f2e54d074ee64e202225e

diff --git a/include/svx/xpoly.hxx b/include/svx/xpoly.hxx
index 2a5cba5..dc607df 100644
--- a/include/svx/xpoly.hxx
+++ b/include/svx/xpoly.hxx
@@ -63,6 +63,7 @@ protected:
 public:
     XPolygon( sal_uInt16 nSize=16, sal_uInt16 nResize=16 );
     XPolygon( const XPolygon& rXPoly );
+    XPolygon( XPolygon&& rXPoly );
     XPolygon( const tools::Polygon& rPoly );
     XPolygon( const Rectangle& rRect, long nRx = 0, long nRy = 0 );
     XPolygon( const Point& rCenter, long nRx, long nRy,
@@ -85,6 +86,7 @@ public:
     const Point&    operator[]( sal_uInt16 nPos ) const;
           Point&    operator[]( sal_uInt16 nPos );
     XPolygon&       operator=( const XPolygon& rXPoly );
+    XPolygon&       operator=( XPolygon&& rXPoly );
     bool            operator==( const XPolygon& rXPoly ) const;
 
     XPolyFlags  GetFlags( sal_uInt16 nPos ) const;
diff --git a/svx/source/xoutdev/_xpoly.cxx b/svx/source/xoutdev/_xpoly.cxx
index a51233d..cf78c7b 100644
--- a/svx/source/xoutdev/_xpoly.cxx
+++ b/svx/source/xoutdev/_xpoly.cxx
@@ -212,6 +212,11 @@ XPolygon::XPolygon( const XPolygon& rXPoly )
 {
 }
 
+XPolygon::XPolygon( XPolygon&& rXPoly )
+    : pImpXPolygon(std::move(rXPoly.pImpXPolygon))
+{
+}
+
 /// create a XPolygon out of a standard polygon
 XPolygon::XPolygon( const tools::Polygon& rPoly )
     : pImpXPolygon( rPoly.GetSize() )
@@ -453,6 +458,12 @@ XPolygon& XPolygon::operator=( const XPolygon& rXPoly )
     return *this;
 }
 
+XPolygon& XPolygon::operator=( XPolygon&& rXPoly )
+{
+    pImpXPolygon = std::move(rXPoly.pImpXPolygon);
+    return *this;
+}
+
 bool XPolygon::operator==( const XPolygon& rXPoly ) const
 {
     pImpXPolygon->CheckPointDelete();
commit ab0eecc0be4671c984dedf5a4941febcd5dec589
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 14:52:33 2016 +0200

    cid#1371256 Missing move assignment operator
    
    Change-Id: Idf50c8f56e1d409fbd1306ee0fec20360bf99c86

diff --git a/include/svx/sdr/attribute/sdrtextattribute.hxx b/include/svx/sdr/attribute/sdrtextattribute.hxx
index efcb952..8aaaaf0 100644
--- a/include/svx/sdr/attribute/sdrtextattribute.hxx
+++ b/include/svx/sdr/attribute/sdrtextattribute.hxx
@@ -80,7 +80,9 @@ namespace drawinglayer
 
             SdrTextAttribute();
             SdrTextAttribute(const SdrTextAttribute& rCandidate);
+            SdrTextAttribute(SdrTextAttribute&& rCandidate);
             SdrTextAttribute& operator=(const SdrTextAttribute& rCandidate);
+            SdrTextAttribute& operator=(SdrTextAttribute&& rCandidate);
             ~SdrTextAttribute();
 
             // checks if the incarnation is default constructed
diff --git a/svx/source/sdr/attribute/sdrtextattribute.cxx b/svx/source/sdr/attribute/sdrtextattribute.cxx
index 76f4751..7b9c5da 100644
--- a/svx/source/sdr/attribute/sdrtextattribute.cxx
+++ b/svx/source/sdr/attribute/sdrtextattribute.cxx
@@ -282,6 +282,11 @@ namespace drawinglayer
         {
         }
 
+        SdrTextAttribute::SdrTextAttribute(SdrTextAttribute&& rCandidate)
+        :   mpSdrTextAttribute(std::move(rCandidate.mpSdrTextAttribute))
+        {
+        }
+
         SdrTextAttribute::~SdrTextAttribute()
         {
         }
@@ -297,6 +302,12 @@ namespace drawinglayer
             return *this;
         }
 
+        SdrTextAttribute& SdrTextAttribute::operator=(SdrTextAttribute&& rCandidate)
+        {
+            mpSdrTextAttribute = std::move(rCandidate.mpSdrTextAttribute);
+            return *this;
+        }
+
         bool SdrTextAttribute::operator==(const SdrTextAttribute& rCandidate) const
         {
             // tdf#87509 default attr is always != non-default attr, even with same values
commit 68697779cbe7fe3268e9cdb553688228c1efb97b
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 14:50:47 2016 +0200

    cid#1371188 Missing move assignment operator
    
    Change-Id: I775db6b3c9db0847184f12fad778a1fc3fcd92eb

diff --git a/include/svx/sdr/attribute/sdrformtextattribute.hxx b/include/svx/sdr/attribute/sdrformtextattribute.hxx
index 20150dc..b5e49bc 100644
--- a/include/svx/sdr/attribute/sdrformtextattribute.hxx
+++ b/include/svx/sdr/attribute/sdrformtextattribute.hxx
@@ -52,7 +52,9 @@ namespace drawinglayer
             SdrFormTextAttribute(const SfxItemSet& rSet);
             SdrFormTextAttribute();
             SdrFormTextAttribute(const SdrFormTextAttribute& rCandidate);
+            SdrFormTextAttribute(SdrFormTextAttribute&& rCandidate);
             SdrFormTextAttribute& operator=(const SdrFormTextAttribute& rCandidate);
+            SdrFormTextAttribute& operator=(SdrFormTextAttribute&& rCandidate);
             ~SdrFormTextAttribute();
 
             // checks if the incarnation is default constructed
diff --git a/svx/source/sdr/attribute/sdrformtextattribute.cxx b/svx/source/sdr/attribute/sdrformtextattribute.cxx
index b960efe..2f245f1 100644
--- a/svx/source/sdr/attribute/sdrformtextattribute.cxx
+++ b/svx/source/sdr/attribute/sdrformtextattribute.cxx
@@ -279,6 +279,11 @@ namespace drawinglayer
         {
         }
 
+        SdrFormTextAttribute::SdrFormTextAttribute(SdrFormTextAttribute&& rCandidate)
+        :   mpSdrFormTextAttribute(std::move(rCandidate.mpSdrFormTextAttribute))
+        {
+        }
+
         SdrFormTextAttribute::~SdrFormTextAttribute()
         {
         }
@@ -294,6 +299,12 @@ namespace drawinglayer
             return *this;
         }
 
+        SdrFormTextAttribute& SdrFormTextAttribute::operator=(SdrFormTextAttribute&& rCandidate)
+        {
+            mpSdrFormTextAttribute = std::move(rCandidate.mpSdrFormTextAttribute);
+            return *this;
+        }
+
         bool SdrFormTextAttribute::operator==(const SdrFormTextAttribute& rCandidate) const
         {
             // tdf#87509 default attr is always != non-default attr, even with same values
commit 8898f0e128d10b135a7388ec113b35949f326811
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 14:48:25 2016 +0200

    cid#1371206 Missing move assignment operator
    
    Change-Id: Ide97adea0bc0611dac676df923796d031d6752e5

diff --git a/include/svx/dataaccessdescriptor.hxx b/include/svx/dataaccessdescriptor.hxx
index 802e58c..9449d8f 100644
--- a/include/svx/dataaccessdescriptor.hxx
+++ b/include/svx/dataaccessdescriptor.hxx
@@ -64,6 +64,7 @@ namespace svx
     public:
         ODataAccessDescriptor();
         ODataAccessDescriptor( const ODataAccessDescriptor& _rSource );
+        ODataAccessDescriptor( ODataAccessDescriptor&& _rSource );
         ODataAccessDescriptor( const css::uno::Reference< css::beans::XPropertySet >& _rValues );
         ODataAccessDescriptor( const css::uno::Sequence< css::beans::PropertyValue >& _rValues );
 
@@ -71,6 +72,7 @@ namespace svx
         ODataAccessDescriptor( const css::uno::Any& _rValues );
 
         ODataAccessDescriptor& operator=(const ODataAccessDescriptor& _rSource);
+        ODataAccessDescriptor& operator=(ODataAccessDescriptor&& _rSource);
 
         ~ODataAccessDescriptor();
 
diff --git a/svx/source/form/dataaccessdescriptor.cxx b/svx/source/form/dataaccessdescriptor.cxx
index 3e6a613..3004f30 100644
--- a/svx/source/form/dataaccessdescriptor.cxx
+++ b/svx/source/form/dataaccessdescriptor.cxx
@@ -270,12 +270,23 @@ namespace svx
     {
     }
 
+    ODataAccessDescriptor::ODataAccessDescriptor( ODataAccessDescriptor&& _rSource )
+        :m_pImpl(std::move(_rSource.m_pImpl))
+    {
+    }
+
     ODataAccessDescriptor& ODataAccessDescriptor::operator=(const ODataAccessDescriptor& _rSource)
     {
         m_pImpl.reset(new ODADescriptorImpl(*_rSource.m_pImpl));
         return *this;
     }
 
+    ODataAccessDescriptor& ODataAccessDescriptor::operator=(ODataAccessDescriptor&& _rSource)
+    {
+        m_pImpl = std::move(_rSource.m_pImpl);
+        return *this;
+    }
+
     ODataAccessDescriptor::ODataAccessDescriptor( const Reference< XPropertySet >& _rValues )
         :m_pImpl(new ODADescriptorImpl)
     {
commit 2b8c88b475455d2f4e66f8a632d96f42d1e223ca
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 14:44:08 2016 +0200

    cid#1371226 Missing move assignment operator
    
    Change-Id: I915b24d8f546f156b85ad18ad0418903fa3ce1ba

diff --git a/include/svl/sharedstring.hxx b/include/svl/sharedstring.hxx
index 1693c63..5e757f7 100644
--- a/include/svl/sharedstring.hxx
+++ b/include/svl/sharedstring.hxx
@@ -27,9 +27,11 @@ public:
     SharedString( rtl_uString* pData, rtl_uString* pDataIgnoreCase );
     explicit SharedString( const OUString& rStr );
     SharedString( const SharedString& r );
+    SharedString( SharedString&& r );
     ~SharedString();
 
     SharedString& operator= ( const SharedString& r );
+    SharedString& operator= ( SharedString&& r );
 
     bool operator== ( const SharedString& r ) const;
     bool operator!= ( const SharedString& r ) const;
diff --git a/svl/source/misc/sharedstring.cxx b/svl/source/misc/sharedstring.cxx
index b81f8fc..9235783 100644
--- a/svl/source/misc/sharedstring.cxx
+++ b/svl/source/misc/sharedstring.cxx
@@ -44,6 +44,12 @@ SharedString::SharedString( const SharedString& r ) : mpData(r.mpData), mpDataIg
         rtl_uString_acquire(mpDataIgnoreCase);
 }
 
+SharedString::SharedString( SharedString&& r ) : mpData(r.mpData), mpDataIgnoreCase(r.mpDataIgnoreCase)
+{
+    r.mpData = nullptr;
+    r.mpDataIgnoreCase = nullptr;
+}
+
 SharedString::~SharedString()
 {
     if (mpData)
@@ -70,6 +76,22 @@ SharedString& SharedString::operator= ( const SharedString& r )
     return *this;
 }
 
+SharedString& SharedString::operator= ( SharedString&& r )
+{
+    if (mpData)
+        rtl_uString_release(mpData);
+    if (mpDataIgnoreCase)
+        rtl_uString_release(mpDataIgnoreCase);
+
+    mpData = r.mpData;
+    mpDataIgnoreCase = r.mpDataIgnoreCase;
+
+    r.mpData = nullptr;
+    r.mpDataIgnoreCase = nullptr;
+
+    return *this;
+}
+
 bool SharedString::operator== ( const SharedString& r ) const
 {
     // Only compare case sensitive strings.
commit 6380dde50f2f7c2e93c3ef3a1c88254cd3760d7f
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 14:40:21 2016 +0200

    cid#1371209 Missing move assignment operator
    
    Change-Id: Ib383d2a12ac13a78f4ecf6817379ebbe0dc83194

diff --git a/include/store/store.hxx b/include/store/store.hxx
index 1aa19b5..672b219 100644
--- a/include/store/store.hxx
+++ b/include/store/store.hxx
@@ -156,6 +156,14 @@ public:
             (void) store_acquireHandle (m_hImpl);
     }
 
+    /** Move construction.
+     */
+    inline OStoreDirectory (OStoreDirectory && rhs)
+        : m_hImpl (rhs.m_hImpl)
+    {
+        rhs.m_hImpl = nullptr;
+    }
+
     /** Assignment.
      */
     inline OStoreDirectory & operator= (OStoreDirectory const & rhs)
@@ -168,6 +176,17 @@ public:
         return *this;
     }
 
+    /** Move assignment.
+     */
+    inline OStoreDirectory & operator= (OStoreDirectory && rhs)
+    {
+        if (m_hImpl)
+            (void) store_releaseHandle (m_hImpl);
+        m_hImpl = rhs.m_hImpl;
+        rhs.m_hImpl = nullptr;
+        return *this;
+    }
+
     /** Open the directory.
         @see store_openDirectory()
      */
commit 82ca8bf77c7ea4ea9f5604235cbab012532e4494
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 14:33:32 2016 +0200

    make the SfxObjectShellLock inline code a little more readable
    
    Change-Id: Ia312f3bf588c7987ee6956ab2675e73b7d9db6a4

diff --git a/include/sfx2/objsh.hxx b/include/sfx2/objsh.hxx
index 5a145df..e969772 100644
--- a/include/sfx2/objsh.hxx
+++ b/include/sfx2/objsh.hxx
@@ -760,16 +760,24 @@ public:
     inline               ~SfxObjectShellLock();
     inline SfxObjectShellLock & operator = ( const SfxObjectShellLock & rObj );
     inline SfxObjectShellLock & operator = ( SfxObjectShell * pObj );
-    inline bool        Is() const { return pObj != nullptr; }
+    inline bool                 Is() const { return pObj != nullptr; }
     inline SfxObjectShell *     operator &  () const { return pObj; }
     inline SfxObjectShell *     operator -> () const { return pObj; }
     inline SfxObjectShell &     operator *  () const { return *pObj; }
     inline operator SfxObjectShell * () const { return pObj; }
 };
 inline SfxObjectShellLock::SfxObjectShellLock( const SfxObjectShellLock & rObj )
-    { pObj = rObj.pObj; if( pObj ) { pObj->OwnerLock( true ); } }
+{
+    pObj = rObj.pObj;
+    if( pObj )
+        pObj->OwnerLock( true );
+}
 inline SfxObjectShellLock::SfxObjectShellLock( SfxObjectShell * pObjP )
-{ pObj = pObjP; if( pObj ) { pObj->OwnerLock( true ); } }
+{
+    pObj = pObjP;
+    if( pObj )
+        pObj->OwnerLock( true );
+}
 inline void SfxObjectShellLock::Clear()
 {
     if( pObj )
@@ -780,18 +788,24 @@ inline void SfxObjectShellLock::Clear()
     }
 }
 inline SfxObjectShellLock::~SfxObjectShellLock()
-{ if( pObj ) { pObj->OwnerLock( false ); } }
-inline SfxObjectShellLock & SfxObjectShellLock::
-            operator = ( const SfxObjectShellLock & rObj )
 {
-    if( rObj.pObj ) rObj.pObj->OwnerLock( true );
+    if( pObj )
+        pObj->OwnerLock( false );
+}
+inline SfxObjectShellLock & SfxObjectShellLock::operator=( const SfxObjectShellLock & rObj )
+{
+    if( rObj.pObj )
+        rObj.pObj->OwnerLock( true );
     SfxObjectShell* const pRefObj = pObj;
     pObj = rObj.pObj;
-    if( pRefObj ) { pRefObj->OwnerLock( false ); }
+    if( pRefObj )
+        pRefObj->OwnerLock( false );
     return *this;
 }
-inline SfxObjectShellLock & SfxObjectShellLock::operator = ( SfxObjectShell * pObjP )
-{ return *this = SfxObjectShellLock( pObjP ); }
+inline SfxObjectShellLock & SfxObjectShellLock::operator=( SfxObjectShell * pObjP )
+{
+    return *this = SfxObjectShellLock( pObjP );
+}
 
 class SFX2_DLLPUBLIC SfxObjectShellItem: public SfxPoolItem
 {
commit 83c0f29341a80cc71aac30293543e4ab66ae34e5
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 14:20:39 2016 +0200

    cid#1371187 Missing move assignment operator
    
    Change-Id: Ib0b51a029adcb0b703aa975b6c5fc02a8b21ed63

diff --git a/comphelper/source/misc/namedvaluecollection.cxx b/comphelper/source/misc/namedvaluecollection.cxx
index 9f14078..53af3a7 100644
--- a/comphelper/source/misc/namedvaluecollection.cxx
+++ b/comphelper/source/misc/namedvaluecollection.cxx
@@ -65,6 +65,10 @@ namespace comphelper
         *this = _rCopySource;
     }
 
+    NamedValueCollection::NamedValueCollection( NamedValueCollection&& _rCopySource )
+        :m_pImpl( std::move(_rCopySource.m_pImpl) )
+    {
+    }
 
     NamedValueCollection& NamedValueCollection::operator=( const NamedValueCollection& i_rCopySource )
     {
@@ -72,6 +76,11 @@ namespace comphelper
         return *this;
     }
 
+    NamedValueCollection& NamedValueCollection::operator=( NamedValueCollection&& i_rCopySource )
+    {
+        m_pImpl = std::move(i_rCopySource.m_pImpl);
+        return *this;
+    }
 
     NamedValueCollection::NamedValueCollection( const Any& _rElements )
         :m_pImpl( new NamedValueCollection_Impl )
diff --git a/include/comphelper/namedvaluecollection.hxx b/include/comphelper/namedvaluecollection.hxx
index b7e6481..420994b 100644
--- a/include/comphelper/namedvaluecollection.hxx
+++ b/include/comphelper/namedvaluecollection.hxx
@@ -50,8 +50,10 @@ namespace comphelper
         NamedValueCollection();
 
         NamedValueCollection( const NamedValueCollection& _rCopySource );
+        NamedValueCollection( NamedValueCollection&& _rCopySource );
 
         NamedValueCollection& operator=( const NamedValueCollection& i_rCopySource );
+        NamedValueCollection& operator=( NamedValueCollection&& i_rCopySource );
 
         /** constructs a collection
             @param  _rElements
commit 45d4b2945cbea49efd5c3d725f3e067bfbd229ba
Author: Noel Grandin <noel at peralex.com>
Date:   Thu Aug 25 14:02:10 2016 +0200

    cid#1371223 Missing move assignment operator
    
    and cid#1371216, cid#1371179
    
    Change-Id: I64faaada85cc92a8b47c2a665488f07050be6fc3

diff --git a/basegfx/source/matrix/b2dhommatrix.cxx b/basegfx/source/matrix/b2dhommatrix.cxx
index 07d10e6..2dce96f 100644
--- a/basegfx/source/matrix/b2dhommatrix.cxx
+++ b/basegfx/source/matrix/b2dhommatrix.cxx
@@ -45,6 +45,11 @@ namespace basegfx
     {
     }
 
+    B2DHomMatrix::B2DHomMatrix(B2DHomMatrix&& rMat) :
+        mpImpl(std::move(rMat.mpImpl))
+    {
+    }
+
     B2DHomMatrix::~B2DHomMatrix()
     {
     }
@@ -66,6 +71,12 @@ namespace basegfx
         return *this;
     }
 
+    B2DHomMatrix& B2DHomMatrix::operator=(B2DHomMatrix&& rMat)
+    {
+        mpImpl = std::move(rMat.mpImpl);
+        return *this;
+    }
+
     double B2DHomMatrix::get(sal_uInt16 nRow, sal_uInt16 nColumn) const
     {
         return mpImpl->get(nRow, nColumn);
diff --git a/basegfx/source/polygon/b2dpolygon.cxx b/basegfx/source/polygon/b2dpolygon.cxx
index 4274e62..2cf40a1 100644
--- a/basegfx/source/polygon/b2dpolygon.cxx
+++ b/basegfx/source/polygon/b2dpolygon.cxx
@@ -1118,6 +1118,10 @@ namespace basegfx
     :   mpPolygon(rPolygon.mpPolygon)
     {}
 
+    B2DPolygon::B2DPolygon(B2DPolygon&& rPolygon)
+    :   mpPolygon(std::move(rPolygon.mpPolygon))
+    {}
+
     B2DPolygon::B2DPolygon(const B2DPolygon& rPolygon, sal_uInt32 nIndex, sal_uInt32 nCount)
     :   mpPolygon(ImplB2DPolygon(*rPolygon.mpPolygon, nIndex, nCount))
     {
@@ -1136,6 +1140,12 @@ namespace basegfx
         return *this;
     }
 
+    B2DPolygon& B2DPolygon::operator=(B2DPolygon&& rPolygon)
+    {
+        mpPolygon = std::move(rPolygon.mpPolygon);
+        return *this;
+    }
+
     void B2DPolygon::makeUnique()
     {
         mpPolygon.make_unique();
diff --git a/basegfx/source/polygon/b2dpolypolygon.cxx b/basegfx/source/polygon/b2dpolypolygon.cxx
index bfaaede..f1032f1 100644
--- a/basegfx/source/polygon/b2dpolypolygon.cxx
+++ b/basegfx/source/polygon/b2dpolypolygon.cxx
@@ -183,6 +183,11 @@ namespace basegfx
     {
     }
 
+    B2DPolyPolygon::B2DPolyPolygon(B2DPolyPolygon&& rPolyPolygon) :
+        mpPolyPolygon(std::move(rPolyPolygon.mpPolyPolygon))
+    {
+    }
+
     B2DPolyPolygon::B2DPolyPolygon(const B2DPolygon& rPolygon) :
         mpPolyPolygon( ImplB2DPolyPolygon(rPolygon) )
     {
@@ -198,6 +203,12 @@ namespace basegfx
         return *this;
     }
 
+    B2DPolyPolygon& B2DPolyPolygon::operator=(B2DPolyPolygon&& rPolyPolygon)
+    {
+        mpPolyPolygon = std::move(rPolyPolygon.mpPolyPolygon);
+        return *this;
+    }
+
     void B2DPolyPolygon::makeUnique()
     {
         mpPolyPolygon.make_unique();
diff --git a/include/basegfx/matrix/b2dhommatrix.hxx b/include/basegfx/matrix/b2dhommatrix.hxx
index a3e6fcd..51479aa 100644
--- a/include/basegfx/matrix/b2dhommatrix.hxx
+++ b/include/basegfx/matrix/b2dhommatrix.hxx
@@ -40,6 +40,7 @@ namespace basegfx
     public:
         B2DHomMatrix();
         B2DHomMatrix(const B2DHomMatrix& rMat);
+        B2DHomMatrix(B2DHomMatrix&& rMat);
         ~B2DHomMatrix();
 
         /** constructor to allow setting all needed values for a 3x2 matrix at once. The
@@ -90,6 +91,7 @@ namespace basegfx
 
         // assignment operator
         B2DHomMatrix& operator=(const B2DHomMatrix& rMat);
+        B2DHomMatrix& operator=(B2DHomMatrix&& rMat);
 
         // Help routine to decompose given homogen 3x3 matrix to components. A correction of
         // the components is done to avoid inaccuracies.
diff --git a/include/basegfx/polygon/b2dpolygon.hxx b/include/basegfx/polygon/b2dpolygon.hxx
index 7bdf771..4e868c1 100644
--- a/include/basegfx/polygon/b2dpolygon.hxx
+++ b/include/basegfx/polygon/b2dpolygon.hxx
@@ -54,6 +54,7 @@ namespace basegfx
         /// diverse constructors
         B2DPolygon();
         B2DPolygon(const B2DPolygon& rPolygon);
+        B2DPolygon(B2DPolygon&& rPolygon);
         B2DPolygon(const B2DPolygon& rPolygon, sal_uInt32 nIndex, sal_uInt32 nCount);
         B2DPolygon(std::initializer_list<basegfx::B2DPoint> rPoints);
 
@@ -61,6 +62,7 @@ namespace basegfx
 
         /// assignment operator
         B2DPolygon& operator=(const B2DPolygon& rPolygon);
+        B2DPolygon& operator=(B2DPolygon&& rPolygon);
 
         /// unshare this polygon with all internally shared instances
         void makeUnique();
diff --git a/include/basegfx/polygon/b2dpolypolygon.hxx b/include/basegfx/polygon/b2dpolypolygon.hxx
index 3527c84..c033989 100644
--- a/include/basegfx/polygon/b2dpolypolygon.hxx
+++ b/include/basegfx/polygon/b2dpolypolygon.hxx
@@ -49,11 +49,13 @@ namespace basegfx
     public:
         B2DPolyPolygon();
         B2DPolyPolygon(const B2DPolyPolygon& rPolyPolygon);
+        B2DPolyPolygon(B2DPolyPolygon&& rPolyPolygon);
         explicit B2DPolyPolygon(const B2DPolygon& rPolygon);
         ~B2DPolyPolygon();
 
         // assignment operator
         B2DPolyPolygon& operator=(const B2DPolyPolygon& rPolyPolygon);
+        B2DPolyPolygon& operator=(B2DPolyPolygon&& rPolyPolygon);
 
         /// unshare this poly-polygon (and all included polygons) with all internally shared instances
         void makeUnique();


More information about the Libreoffice-commits mailing list