[Libreoffice-commits] core.git: sfx2/source

Takeshi Abe tabe at fixedpoint.jp
Wed Nov 1 14:06:23 UTC 2017


 sfx2/source/doc/doctempl.cxx |   31 +++++++++++--------------------
 1 file changed, 11 insertions(+), 20 deletions(-)

New commits:
commit 36f8be6ceefa94aa49efe3577cef5b2969ef1950
Author: Takeshi Abe <tabe at fixedpoint.jp>
Date:   Wed Nov 1 18:01:16 2017 +0900

    sfx2: Simplify RegionData_Impl's code with std::unique_ptr
    
    Change-Id: I87dba62abc48e70cfb019ddaa4cc93779ee844b5
    Reviewed-on: https://gerrit.libreoffice.org/44155
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/sfx2/source/doc/doctempl.cxx b/sfx2/source/doc/doctempl.cxx
index 96588028caf7..ce3866b72602 100644
--- a/sfx2/source/doc/doctempl.cxx
+++ b/sfx2/source/doc/doctempl.cxx
@@ -92,7 +92,8 @@ using namespace ::ucbhelper;
 
 #include <comphelper/storagehelper.hxx>
 #include <unotools/ucbhelper.hxx>
-
+#include <o3tl/make_unique.hxx>
+#include <memory>
 #include <vector>
 using ::std::vector;
 using ::std::advance;
@@ -145,7 +146,7 @@ using namespace ::DocTempl;
 class RegionData_Impl
 {
     const SfxDocTemplate_Impl*  mpParent;
-    vector< DocTempl_EntryData_Impl* > maEntries;
+    std::vector<std::unique_ptr<DocTempl_EntryData_Impl>> maEntries;
     OUString                    maTitle;
     OUString                    maOwnURL;
     OUString                    maTargetURL;
@@ -158,7 +159,6 @@ private:
 public:
                         RegionData_Impl( const SfxDocTemplate_Impl* pParent,
                                          const OUString& rTitle );
-                        ~RegionData_Impl();
 
     void                SetTargetURL( const OUString& rURL ) { maTargetURL = rURL; }
     void                SetHierarchyURL( const OUString& rURL) { maOwnURL = rURL; }
@@ -1284,21 +1284,13 @@ RegionData_Impl::RegionData_Impl( const SfxDocTemplate_Impl* pParent,
 }
 
 
-RegionData_Impl::~RegionData_Impl()
-{
-    for (DocTempl_EntryData_Impl* p : maEntries)
-        delete p;
-    maEntries.clear();
-}
-
-
 size_t RegionData_Impl::GetEntryPos( const OUString& rTitle, bool& rFound ) const
 {
     const size_t nCount = maEntries.size();
 
     for ( size_t i=0; i<nCount; ++i )
     {
-        DocTempl_EntryData_Impl *pData = maEntries[ i ];
+        auto &pData = maEntries[ i ];
 
         if ( pData->Compare( rTitle ) == 0 )
         {
@@ -1330,17 +1322,17 @@ void RegionData_Impl::AddEntry( const OUString& rTitle,
         if ( pPos )
             nPos = *pPos;
 
-        DocTempl_EntryData_Impl* pEntry = new DocTempl_EntryData_Impl(
+        auto pEntry = o3tl::make_unique<DocTempl_EntryData_Impl>(
             this, rTitle );
         pEntry->SetTargetURL( rTargetURL );
         pEntry->SetHierarchyURL( aLinkURL );
         if ( nPos < maEntries.size() ) {
-            vector< DocTempl_EntryData_Impl* >::iterator it = maEntries.begin();
+            auto it = maEntries.begin();
             advance( it, nPos );
-            maEntries.insert( it, pEntry );
+            maEntries.insert( it, std::move(pEntry) );
         }
         else
-            maEntries.push_back( pEntry );
+            maEntries.push_back( std::move(pEntry) );
     }
 }
 
@@ -1375,7 +1367,7 @@ DocTempl_EntryData_Impl* RegionData_Impl::GetEntry( const OUString& rName ) cons
     long        nPos = GetEntryPos( rName, bFound );
 
     if ( bFound )
-        return maEntries[ nPos ];
+        return maEntries[ nPos ].get();
     return nullptr;
 }
 
@@ -1383,7 +1375,7 @@ DocTempl_EntryData_Impl* RegionData_Impl::GetEntry( const OUString& rName ) cons
 DocTempl_EntryData_Impl* RegionData_Impl::GetEntry( size_t nIndex ) const
 {
     if ( nIndex < maEntries.size() )
-        return maEntries[ nIndex ];
+        return maEntries[ nIndex ].get();
     return nullptr;
 }
 
@@ -1392,8 +1384,7 @@ void RegionData_Impl::DeleteEntry( size_t nIndex )
 {
     if ( nIndex < maEntries.size() )
     {
-        delete maEntries[ nIndex ];
-        vector< DocTempl_EntryData_Impl*>::iterator it = maEntries.begin();
+        auto it = maEntries.begin();
         advance( it, nIndex );
         maEntries.erase( it );
     }


More information about the Libreoffice-commits mailing list