[Libreoffice-commits] core.git: 2 commits - include/vcl vcl/unx xmloff/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Jul 17 06:39:07 UTC 2018


 include/vcl/ppdparser.hxx               |    4 +--
 vcl/unx/generic/printer/ppdparser.cxx   |   42 +++++++++++++++-----------------
 xmloff/source/text/XMLRedlineExport.cxx |   12 ++-------
 xmloff/source/text/XMLRedlineExport.hxx |    3 +-
 4 files changed, 27 insertions(+), 34 deletions(-)

New commits:
commit 60c08199f215ff7db335a692cbbcb72d1ac582d1
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Mon Jul 16 08:42:33 2018 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Tue Jul 17 08:38:53 2018 +0200

    loplugin:useuniqueptr in PPDParser
    
    Change-Id: Id7ffe7967d2b6a7f394a4e096c04218c10aeda37
    Reviewed-on: https://gerrit.libreoffice.org/57514
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/include/vcl/ppdparser.hxx b/include/vcl/ppdparser.hxx
index b0bddea9acb1..b88d859840c8 100644
--- a/include/vcl/ppdparser.hxx
+++ b/include/vcl/ppdparser.hxx
@@ -124,10 +124,10 @@ class VCL_DLLPUBLIC PPDParser
     friend class CPDManager;
     friend class PPDCache;
 
-    typedef std::unordered_map< OUString, PPDKey* > hash_type;
+    typedef std::unordered_map< OUString, std::unique_ptr<PPDKey> > hash_type;
     typedef std::vector< PPDKey* > value_type;
 
-    void insertKey( const OUString& rKey, PPDKey* pKey );
+    void insertKey( std::unique_ptr<PPDKey> pKey );
 public:
     struct PPDConstraint
     {
diff --git a/vcl/unx/generic/printer/ppdparser.cxx b/vcl/unx/generic/printer/ppdparser.cxx
index af2dfbe0e249..0caf55d81532 100644
--- a/vcl/unx/generic/printer/ppdparser.cxx
+++ b/vcl/unx/generic/printer/ppdparser.cxx
@@ -597,9 +597,9 @@ PPDParser::PPDParser( const OUString& rFile, std::vector<PPDKey*> keys) :
     m_pDefaultResolution( nullptr ),
     m_pTranslator( new PPDTranslator() )
 {
-    for (PPDKey* key: keys)
+    for (auto & key: keys)
     {
-        insertKey( key -> getKey(), key );
+        insertKey( std::unique_ptr<PPDKey>(key) );
     }
 
     // fill in shortcuts
@@ -608,8 +608,8 @@ PPDParser::PPDParser( const OUString& rFile, std::vector<PPDKey*> keys) :
     pKey = getKey( OUString( "PageSize" ) );
 
     if ( pKey ) {
-        PPDKey* pImageableAreas = new PPDKey("ImageableArea");
-        PPDKey* pPaperDimensions = new PPDKey("PaperDimension");
+        std::unique_ptr<PPDKey> pImageableAreas(new PPDKey("ImageableArea"));
+        std::unique_ptr<PPDKey> pPaperDimensions(new PPDKey("PaperDimension"));
 #if defined(CUPS_VERSION_MAJOR)
 #if (CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR >= 7) || CUPS_VERSION_MAJOR > 1
         for (int i = 0; i < pKey->countValues(); i++) {
@@ -641,8 +641,8 @@ PPDParser::PPDParser( const OUString& rFile, std::vector<PPDKey*> keys) :
         }
 #endif // HAVE_CUPS_API_1_7
 #endif
-        insertKey("ImageableArea", pImageableAreas);
-        insertKey("PaperDimension", pPaperDimensions);
+        insertKey(std::move(pImageableAreas));
+        insertKey(std::move(pPaperDimensions));
     }
 
     m_pImageableAreas = getKey(  OUString( "ImageableArea" ) );
@@ -863,15 +863,13 @@ PPDParser::PPDParser( const OUString& rFile ) :
 
 PPDParser::~PPDParser()
 {
-    for (auto const& key : m_aKeys)
-        delete key.second;
     m_pTranslator.reset();
 }
 
-void PPDParser::insertKey( const OUString& rKey, PPDKey* pKey )
+void PPDParser::insertKey( std::unique_ptr<PPDKey> pKey )
 {
-    m_aKeys[ rKey ] = pKey;
-    m_aOrderedKeys.push_back( pKey );
+    m_aOrderedKeys.push_back( pKey.get() );
+    m_aKeys[ pKey->getKey() ] = std::move(pKey);
 }
 
 const PPDKey* PPDParser::getKey( int n ) const
@@ -882,7 +880,7 @@ const PPDKey* PPDParser::getKey( int n ) const
 const PPDKey* PPDParser::getKey( const OUString& rKey ) const
 {
     PPDParser::hash_type::const_iterator it = m_aKeys.find( rKey );
-    return it != m_aKeys.end() ? it->second : nullptr;
+    return it != m_aKeys.end() ? it->second.get() : nullptr;
 }
 
 bool PPDParser::hasKey( const PPDKey* pKey ) const
@@ -1037,7 +1035,7 @@ void PPDParser::parse( ::std::vector< OString >& rLines )
             keyit = m_aKeys.find( aUniKey );
             if(keyit != m_aKeys.end())
             {
-                PPDKey* pKey = keyit->second;
+                PPDKey* pKey = keyit->second.get();
                 pKey->insertValue("Custom", eInvocation, true);
             }
             continue;
@@ -1193,10 +1191,10 @@ void PPDParser::parse( ::std::vector< OString >& rLines )
         if( keyit == m_aKeys.end() )
         {
             pKey = new PPDKey( aUniKey );
-            insertKey( aUniKey, pKey );
+            insertKey( std::unique_ptr<PPDKey>(pKey) );
         }
         else
-            pKey = keyit->second;
+            pKey = keyit->second.get();
 
         if( eType == eNo && bQuery )
             continue;
@@ -1238,7 +1236,7 @@ void PPDParser::parse( ::std::vector< OString >& rLines )
                 keyit = m_aKeys.find( aKey );
                 if( keyit != m_aKeys.end() )
                 {
-                    PPDKey* pKey = keyit->second;
+                    PPDKey* pKey = keyit->second.get();
                     const PPDValue* pDefValue = pKey->getValue( aOption );
                     if( pKey->m_pDefaultValue == nullptr )
                         pKey->m_pDefaultValue = pDefValue;
@@ -1249,10 +1247,10 @@ void PPDParser::parse( ::std::vector< OString >& rLines )
                     // do not exist otherwise
                     // (example: DefaultResolution)
                     // so invent that key here and have a default value
-                    PPDKey* pKey = new PPDKey( aKey );
+                    std::unique_ptr<PPDKey> pKey(new PPDKey( aKey ));
                     pKey->insertValue( aOption, eInvocation /*or what ?*/ );
                     pKey->m_pDefaultValue = pKey->getValue( aOption );
-                    insertKey( aKey, pKey );
+                    insertKey( std::move(pKey) );
                 }
             }
         }
