drawinglayer/source/primitive2d/textbreakuphelper.cxx        |    6 +++---
 drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx |    6 +++---
 include/drawinglayer/primitive2d/textbreakuphelper.hxx       |    2 +-
 svgio/source/svgreader/svgcharacternode.cxx                  |    7 +++----
 svgio/source/svgreader/svgtextpathnode.cxx                   |    8 ++++----
 5 files changed, 14 insertions(+), 15 deletions(-)

New commits:
commit d286a820fac4dbac993e13afda52dde79b310af4
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Sun May 29 12:24:23 2022 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Sun May 29 19:15:03 2022 +0200

    we can std::move the data out of TextBreakupHelper
    
    and save some copying
    
    Change-Id: I34cbc2edfd53fcc440d1765dba471fcbb05b2b7b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135088
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/drawinglayer/source/primitive2d/textbreakuphelper.cxx 
b/drawinglayer/source/primitive2d/textbreakuphelper.cxx
index 9c4424b8d01e..5ca10ce633b6 100644
--- a/drawinglayer/source/primitive2d/textbreakuphelper.cxx
+++ b/drawinglayer/source/primitive2d/textbreakuphelper.cxx
@@ -261,14 +261,14 @@ namespace drawinglayer::primitive2d
             mxResult = aTempResult;
         }
 
-        const Primitive2DContainer& TextBreakupHelper::getResult(BreakupUnit 
aBreakupUnit) const
+        Primitive2DContainer TextBreakupHelper::extractResult(BreakupUnit 
aBreakupUnit)
         {
             if(mxResult.empty())
             {
-                const_cast< TextBreakupHelper* >(this)->breakup(aBreakupUnit);
+                breakup(aBreakupUnit);
             }
 
-            return mxResult;
+            return std::move(mxResult);
         }
 
 } // end of namespace
diff --git a/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx 
b/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx
index 10cf07b4a8c0..25c5fd7b4ffa 100644
--- a/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx
@@ -155,13 +155,13 @@ namespace drawinglayer::primitive2d
             {
                 // support for single word mode; split to single word 
primitives
                 // using TextBreakupHelper
-                const TextBreakupHelper aTextBreakupHelper(*this);
-                const Primitive2DContainer& 
aBroken(aTextBreakupHelper.getResult(BreakupUnit::Word));
+                TextBreakupHelper aTextBreakupHelper(*this);
+                Primitive2DContainer 
aBroken(aTextBreakupHelper.extractResult(BreakupUnit::Word));
 
                 if(!aBroken.empty())
                 {
                     // was indeed split to several words, use as result
-                    rContainer.insert(rContainer.end(), aBroken.begin(), 
aBroken.end());
+                    rContainer.append(std::move(aBroken));
                     return;
                 }
                 else
diff --git a/include/drawinglayer/primitive2d/textbreakuphelper.hxx 
b/include/drawinglayer/primitive2d/textbreakuphelper.hxx
index c007bb6afa1c..d7dbeabb3cd0 100644
--- a/include/drawinglayer/primitive2d/textbreakuphelper.hxx
+++ b/include/drawinglayer/primitive2d/textbreakuphelper.hxx
@@ -66,7 +66,7 @@ namespace drawinglayer::primitive2d
             virtual ~TextBreakupHelper();
 
             /// get result
-            const Primitive2DContainer& getResult(BreakupUnit aBreakupUnit = 
BreakupUnit::Character) const;
+            Primitive2DContainer extractResult(BreakupUnit aBreakupUnit = 
BreakupUnit::Character);
         };
 
 } // end of namespace drawinglayer::primitive2d
diff --git a/svgio/source/svgreader/svgcharacternode.cxx 
b/svgio/source/svgreader/svgcharacternode.cxx
index 0aba14c0bbd7..bdd0c4f3471b 100644
--- a/svgio/source/svgreader/svgcharacternode.cxx
+++ b/svgio/source/svgreader/svgcharacternode.cxx
@@ -515,13 +515,12 @@ namespace svgio::svgreader
 
                 if(pCandidate)
                 {
-                    const localTextBreakupHelper 
alocalTextBreakupHelper(*pCandidate, rSvgTextPosition);
-                    const Primitive2DContainer& aResult(
-                        alocalTextBreakupHelper.getResult());
+                    localTextBreakupHelper 
alocalTextBreakupHelper(*pCandidate, rSvgTextPosition);
+                    Primitive2DContainer aResult = 
alocalTextBreakupHelper.extractResult();
 
                     if(!aResult.empty())
                     {
-                        rTarget.append(aResult);
+                        rTarget.append(std::move(aResult));
                     }
 
                     // also consume for the implied single space
diff --git a/svgio/source/svgreader/svgtextpathnode.cxx 
b/svgio/source/svgreader/svgtextpathnode.cxx
index 9b177383677f..129b2c280b88 100644
--- a/svgio/source/svgreader/svgtextpathnode.cxx
+++ b/svgio/source/svgreader/svgtextpathnode.cxx
@@ -412,19 +412,19 @@ namespace svgio::svgreader
 
                 if(pCandidate)
                 {
-                    const pathTextBreakupHelper aPathTextBreakupHelper(
+                    pathTextBreakupHelper aPathTextBreakupHelper(
                         *pCandidate,
                         aPolygon,
                         fBasegfxPathLength,
                         fPosition,
                         rTextStart);
 
-                    const drawinglayer::primitive2d::Primitive2DContainer& 
aResult(
-                        aPathTextBreakupHelper.getResult());
+                    drawinglayer::primitive2d::Primitive2DContainer aResult =
+                        aPathTextBreakupHelper.extractResult();
 
                     if(!aResult.empty())
                     {
-                        rTarget.append(aResult);
+                        rTarget.append(std::move(aResult));
                     }
 
                     // advance position to consumed

Reply via email to