summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorAdrien Ollier <adr.ollier@hotmail.fr>2019-08-16 01:52:36 +0200
committerMike Kaganski <mike.kaganski@collabora.com>2019-09-01 08:10:10 +0200
commita56f2d01687512d4ecdf5b3df949d909aa8834b6 (patch)
treebef401154840a35c29816401f4bb176fe7279819 /writerfilter
parent5ce360777a9c24db61d9f3c5469bd6265b6b7b5b (diff)
makes RTFSprms::set clearer
Change-Id: Ic1aab40c8a4abdd73c616b2faaf95ef183fa2e38 Signed-off-by: Adrien Ollier <adr.ollier@hotmail.fr> Reviewed-on: https://gerrit.libreoffice.org/77556 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/rtftok/rtfsprm.cxx54
1 files changed, 30 insertions, 24 deletions
diff --git a/writerfilter/source/rtftok/rtfsprm.cxx b/writerfilter/source/rtftok/rtfsprm.cxx
index 5404dd9176ea..76838e3aa620 100644
--- a/writerfilter/source/rtftok/rtfsprm.cxx
+++ b/writerfilter/source/rtftok/rtfsprm.cxx
@@ -103,32 +103,38 @@ void RTFSprms::set(Id nKeyword, const RTFValue::Pointer_t& pValue, RTFOverwrite
{
ensureCopyBeforeWrite();
- if (eOverwrite == RTFOverwrite::YES_PREPEND)
+ switch (eOverwrite)
{
- 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;
- }
-
- bool bFound = false;
- if (eOverwrite == RTFOverwrite::YES || eOverwrite == RTFOverwrite::NO_IGNORE)
- {
- for (auto& rSprm : *m_pSprms)
- if (rSprm.first == nKeyword)
- {
- if (eOverwrite == RTFOverwrite::YES)
- {
- rSprm.second = pValue;
- return;
- }
-
- bFound = true;
- break;
- }
+ case RTFOverwrite::YES_PREPEND:
+ {
+ m_pSprms->erase(
+ std::remove_if(m_pSprms->begin(), m_pSprms->end(), RTFSprms_compare{ nKeyword }),
+ m_pSprms->end());
+ m_pSprms->emplace(m_pSprms->cbegin(), nKeyword, pValue);
+ break;
+ }
+ case RTFOverwrite::YES:
+ {
+ auto it
+ = std::find_if(m_pSprms->begin(), m_pSprms->end(), RTFSprms_compare{ nKeyword });
+ if (it != m_pSprms->end())
+ it->second = pValue;
+ else
+ m_pSprms->emplace_back(nKeyword, pValue);
+ break;
+ }
+ case RTFOverwrite::NO_IGNORE:
+ {
+ if (std::none_of(m_pSprms->cbegin(), m_pSprms->cend(), RTFSprms_compare{ nKeyword }))
+ m_pSprms->emplace_back(nKeyword, pValue);
+ break;
+ }
+ case RTFOverwrite::NO_APPEND:
+ {
+ m_pSprms->emplace_back(nKeyword, pValue);
+ break;
+ }
}
- if (eOverwrite == RTFOverwrite::NO_APPEND || !bFound)
- m_pSprms->push_back(std::make_pair(nKeyword, pValue));
}
bool RTFSprms::erase(Id nKeyword)