writerfilter/source/rtftok/rtfsprm.cxx |   34 +++++++++++++++++++++------------
 1 file changed, 22 insertions(+), 12 deletions(-)

New commits:
commit ed71dcc9996c507ecb2bca24f38e09f66134fbfc
Author:     Adrien Ollier <[email protected]>
AuthorDate: Wed Jul 24 05:29:03 2019 +0200
Commit:     Tomaž Vajngerl <[email protected]>
CommitDate: Fri Aug 30 03:56:42 2019 +0200

    RTFSprms: code refactorization
    
    Four lambda expressions were declared doing the same thing,
    which leads to the creation of four internal different
    types for the same thing. That makes no sense.
    Class RTFSprms_compare allows to factorize this code and
    makes code shorter where it is used.
    
    Change-Id: I5ed6821a67a50e96d9425064841c2b3421323001
    Signed-off-by: Adrien Ollier <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/76214
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <[email protected]>

diff --git a/writerfilter/source/rtftok/rtfsprm.cxx 
b/writerfilter/source/rtftok/rtfsprm.cxx
index 6ba986e6b987..5404dd9176ea 100644
--- a/writerfilter/source/rtftok/rtfsprm.cxx
+++ b/writerfilter/source/rtftok/rtfsprm.cxx
@@ -57,14 +57,30 @@ std::string RTFSprm::toString() const
 }
 #endif
 
+namespace
+{
+class RTFSprms_compare
+{
+    Id keyword;
+
+public:
+    RTFSprms_compare(Id kw)
+        : keyword{ kw }
+    {
+    }
+    bool operator()(const std::pair<Id, RTFValue::Pointer_t>& raPair) const
+    {
+        return raPair.first == keyword;
+    }
+};
+}
+
 RTFValue::Pointer_t RTFSprms::find(Id nKeyword, bool bFirst, bool bForWrite)
 {
     if (bForWrite)
         ensureCopyBeforeWrite();
 
-    auto cmp = [&nKeyword](const std::pair<Id, RTFValue::Pointer_t>& raPair) 
-> bool {
-        return raPair.first == nKeyword;
-    };
+    RTFSprms_compare cmp{ nKeyword };
 
     if (bFirst)
     {
@@ -89,9 +105,7 @@ void RTFSprms::set(Id nKeyword, const RTFValue::Pointer_t& 
pValue, RTFOverwrite
 
     if (eOverwrite == RTFOverwrite::YES_PREPEND)
     {
-        auto it = std::remove_if(
-            m_pSprms->begin(), m_pSprms->end(),
-            [nKeyword](const RTFSprms::Entry_t& rSprm) { return rSprm.first == 
nKeyword; });
+        auto it = std::remove_if(m_pSprms->begin(), m_pSprms->end(), 
RTFSprms_compare{ nKeyword });
         m_pSprms->erase(it, m_pSprms->end());
         m_pSprms->insert(m_pSprms->begin(), std::make_pair(nKeyword, pValue));
         return;
@@ -121,9 +135,7 @@ bool RTFSprms::erase(Id nKeyword)
 {
     ensureCopyBeforeWrite();
 
-    auto i = std::find_if(
-        m_pSprms->begin(), m_pSprms->end(),
-        [&nKeyword](RTFSprmsImpl::value_type& rEntry) { return rEntry.first == 
nKeyword; });
+    auto i = std::find_if(m_pSprms->begin(), m_pSprms->end(), 
RTFSprms_compare{ nKeyword });
     if (i != m_pSprms->end())
     {
         m_pSprms->erase(i);
@@ -136,9 +148,7 @@ void RTFSprms::eraseLast(Id nKeyword)
 {
     ensureCopyBeforeWrite();
 
-    auto i = std::find_if(
-        m_pSprms->rbegin(), m_pSprms->rend(),
-        [&nKeyword](RTFSprmsImpl::value_type& rEntry) { return rEntry.first == 
nKeyword; });
+    auto i = std::find_if(m_pSprms->rbegin(), m_pSprms->rend(), 
RTFSprms_compare{ nKeyword });
     if (i != m_pSprms->rend())
         m_pSprms->erase(std::next(i).base());
 }
_______________________________________________
Libreoffice-commits mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to