diff options
author | Julien Nabet <serval2412@yahoo.fr> | 2017-10-01 13:41:11 +0200 |
---|---|---|
committer | Julien Nabet <serval2412@yahoo.fr> | 2017-10-01 20:06:47 +0200 |
commit | 05dbd67f5d7bd6611830fc793985b7d5858bf68c (patch) | |
tree | 5f0566342573f89b634b67507849a5e5dd591213 | |
parent | 20bae560c05a3df6e7ce8d4b869ed00f951c1e59 (diff) |
Replace list by vector in macromgr.cxx (sc)
Change-Id: I5b57d4f4a1e0c68fdc56d84392f4b1472a67e82b
Reviewed-on: https://gerrit.libreoffice.org/42992
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
-rw-r--r-- | sc/inc/macromgr.hxx | 2 | ||||
-rw-r--r-- | sc/source/ui/docshell/macromgr.cxx | 31 |
2 files changed, 17 insertions, 16 deletions
diff --git a/sc/inc/macromgr.hxx b/sc/inc/macromgr.hxx index 9906b55d08f9..02156f155ece 100644 --- a/sc/inc/macromgr.hxx +++ b/sc/inc/macromgr.hxx @@ -34,7 +34,7 @@ public: SC_DLLPUBLIC bool GetUserFuncVolatile( const OUString& sName ); void AddDependentCell(const OUString& aModuleName, ScFormulaCell* pCell); - void RemoveDependentCell(ScFormulaCell* pCell); + void RemoveDependentCell(const ScFormulaCell* pCell); void BroadcastModuleUpdate(const OUString& aModuleName); private: diff --git a/sc/source/ui/docshell/macromgr.cxx b/sc/source/ui/docshell/macromgr.cxx index 8ca7185a18c5..29e66cc5f1ab 100644 --- a/sc/source/ui/docshell/macromgr.cxx +++ b/sc/source/ui/docshell/macromgr.cxx @@ -24,14 +24,13 @@ #include <cppuhelper/implbase.hxx> #include <sfx2/objsh.hxx> #include "formulacell.hxx" +#include <vector> #include <com/sun/star/container/XContainer.hpp> -#include <list> - using namespace ::com::sun::star; using ::com::sun::star::uno::RuntimeException; using ::com::sun::star::uno::Reference; -using ::std::list; +using ::std::vector; using ::std::pair; /** @@ -48,7 +47,7 @@ public: if (itr == maCells.end()) { pair<ModuleCellMap::iterator, bool> r = maCells.emplace( - rModuleName, list<ScFormulaCell*>()); + rModuleName, vector<ScFormulaCell*>()); if (!r.second) // insertion failed. @@ -59,31 +58,33 @@ public: itr->second.push_back(pCell); } - void removeCell(ScFormulaCell* pCell) + void removeCell(const ScFormulaCell* pCell) { ModuleCellMap::iterator itr = maCells.begin(), itrEnd = maCells.end(); for (; itr != itrEnd; ++itr) - itr->second.remove(pCell); + { + itr->second.erase(std::remove(itr->second.begin(), itr->second.end(), pCell), itr->second.end() ); + } } - void getCellsByModule(const OUString& rModuleName, list<ScFormulaCell*>& rCells) + void getCellsByModule(const OUString& rModuleName, vector<ScFormulaCell*>& rCells) { ModuleCellMap::iterator itr = maCells.find(rModuleName); if (itr == maCells.end()) return; - list<ScFormulaCell*>& rCellList = itr->second; + vector<ScFormulaCell*>& rCellList = itr->second; // Remove duplicates. - rCellList.sort(); - rCellList.unique(); + std::sort(rCellList.begin(), rCellList.end()); + std::unique(rCellList.begin(), rCellList.end()); // exception safe copy - list<ScFormulaCell*> temp(rCellList); + vector<ScFormulaCell*> temp(rCellList); rCells.swap(temp); } private: - typedef std::unordered_map<OUString, list<ScFormulaCell*>, OUStringHash> ModuleCellMap; + typedef std::unordered_map<OUString, vector<ScFormulaCell*>, OUStringHash> ModuleCellMap; ModuleCellMap maCells; }; @@ -172,16 +173,16 @@ void ScMacroManager::AddDependentCell(const OUString& aModuleName, ScFormulaCell mpDepTracker->addCell(aModuleName, pCell); } -void ScMacroManager::RemoveDependentCell(ScFormulaCell* pCell) +void ScMacroManager::RemoveDependentCell(const ScFormulaCell* pCell) { mpDepTracker->removeCell(pCell); } void ScMacroManager::BroadcastModuleUpdate(const OUString& aModuleName) { - list<ScFormulaCell*> aCells; + vector<ScFormulaCell*> aCells; mpDepTracker->getCellsByModule(aModuleName, aCells); - list<ScFormulaCell*>::iterator itr = aCells.begin(), itrEnd = aCells.end(); + vector<ScFormulaCell*>::iterator itr = aCells.begin(), itrEnd = aCells.end(); for (; itr != itrEnd; ++itr) { ScFormulaCell* pCell = *itr; |