[Libreoffice-commits] core.git: sc/qa sc/source

Stephan Bergmann sbergman at redhat.com
Mon Sep 28 06:56:33 PDT 2015


 sc/qa/unit/ucalc.cxx                  |    8 +++++---
 sc/source/ui/docshell/docfunc.cxx     |   12 ++++++------
 sc/source/ui/docshell/docfuncutil.cxx |   13 +++++++------
 sc/source/ui/inc/docfuncutil.hxx      |    6 +++---
 sc/source/ui/inc/undoblk.hxx          |    4 ++--
 sc/source/ui/undo/undoblk3.cxx        |   12 ++++++++----
 6 files changed, 31 insertions(+), 24 deletions(-)

New commits:
commit ee9b3c1f1cb7445f0a7e76736e32fe81878f8d00
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Sep 28 15:56:04 2015 +0200

    Return the std::unique_ptr itself here, not a raw pointer
    
    Change-Id: I8f649229ffce60de16e6b4611b1c081811cef225

diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index b5264db..469abc2 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -87,7 +87,9 @@
 #include <sfx2/docfile.hxx>
 
 #include <iostream>
+#include <memory>
 #include <sstream>
+#include <utility>
 #include <vector>
 
 #include <com/sun/star/i18n/TransliterationModules.hpp>
@@ -6212,10 +6214,10 @@ void Test::testDeleteContents()
     aMark.SelectOneTable(0);
     aMark.SetMarkArea(aRange);
 
-    ScDocument* pUndoDoc = new ScDocument(SCDOCMODE_UNDO);
+    std::unique_ptr<ScDocument> pUndoDoc(new ScDocument(SCDOCMODE_UNDO));
     pUndoDoc->InitUndo(m_pDoc, 0, 0);
