[Libreoffice-commits] core.git: include/o3tl include/svx svx/source

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Sun Sep 13 06:14:37 UTC 2020


 include/o3tl/sorted_vector.hxx          |   17 +++++++++++++++--
 include/svx/polypolygoneditor.hxx       |    7 ++++---
 include/svx/svdmark.hxx                 |    4 ++--
 svx/source/inc/fmvwimp.hxx              |    1 +
 svx/source/svdraw/polypolygoneditor.cxx |   12 ++++++------
 svx/source/svdraw/svdglev.cxx           |    2 +-
 6 files changed, 29 insertions(+), 14 deletions(-)

New commits:
commit 4059583469c168c553d0529684caba6b281827d1
Author:     Noel Grandin <noelgrandin at gmail.com>
AuthorDate: Sat Sep 12 20:10:17 2020 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Sun Sep 13 08:13:59 2020 +0200

    std::set->o3tl::sorted_vector in svx
    
    Change-Id: I86154a8ddf885ea23ff29e4df1b67e7501b9165b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102536
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/include/o3tl/sorted_vector.hxx b/include/o3tl/sorted_vector.hxx
index 28ef75817fa7..803a044535e8 100644
--- a/include/o3tl/sorted_vector.hxx
+++ b/include/o3tl/sorted_vector.hxx
@@ -42,6 +42,7 @@ private:
     typedef typename std::vector<Value>::iterator  iterator;
 public:
     typedef typename std::vector<Value>::const_iterator const_iterator;
+    typedef typename std::vector<Value>::const_reverse_iterator const_reverse_iterator;
     typedef typename std::vector<Value>::difference_type difference_type;
     typedef typename std::vector<Value>::size_type size_type;
 
@@ -98,9 +99,9 @@ public:
     }
 
     // like C++ 2011: erase with const_iterator (doesn't change sort order)
-    void erase(const_iterator const& position)
+    const_iterator erase(const_iterator const& position)
     {   // C++98 has vector::erase(iterator), so call that
-        m_vector.erase(m_vector.begin() + (position - m_vector.begin()));
+        return m_vector.erase(m_vector.begin() + (position - m_vector.begin()));
     }
 
     void erase(const_iterator const& first, const_iterator const& last)
@@ -159,6 +160,18 @@ public:
         return m_vector.end();
     }
 
