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

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Wed Jul 21 09:40:26 UTC 2021


 sc/inc/detdata.hxx               |    7 ++-----
 sc/source/core/data/documen4.cxx |    2 +-
 sc/source/core/tool/detdata.cxx  |   25 +++++++++++--------------
 sc/source/ui/undo/undocell.cxx   |    2 +-
 4 files changed, 15 insertions(+), 21 deletions(-)

New commits:
commit 4f974eceb0e49f5e8cdbc8b9990a74811feb1927
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Wed Jul 21 10:36:23 2021 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Wed Jul 21 11:39:48 2021 +0200

    flatten ScDetOpList vector
    
    Change-Id: I08256d2e4631fe4a2134da37892a50f8b0579834
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119308
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/sc/inc/detdata.hxx b/sc/inc/detdata.hxx
index 927ad29a4b5e..db8e2f6cc4e9 100644
--- a/sc/inc/detdata.hxx
+++ b/sc/inc/detdata.hxx
@@ -42,9 +42,6 @@ public:
                         ScDetOpData( const ScAddress& rP, ScDetOpType eOp ) :
                             aPos(rP), eOperation(eOp) {}
 
-                        ScDetOpData( const ScDetOpData& rData ) :
-                            aPos(rData.aPos), eOperation(rData.eOperation) {}
-
     const ScAddress&    GetPos() const          { return aPos; }
     ScDetOpType         GetOperation() const    { return eOperation; }
 
@@ -57,7 +54,7 @@ public:
 
 //  list of operators
 
-typedef std::vector<std::unique_ptr<ScDetOpData>> ScDetOpDataVector;
+typedef std::vector<ScDetOpData> ScDetOpDataVector;
 
 class ScDetOpList
 {
@@ -74,7 +71,7 @@ public:
 
     bool        operator==( const ScDetOpList& r ) const;       // for ref-undo
 
-    void        Append( ScDetOpData* pData );
+    void        Append( const ScDetOpData& );
     ScDetOpDataVector&  GetDataVector() { return aDetOpDataVector; }
     const ScDetOpData& GetObject( size_t nPos ) const;
 
diff --git a/sc/source/core/data/documen4.cxx b/sc/source/core/data/documen4.cxx
index aa3b6f69f74d..50bbb874481f 100644
--- a/sc/source/core/data/documen4.cxx
+++ b/sc/source/core/data/documen4.cxx
@@ -893,7 +893,7 @@ void ScDocument::AddDetectiveOperation( const ScDetOpData& rData )
     if (!pDetOpList)
         pDetOpList.reset(new ScDetOpList);
 
-    pDetOpList->Append( new ScDetOpData( rData ) );
+    pDetOpList->Append( rData );
 }
 
 void ScDocument::ClearDetectiveOperations()
diff --git a/sc/source/core/tool/detdata.cxx b/sc/source/core/tool/detdata.cxx
index feacceca6e28..b232a4dddab4 100644
--- a/sc/source/core/tool/detdata.cxx
+++ b/sc/source/core/tool/detdata.cxx
@@ -23,19 +23,16 @@
 #include <refupdat.hxx>
 
 ScDetOpList::ScDetOpList(const ScDetOpList& rList) :
-    bHasAddError( false )
+    bHasAddError( false ),
+    aDetOpDataVector( rList.aDetOpDataVector )
 {
-    size_t nCount = rList.Count();
-
-    for (size_t i=0; i<nCount; i++)
-        Append( new ScDetOpData( *rList.aDetOpDataVector[i] ) );
 }
 
 void ScDetOpList::DeleteOnTab( SCTAB nTab )
 {
     aDetOpDataVector.erase(std::remove_if(aDetOpDataVector.begin(), aDetOpDataVector.end(),
-        [&nTab](const std::unique_ptr<ScDetOpData>& rxDetOpData) {
-            return rxDetOpData->GetPos().Tab() == nTab; // look for operations on the deleted sheet
+        [&nTab](const ScDetOpData& rxDetOpData) {
+            return rxDetOpData.GetPos().Tab() == nTab; // look for operations on the deleted sheet
         }),
         aDetOpDataVector.end());
 }
@@ -45,7 +42,7 @@ void ScDetOpList::UpdateReference( const ScDocument* pDoc, UpdateRefMode eUpdate
 {
     for (auto& rxDetOpData : aDetOpDataVector )
     {
-        ScAddress aPos = rxDetOpData->GetPos();
+        ScAddress aPos = rxDetOpData.GetPos();
         SCCOL nCol1 = aPos.Col();
         SCROW nRow1 = aPos.Row();
         SCTAB nTab1 = aPos.Tab();
@@ -59,16 +56,16 @@ void ScDetOpList::UpdateReference( const ScDocument* pDoc, UpdateRefMode eUpdate
                 rRange.aEnd.Col(), rRange.aEnd.Row(), rRange.aEnd.Tab(), nDx, nDy, nDz,
                 nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 );
         if ( eRes != UR_NOTHING )
-            rxDetOpData->SetPos( ScAddress( nCol1, nRow1, nTab1 ) );
+            rxDetOpData.SetPos( ScAddress( nCol1, nRow1, nTab1 ) );
     }
 }
 
-void ScDetOpList::Append( ScDetOpData* pDetOpData )
+void ScDetOpList::Append( const ScDetOpData& rDetOpData )
 {
-    if ( pDetOpData->GetOperation() == SCDETOP_ADDERROR )
+    if ( rDetOpData.GetOperation() == SCDETOP_ADDERROR )
         bHasAddError = true;
 
-    aDetOpDataVector.push_back( std::unique_ptr<ScDetOpData>(pDetOpData) );
+    aDetOpDataVector.push_back( rDetOpData );
 }
 
 bool ScDetOpList::operator==( const ScDetOpList& r ) const
@@ -78,7 +75,7 @@ bool ScDetOpList::operator==( const ScDetOpList& r ) const
     size_t nCount = Count();
     bool bEqual = ( nCount == r.Count() );
     for (size_t i=0; i<nCount && bEqual; i++)       // order has to be the same
-        if ( !(*aDetOpDataVector[i] == *r.aDetOpDataVector[i]) )    // entries are different ?
+        if ( !(aDetOpDataVector[i] == r.aDetOpDataVector[i]) )    // entries are different ?
             bEqual = false;
 
     return bEqual;
@@ -86,7 +83,7 @@ bool ScDetOpList::operator==( const ScDetOpList& r ) const
 
 const ScDetOpData& ScDetOpList::GetObject( size_t nPos ) const
 {
-    return *aDetOpDataVector[nPos];
+    return aDetOpDataVector[nPos];
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/undo/undocell.cxx b/sc/source/ui/undo/undocell.cxx
index ce503934fe70..583e2dd4e832 100644
--- a/sc/source/ui/undo/undocell.cxx
+++ b/sc/source/ui/undo/undocell.cxx
@@ -928,7 +928,7 @@ void ScUndoDetective::Undo()
         {
             ScDetOpDataVector& rVec = pList->GetDataVector();
             ScDetOpDataVector::iterator it = rVec.begin() + rVec.size() - 1;
-            if ( (*it)->GetOperation() == static_cast<ScDetOpType>(nAction) && (*it)->GetPos() == aPos )
+            if ( it->GetOperation() == static_cast<ScDetOpType>(nAction) && it->GetPos() == aPos )
                 rVec.erase( it);
             else
             {


More information about the Libreoffice-commits mailing list