diff options
author | Adrien Ollier <adr.ollier@hotmail.fr> | 2019-08-16 01:52:36 +0200 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2019-09-01 08:10:10 +0200 |
commit | a56f2d01687512d4ecdf5b3df949d909aa8834b6 (patch) | |
tree | bef401154840a35c29816401f4bb176fe7279819 /writerfilter | |
parent | 5ce360777a9c24db61d9f3c5469bd6265b6b7b5b (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.cxx | 54 |
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) |