diff options
author | Michael Stahl <mstahl@redhat.com> | 2015-08-19 17:07:09 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2015-08-19 19:53:28 +0000 |
commit | f15cbf2451d08ccddde9643c9f926a322f9f9917 (patch) | |
tree | 933ec3f719ef52fcbefd1d081e9c862c638d90a3 /sc | |
parent | b5ae7dbc871df57686a603dfa99e8179a0e3a4b8 (diff) |
sc: replace boost::ptr_vector with std::vector<std::unique_ptr>
Change-Id: I2a56ebf8edb30b5f16e09237f9480484a699170e
Reviewed-on: https://gerrit.libreoffice.org/17861
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/inc/dbdata.hxx | 12 | ||||
-rw-r--r-- | sc/source/core/tool/dbdata.cxx | 81 |
2 files changed, 50 insertions, 43 deletions
diff --git a/sc/inc/dbdata.hxx b/sc/inc/dbdata.hxx index 877a7fc0e50d..7508e0f78fbd 100644 --- a/sc/inc/dbdata.hxx +++ b/sc/inc/dbdata.hxx @@ -25,11 +25,11 @@ #include "address.hxx" #include "global.hxx" -#include <boost/ptr_container/ptr_vector.hpp> #include <boost/scoped_ptr.hpp> #include <memory> #include <set> +#include <vector> class ScDocument; struct ScSortParam; @@ -219,9 +219,15 @@ public: */ class AnonDBs { - typedef ::boost::ptr_vector<ScDBData> DBsType; - DBsType maDBs; + typedef ::std::vector<std::unique_ptr<ScDBData>> DBsType; + DBsType m_DBs; + + AnonDBs& operator=(AnonDBs const&) = delete; + public: + AnonDBs(); + AnonDBs(AnonDBs const&); + typedef DBsType::iterator iterator; typedef DBsType::const_iterator const_iterator; diff --git a/sc/source/core/tool/dbdata.cxx b/sc/source/core/tool/dbdata.cxx index 4857b18c94aa..2c1f20791d2b 100644 --- a/sc/source/core/tool/dbdata.cxx +++ b/sc/source/core/tool/dbdata.cxx @@ -19,7 +19,6 @@ #include <sal/config.h> -#include <o3tl/ptr_container.hxx> #include <unotools/transliterationwrapper.hxx> #include "dbdata.hxx" @@ -656,16 +655,16 @@ sal_Int32 ScDBData::GetColumnNameOffset( const OUString& rName ) const namespace { -class FindByTable : public unary_function<ScDBData, bool> +class FindByTable : public unary_function<std::unique_ptr<ScDBData>, bool> { SCTAB mnTab; public: FindByTable(SCTAB nTab) : mnTab(nTab) {} - bool operator() (const ScDBData& r) const + bool operator() (std::unique_ptr<ScDBData> const& p) const { ScRange aRange; - r.GetArea(aRange); + p->GetArea(aRange); return aRange.aStart.Tab() == mnTab; } }; @@ -694,10 +693,6 @@ public: mnCol2(nCol2), mnRow2(nRow2), mnTab2(nTab2), mnDx(nDx), mnDy(nDy), mnDz(nDz) {} - void operator() (ScDBData& r) - { - r.UpdateReference(mpDoc, meMode, mnCol1, mnRow1, mnTab1, mnCol2, mnRow2, mnTab2, mnDx, mnDy, mnDz); - } void operator() (std::unique_ptr<ScDBData> const& p) { p->UpdateReference(mpDoc, meMode, mnCol1, mnRow1, mnTab1, mnCol2, mnRow2, mnTab2, mnDx, mnDy, mnDz); @@ -710,10 +705,6 @@ class UpdateMoveTabFunc : public unary_function<std::unique_ptr<ScDBData>, void> SCTAB mnNewTab; public: UpdateMoveTabFunc(SCTAB nOld, SCTAB nNew) : mnOldTab(nOld), mnNewTab(nNew) {} - void operator() (ScDBData& r) - { - r.UpdateMoveTab(mnOldTab, mnNewTab); - } void operator() (std::unique_ptr<ScDBData> const& p) { p->UpdateMoveTab(mnOldTab, mnNewTab); @@ -730,10 +721,6 @@ public: FindByCursor(SCCOL nCol, SCROW nRow, SCTAB nTab, bool bStartOnly) : mnCol(nCol), mnRow(nRow), mnTab(nTab), mbStartOnly(bStartOnly) {} - bool operator() (const ScDBData& r) - { - return r.IsDBAtCursor(mnCol, mnRow, mnTab, mbStartOnly); - } bool operator() (std::unique_ptr<ScDBData> const& p) { return p->IsDBAtCursor(mnCol, mnRow, mnTab, mbStartOnly); @@ -746,11 +733,6 @@ class FindByRange : public unary_function<std::unique_ptr<ScDBData>, bool> public: FindByRange(const ScRange& rRange) : mrRange(rRange) {} - bool operator() (const ScDBData& r) - { - return r.IsDBAtArea( - mrRange.aStart.Tab(), mrRange.aStart.Col(), mrRange.aStart.Row(), mrRange.aEnd.Col(), mrRange.aEnd.Row()); - } bool operator() (std::unique_ptr<ScDBData> const& p) { return p->IsDBAtArea( @@ -780,14 +762,14 @@ public: } }; -class FindByPointer : public unary_function<ScDBData, bool> +class FindByPointer : public unary_function<std::unique_ptr<ScDBData>, bool> { const ScDBData* mpDBData; public: FindByPointer(const ScDBData* pDBData) : mpDBData(pDBData) {} - bool operator() (const ScDBData& r) const + bool operator() (std::unique_ptr<ScDBData> const& p) const { - return &r == mpDBData; + return p.get() == mpDBData; } }; @@ -884,42 +866,42 @@ bool ScDBCollection::NamedDBs::operator== (const NamedDBs& r) const ScDBCollection::AnonDBs::iterator ScDBCollection::AnonDBs::begin() { - return maDBs.begin(); + return m_DBs.begin(); } ScDBCollection::AnonDBs::iterator ScDBCollection::AnonDBs::end() { - return maDBs.end(); + return m_DBs.end(); } ScDBCollection::AnonDBs::const_iterator ScDBCollection::AnonDBs::begin() const { - return maDBs.begin(); + return m_DBs.begin(); } ScDBCollection::AnonDBs::const_iterator ScDBCollection::AnonDBs::end() const { - return maDBs.end(); + return m_DBs.end(); } const ScDBData* ScDBCollection::AnonDBs::findAtCursor(SCCOL nCol, SCROW nRow, SCTAB nTab, bool bStartOnly) const { DBsType::const_iterator itr = find_if( - maDBs.begin(), maDBs.end(), FindByCursor(nCol, nRow, nTab, bStartOnly)); - return itr == maDBs.end() ? NULL : &(*itr); + m_DBs.begin(), m_DBs.end(), FindByCursor(nCol, nRow, nTab, bStartOnly)); + return itr == m_DBs.end() ? nullptr : itr->get(); } const ScDBData* ScDBCollection::AnonDBs::findByRange(const ScRange& rRange) const { DBsType::const_iterator itr = find_if( - maDBs.begin(), maDBs.end(), FindByRange(rRange)); - return itr == maDBs.end() ? NULL : &(*itr); + m_DBs.begin(), m_DBs.end(), FindByRange(rRange)); + return itr == m_DBs.end() ? nullptr : itr->get(); } void ScDBCollection::AnonDBs::deleteOnTab(SCTAB nTab) { FindByTable func(nTab); - maDBs.erase_if(func); + m_DBs.erase(std::remove_if(m_DBs.begin(), m_DBs.end(), func), m_DBs.end()); } ScDBData* ScDBCollection::AnonDBs::getByRange(const ScRange& rRange) @@ -933,30 +915,49 @@ ScDBData* ScDBCollection::AnonDBs::getByRange(const ScRange& rRange) aName, rRange.aStart.Tab(), rRange.aStart.Col(), rRange.aStart.Row(), rRange.aEnd.Col(), rRange.aEnd.Row(), true, false, false)); pData = pNew.get(); - o3tl::ptr_container::push_back(maDBs, std::move(pNew)); + m_DBs.push_back(std::move(pNew)); } return const_cast<ScDBData*>(pData); } void ScDBCollection::AnonDBs::insert(ScDBData* p) { - ::std::unique_ptr<ScDBData> pNew(p); - o3tl::ptr_container::push_back(maDBs, std::move(pNew)); + m_DBs.push_back(std::unique_ptr<ScDBData>(p)); } bool ScDBCollection::AnonDBs::empty() const { - return maDBs.empty(); + return m_DBs.empty(); } bool ScDBCollection::AnonDBs::has( const ScDBData* p ) const { - return find_if( maDBs.begin(), maDBs.end(), FindByPointer(p)) != maDBs.end(); + return find_if(m_DBs.begin(), m_DBs.end(), FindByPointer(p)) != m_DBs.end(); } bool ScDBCollection::AnonDBs::operator== (const AnonDBs& r) const { - return maDBs == r.maDBs; + if (m_DBs.size() != r.m_DBs.size()) + return false; + for (auto iter1 = begin(), iter2 = r.begin(); iter1 != end(); ++iter1, ++iter2) + { + if (**iter1 != **iter2) + return false; + } + return true; +} + +ScDBCollection::AnonDBs::AnonDBs() +{ +} + +ScDBCollection::AnonDBs::AnonDBs(AnonDBs const& r) +{ + m_DBs.reserve(r.m_DBs.size()); + for (auto const& it : r.m_DBs) + { + m_DBs.push_back(std::unique_ptr<ScDBData>(new ScDBData(*it))); + } } ScDBCollection::ScDBCollection(ScDocument* pDocument) : @@ -1080,7 +1081,7 @@ void ScDBCollection::DeleteOnTab( SCTAB nTab ) NamedDBs::DBsType::iterator itr = maNamedDBs.begin(), itrEnd = maNamedDBs.end(); for (; itr != itrEnd; ++itr) { - if (func(**itr)) + if (func(*itr)) v.push_back(itr); } } |