+    // Only return a const iterator, so that the vector cannot be directly updated.
+    const_reverse_iterator rbegin() const
+    {
+        return m_vector.rbegin();
+    }
+
+    // Only return a const iterator, so that the vector cannot be directly updated.
+    const_reverse_iterator rend() const
+    {
+        return m_vector.rend();
+    }
+
     const Value& front() const
     {
         return m_vector.front();
diff --git a/include/svx/polypolygoneditor.hxx b/include/svx/polypolygoneditor.hxx
index e8b6138dffa4..347bbc4a92a5 100644
--- a/include/svx/polypolygoneditor.hxx
+++ b/include/svx/polypolygoneditor.hxx
@@ -26,6 +26,7 @@
 
 #include <basegfx/polygon/b2dpolypolygon.hxx>
 #include <set>
+#include <o3tl/sorted_vector.hxx>
 
 namespace sdr
 {
@@ -41,15 +42,15 @@ public:
     /** returns true if the B2DPolyPolygon was changed.
         Warning: B2DPolyPolygon can be empty after this operation!
     */
-    bool DeletePoints( const std::set< sal_uInt16 >& rAbsPoints );
+    bool DeletePoints( const o3tl::sorted_vector< sal_uInt16 >& rAbsPoints );
 
     /** returns true if the B2DPolyPolygon was changed.
     */
-    bool SetSegmentsKind(SdrPathSegmentKind eKind, const std::set< sal_uInt16 >& rAbsPoints);
+    bool SetSegmentsKind(SdrPathSegmentKind eKind, const o3tl::sorted_vector< sal_uInt16 >& rAbsPoints);
 
     /** returns true if the B2DPolyPolygon was changed.
     */
-    bool SetPointsSmooth( basegfx::B2VectorContinuity eFlags, const std::set< sal_uInt16 >& rAbsPoints);
+    bool SetPointsSmooth( basegfx::B2VectorContinuity eFlags, const o3tl::sorted_vector< sal_uInt16 >& rAbsPoints);
 
     /** Outputs the relative position ( polygon number and point number in that polygon ) from the absolute point number.
         False is returned if the given absolute point is greater not inside this B2DPolyPolygon
diff --git a/include/svx/svdmark.hxx b/include/svx/svdmark.hxx
index f5f9c7b539d5..1b121a58f86e 100644
--- a/include/svx/svdmark.hxx
+++ b/include/svx/svdmark.hxx
@@ -21,12 +21,12 @@
 #define INCLUDED_SVX_SVDMARK_HXX
 
 #include <config_options.h>
+#include <o3tl/sorted_vector.hxx>
 #include <rtl/ustring.hxx>
 #include <svx/svxdllapi.h>
 #include <svx/sdrobjectuser.hxx>
 
 #include <memory>
-#include <set>
 #include <vector>
 
 namespace tools { class Rectangle; }
@@ -35,7 +35,7 @@ class SdrObjList;
 class SdrObject;
 class SdrPageView;
 
-typedef std::set<sal_uInt16> SdrUShortCont;
+typedef o3tl::sorted_vector<sal_uInt16> SdrUShortCont;
 
 
 /**
diff --git a/svx/source/inc/fmvwimp.hxx b/svx/source/inc/fmvwimp.hxx
index 1e6a01dab0cb..278c4eda597b 100644
--- a/svx/source/inc/fmvwimp.hxx
+++ b/svx/source/inc/fmvwimp.hxx
@@ -23,6 +23,7 @@
 
 #include <map>
 #include <memory>
+#include <set>
 
 #include <svx/svdmark.hxx>
 #include <svx/svdobj.hxx>
diff --git a/svx/source/svdraw/polypolygoneditor.cxx b/svx/source/svdraw/polypolygoneditor.cxx
index 1f82f0436544..b3f6d3bc5175 100644
--- a/svx/source/svdraw/polypolygoneditor.cxx
+++ b/svx/source/svdraw/polypolygoneditor.cxx
@@ -30,11 +30,11 @@ PolyPolygonEditor::PolyPolygonEditor( const basegfx::B2DPolyPolygon& rPolyPolygo
 {
 }
 
-bool PolyPolygonEditor::DeletePoints( const std::set< sal_uInt16 >& rAbsPoints )
+bool PolyPolygonEditor::DeletePoints( const o3tl::sorted_vector< sal_uInt16 >& rAbsPoints )
 {
     bool bPolyPolyChanged = false;
 
-    std::set< sal_uInt16 >::const_reverse_iterator aIter( rAbsPoints.rbegin() );
+    auto aIter( rAbsPoints.rbegin() );
     for( ; aIter != rAbsPoints.rend(); ++aIter )
     {
         sal_uInt32 nPoly, nPnt;
@@ -62,11 +62,11 @@ bool PolyPolygonEditor::DeletePoints( const std::set< sal_uInt16 >& rAbsPoints )
     return bPolyPolyChanged;
 }
 
-bool PolyPolygonEditor::SetSegmentsKind(SdrPathSegmentKind eKind, const std::set< sal_uInt16 >& rAbsPoints )
+bool PolyPolygonEditor::SetSegmentsKind(SdrPathSegmentKind eKind, const o3tl::sorted_vector< sal_uInt16 >& rAbsPoints )
 {
     bool bPolyPolyChanged = false;
 
-    std::set< sal_uInt16 >::const_reverse_iterator aIter( rAbsPoints.rbegin() );
+    auto aIter( rAbsPoints.rbegin() );
     for( ; aIter != rAbsPoints.rend(); ++aIter )
     {
         sal_uInt32 nPolyNum, nPntNum;
@@ -122,11 +122,11 @@ bool PolyPolygonEditor::SetSegmentsKind(SdrPathSegmentKind eKind, const std::set
     return bPolyPolyChanged;
 }
 
-bool PolyPolygonEditor::SetPointsSmooth( basegfx::B2VectorContinuity eFlags, const std::set< sal_uInt16 >& rAbsPoints)
+bool PolyPolygonEditor::SetPointsSmooth( basegfx::B2VectorContinuity eFlags, const o3tl::sorted_vector< sal_uInt16 >& rAbsPoints)
 {
     bool bPolyPolygonChanged(false);
 
-    std::set< sal_uInt16 >::const_reverse_iterator aIter( rAbsPoints.rbegin() );
+    auto aIter( rAbsPoints.rbegin() );
     for( ; aIter != rAbsPoints.rend(); ++aIter )
     {
         sal_uInt32 nPolyNum, nPntNum;
diff --git a/svx/source/svdraw/svdglev.cxx b/svx/source/svdraw/svdglev.cxx
index 5f81d38575ab..9d1f19c558cf 100644
--- a/svx/source/svdraw/svdglev.cxx
+++ b/svx/source/svdraw/svdglev.cxx
@@ -297,7 +297,7 @@ void SdrGlueEditView::ImpCopyMarkedGluePoints()
             }
             for(const auto& rId : aIdsToErase)
                 rPts.erase(rId);
-            rPts.insert(aIdsToInsert.begin(), aIdsToInsert.end());
+            rPts.insert(aIdsToInsert);
         }
     }
     if( bUndo )


More information about the Libreoffice-commits mailing list