@@ -1287,10 +1285,10 @@ void PPDParser::parseOpenUI(const OString& rLine, const OString& rPPDGroup)
     if( keyit == m_aKeys.end() )
     {
         pKey = new PPDKey( aUniKey );
-        insertKey( aUniKey, pKey );
+        insertKey( std::unique_ptr<PPDKey>(pKey) );
     }
     else
-        pKey = keyit->second;
+        pKey = keyit->second.get();
 
     pKey->m_bUIOption = true;
     m_pTranslator->insertKey( pKey->getKey(), aTranslation );
@@ -1317,10 +1315,10 @@ void PPDParser::parseOrderDependency(const OString& rLine)
     if( keyit == m_aKeys.end() )
     {
         pKey = new PPDKey( aKey );
-        insertKey( aKey, pKey );
+        insertKey( std::unique_ptr<PPDKey>(pKey) );
     }
     else
-        pKey = keyit->second;
+        pKey = keyit->second.get();
 
     pKey->m_nOrderDependency = nOrder;
     if( aSetup == "ExitServer" )
commit 76db1242ad6944dea42a09d3e5575a890bf6f7c2
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Mon Jul 16 08:42:10 2018 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Tue Jul 17 08:38:43 2018 +0200

    loplugin:useuniqueptr in XMLRedlineExport
    
    Change-Id: I337b6c068e28a5cf69d9c0b6a30b480834d8a227
    Reviewed-on: https://gerrit.libreoffice.org/57513
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/xmloff/source/text/XMLRedlineExport.cxx b/xmloff/source/text/XMLRedlineExport.cxx
index 4a0e076a3c78..6e23cd2d4743 100644
--- a/xmloff/source/text/XMLRedlineExport.cxx
+++ b/xmloff/source/text/XMLRedlineExport.cxx
@@ -71,12 +71,6 @@ XMLRedlineExport::XMLRedlineExport(SvXMLExport& rExp)
 
 XMLRedlineExport::~XMLRedlineExport()
 {
-    // delete changes lists
-    for (auto const& change : aChangeMap)
-    {
-        delete change.second;
-    }
-    aChangeMap.clear();
 }
 
 
@@ -129,7 +123,7 @@ void XMLRedlineExport::ExportChangesList(
     ChangesMapType::iterator aFind = aChangeMap.find(rText);
     if (aFind != aChangeMap.end())
     {
-        ChangesVectorType* pChangesList = aFind->second;
+        ChangesVectorType* pChangesList = aFind->second.get();
 
         // export only if changes are found
         if (pChangesList->size() > 0)
@@ -160,11 +154,11 @@ void XMLRedlineExport::SetCurrentXText(
         if (aIter == aChangeMap.end())
         {
             ChangesVectorType* pList = new ChangesVectorType;
-            aChangeMap[rText] = pList;
+            aChangeMap[rText].reset( pList );
             pCurrentChangesList = pList;
         }
         else
-            pCurrentChangesList = aIter->second;
+            pCurrentChangesList = aIter->second.get();
     }
     else
     {
diff --git a/xmloff/source/text/XMLRedlineExport.hxx b/xmloff/source/text/XMLRedlineExport.hxx
index 0d7ab3114401..22169d4a0b97 100644
--- a/xmloff/source/text/XMLRedlineExport.hxx
+++ b/xmloff/source/text/XMLRedlineExport.hxx
@@ -25,6 +25,7 @@
 #include <com/sun/star/uno/Sequence.h>
 
 #include <vector>
+#include <memory>
 #include <map>
 
 class SvXMLExport;
@@ -43,7 +44,7 @@ typedef ::std::vector<
 // store a list of redline properties for each XText
 typedef ::std::map<
             css::uno::Reference< css::text::XText>,
-            ChangesVectorType* > ChangesMapType;
+            std::unique_ptr<ChangesVectorType> > ChangesMapType;
 
 
 /**


More information about the Libreoffice-commits mailing list