-    m_pDoc->CopyToDocument(aRange, IDF_CONTENTS, false, pUndoDoc, &aMark);
-    ScUndoDeleteContents aUndo(&getDocShell(), aMark, aRange, pUndoDoc, false, IDF_CONTENTS, true);
+    m_pDoc->CopyToDocument(aRange, IDF_CONTENTS, false, pUndoDoc.get(), &aMark);
+    ScUndoDeleteContents aUndo(&getDocShell(), aMark, aRange, std::move(pUndoDoc), false, IDF_CONTENTS, true);
 
     clearRange(m_pDoc, aRange);
     CPPUNIT_ASSERT_EQUAL(3.0, m_pDoc->GetValue(ScAddress(3,15,0))); // formula
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index 0ff11a5..15fa0ec 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -582,7 +582,7 @@ bool ScDocFunc::DeleteContents(
     ScMarkData aMultiMark = rMark;
     aMultiMark.SetMarking(false);       // fuer MarkToMulti
 
-    ScDocument* pUndoDoc = NULL;
+    std::unique_ptr<ScDocument> pUndoDoc;
     bool bMulti = aMultiMark.IsMultiMarked();
     aMultiMark.MarkToMulti();
     aMultiMark.GetMultiMarkArea( aMarkRange );
@@ -623,7 +623,7 @@ bool ScDocFunc::DeleteContents(
     if ( bRecord )
     {
         pUndoDoc = sc::DocFuncUtil::createDeleteContentsUndoDoc(rDoc, aMultiMark, aMarkRange, nFlags, bMulti);
-        pDataSpans.reset(sc::DocFuncUtil::getNonEmptyCellSpans(rDoc, aMultiMark, aMarkRange));
+        pDataSpans = sc::DocFuncUtil::getNonEmptyCellSpans(rDoc, aMultiMark, aMarkRange);
     }
 
     rDoc.DeleteSelection( nFlags, aMultiMark );
@@ -633,7 +633,7 @@ bool ScDocFunc::DeleteContents(
     {
         sc::DocFuncUtil::addDeleteContentsUndo(
             rDocShell.GetUndoManager(), &rDocShell, aMultiMark, aExtendedRange,
-            pUndoDoc, nFlags, pDataSpans, bMulti, bDrawUndo);
+            std::move(pUndoDoc), nFlags, pDataSpans, bMulti, bDrawUndo);
     }
 
     if (!AdjustRowHeight( aExtendedRange ))
@@ -688,11 +688,11 @@ bool ScDocFunc::DeleteCell(
     // To keep track of all non-empty cells within the deleted area.
     std::shared_ptr<ScSimpleUndo::DataSpansType> pDataSpans;
 
-    ScDocument* pUndoDoc = NULL;
+    std::unique_ptr<ScDocument> pUndoDoc;
     if (bRecord)
     {
         pUndoDoc = sc::DocFuncUtil::createDeleteContentsUndoDoc(rDoc, rMark, rPos, nFlags, false);
-        pDataSpans.reset(sc::DocFuncUtil::getNonEmptyCellSpans(rDoc, rMark, rPos));
+        pDataSpans = sc::DocFuncUtil::getNonEmptyCellSpans(rDoc, rMark, rPos);
     }
 
     rDoc.DeleteArea(rPos.Col(), rPos.Row(), rPos.Col(), rPos.Row(), rMark, nFlags);
@@ -700,7 +700,7 @@ bool ScDocFunc::DeleteCell(
     if (bRecord)
     {
         sc::DocFuncUtil::addDeleteContentsUndo(
-            rDocShell.GetUndoManager(), &rDocShell, rMark, rPos, pUndoDoc,
+            rDocShell.GetUndoManager(), &rDocShell, rMark, rPos, std::move(pUndoDoc),
             nFlags, pDataSpans, false, bDrawUndo);
     }
 
diff --git a/sc/source/ui/docshell/docfuncutil.cxx b/sc/source/ui/docshell/docfuncutil.cxx
index 63f1f1c..5bd771b 100644
--- a/sc/source/ui/docshell/docfuncutil.cxx
+++ b/sc/source/ui/docshell/docfuncutil.cxx
@@ -25,6 +25,7 @@
 #include <undoblk.hxx>
 
 #include <memory>
+#include <utility>
 
 namespace sc {
 
@@ -39,7 +40,7 @@ bool DocFuncUtil::hasProtectedTab( const ScDocument& rDoc, const ScMarkData& rMa
     return false;
 }
 
-ScDocument* DocFuncUtil::createDeleteContentsUndoDoc(
+std::unique_ptr<ScDocument> DocFuncUtil::createDeleteContentsUndoDoc(
     ScDocument& rDoc, const ScMarkData& rMark, const ScRange& rRange,
     InsertDeleteFlags nFlags, bool bOnlyMarked )
 {
@@ -68,24 +69,24 @@ ScDocument* DocFuncUtil::createDeleteContentsUndoDoc(
     nUndoDocFlags |= IDF_NOCAPTIONS;
     rDoc.CopyToDocument(aCopyRange, nUndoDocFlags, bOnlyMarked, pUndoDoc.get(), &rMark);
 
-    return pUndoDoc.release();
+    return pUndoDoc;
 }
 
 void DocFuncUtil::addDeleteContentsUndo(
     svl::IUndoManager* pUndoMgr, ScDocShell* pDocSh, const ScMarkData& rMark,
-    const ScRange& rRange, ScDocument* pUndoDoc, InsertDeleteFlags nFlags,
+    const ScRange& rRange, std::unique_ptr<ScDocument>&& pUndoDoc, InsertDeleteFlags nFlags,
     const std::shared_ptr<ScSimpleUndo::DataSpansType>& pSpans,
     bool bMulti, bool bDrawUndo )
 {
     std::unique_ptr<ScUndoDeleteContents> pUndo(
         new ScUndoDeleteContents(
-            pDocSh, rMark, rRange, pUndoDoc, bMulti, nFlags, bDrawUndo));
+            pDocSh, rMark, rRange, std::move(pUndoDoc), bMulti, nFlags, bDrawUndo));
     pUndo->SetDataSpans(pSpans);
 
     pUndoMgr->AddUndoAction(pUndo.release());
 }
 
-ScSimpleUndo::DataSpansType* DocFuncUtil::getNonEmptyCellSpans(
+std::unique_ptr<ScSimpleUndo::DataSpansType> DocFuncUtil::getNonEmptyCellSpans(
     const ScDocument& rDoc, const ScMarkData& rMark, const ScRange& rRange )
 {
     std::unique_ptr<ScSimpleUndo::DataSpansType> pDataSpans(new ScSimpleUndo::DataSpansType);
@@ -107,7 +108,7 @@ ScSimpleUndo::DataSpansType* DocFuncUtil::getNonEmptyCellSpans(
         }
     }
 
-    return pDataSpans.release();
+    return pDataSpans;
 }
 
 }
diff --git a/sc/source/ui/inc/docfuncutil.hxx b/sc/source/ui/inc/docfuncutil.hxx
index e1db8ce..bd99ab6 100644
--- a/sc/source/ui/inc/docfuncutil.hxx
+++ b/sc/source/ui/inc/docfuncutil.hxx
@@ -25,17 +25,17 @@ public:
 
     static bool hasProtectedTab( const ScDocument& rDoc, const ScMarkData& rMark );
 
-    static ScDocument* createDeleteContentsUndoDoc(
+    static std::unique_ptr<ScDocument> createDeleteContentsUndoDoc(
         ScDocument& rDoc, const ScMarkData& rMark, const ScRange& rRange,
         InsertDeleteFlags nFlags, bool bOnlyMarked );
 
     static void addDeleteContentsUndo(
         svl::IUndoManager* pUndoMgr, ScDocShell* pDocSh, const ScMarkData& rMark,
-        const ScRange& rRange, ScDocument* pUndoDoc, InsertDeleteFlags nFlags,
+        const ScRange& rRange, std::unique_ptr<ScDocument>&& pUndoDoc, InsertDeleteFlags nFlags,
         const std::shared_ptr<ScSimpleUndo::DataSpansType>& pSpans,
         bool bMulti, bool bDrawUndo );
 
-    static ScSimpleUndo::DataSpansType* getNonEmptyCellSpans(
+    static std::unique_ptr<ScSimpleUndo::DataSpansType> getNonEmptyCellSpans(
         const ScDocument& rDoc, const ScMarkData& rMark, const ScRange& rRange );
 };
 
diff --git a/sc/source/ui/inc/undoblk.hxx b/sc/source/ui/inc/undoblk.hxx
index 4013805..15df3c2a 100644
--- a/sc/source/ui/inc/undoblk.hxx
+++ b/sc/source/ui/inc/undoblk.hxx
@@ -255,7 +255,7 @@ public:
                     ScUndoDeleteContents( ScDocShell* pNewDocShell,
                                           const ScMarkData& rMark,
                                           const ScRange& rRange,
-                                          ScDocument* pNewUndoDoc, bool bNewMulti,
+                                          std::unique_ptr<ScDocument>&& pNewUndoDoc, bool bNewMulti,
                                           InsertDeleteFlags nNewFlags, bool bObjects );
     virtual         ~ScUndoDeleteContents();
 
@@ -273,7 +273,7 @@ private:
 
     ScRange         aRange;
     ScMarkData      aMarkData;
-    ScDocument*     pUndoDoc;       // Block mark and deleted data
+    std::unique_ptr<ScDocument> pUndoDoc; // Block mark and deleted data
     SdrUndoAction*  pDrawUndo;      // Deleted objects
     sal_uLong       nStartChangeAction;
     sal_uLong       nEndChangeAction;
diff --git a/sc/source/ui/undo/undoblk3.cxx b/sc/source/ui/undo/undoblk3.cxx
index 762797d..4a891da 100644
--- a/sc/source/ui/undo/undoblk3.cxx
+++ b/sc/source/ui/undo/undoblk3.cxx
@@ -17,6 +17,11 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include <sal/config.h>
+
+#include <memory>
+#include <utility>
+
 #include "scitems.hxx"
 #include <svx/algitem.hxx>
 #include <editeng/boxitem.hxx>
@@ -76,12 +81,12 @@ TYPEINIT1(ScUndoUpdateAreaLink,     SfxUndoAction);
 ScUndoDeleteContents::ScUndoDeleteContents(
                 ScDocShell* pNewDocShell,
                 const ScMarkData& rMark, const ScRange& rRange,
-                ScDocument* pNewUndoDoc, bool bNewMulti,
+                std::unique_ptr<ScDocument>&& pNewUndoDoc, bool bNewMulti,
                 InsertDeleteFlags nNewFlags, bool bObjects )
     :   ScSimpleUndo( pNewDocShell ),
         aRange      ( rRange ),
         aMarkData   ( rMark ),
-        pUndoDoc    ( pNewUndoDoc ),
+        pUndoDoc    ( std::move(pNewUndoDoc) ),
         pDrawUndo   ( NULL ),
         nFlags      ( nNewFlags ),
         bMulti      ( bNewMulti )   // unnecessary
@@ -97,7 +102,6 @@ ScUndoDeleteContents::ScUndoDeleteContents(
 
 ScUndoDeleteContents::~ScUndoDeleteContents()
 {
-    delete pUndoDoc;
     DeleteSdrUndoAction( pDrawUndo );
 }
 
@@ -115,7 +119,7 @@ void ScUndoDeleteContents::SetChangeTrack()
 {
     ScChangeTrack* pChangeTrack = pDocShell->GetDocument().GetChangeTrack();
     if ( pChangeTrack && (nFlags & IDF_CONTENTS) )
-        pChangeTrack->AppendContentRange( aRange, pUndoDoc,
+        pChangeTrack->AppendContentRange( aRange, pUndoDoc.get(),
             nStartChangeAction, nEndChangeAction );
     else
         nStartChangeAction = nEndChangeAction = 0;


More information about the Libreoffice-commits mailing list