sc/inc/pch/precompiled_sc.hxx | 1 sc/inc/pch/precompiled_scfilt.hxx | 1 sc/inc/queryparam.hxx | 7 +- sc/source/core/data/dpsave.cxx | 6 +- sc/source/core/data/sortparam.cxx | 2 sc/source/core/data/table3.cxx | 4 - sc/source/core/tool/queryparam.cxx | 95 ++++++++++++++++++++----------------- sc/workben/result.cxx | 20 +++---- sc/workben/result.hxx | 7 +- 9 files changed, 76 insertions(+), 67 deletions(-)
New commits: commit f3e148bda1b46dc6626f27198de757e82b73f6a7 Author: Michael Stahl <mst...@redhat.com> Date: Fri Nov 13 18:41:45 2015 +0100 sc: replace that boost::ptr_vector<Reference<T>*> abomination This looks like dead code anyway? Evidently it didnt' compile like that. Change-Id: Id6500c18d66c6932b24c15b653d992c449e260c4 diff --git a/sc/workben/result.cxx b/sc/workben/result.cxx index 122c2c8..0548630 100644 --- a/sc/workben/result.cxx +++ b/sc/workben/result.cxx @@ -23,7 +23,6 @@ using namespace com::sun::star; -SV_IMPL_PTRARR( XResultListenerArr_Impl, css::uno::Reference< css::sheet::XResultListener >* ); ScAddInResult::ScAddInResult(const String& rStr) : aArg( rStr ), @@ -46,8 +45,8 @@ void ScAddInResult::NewValue() sheet::ResultEvent aEvent( (cppu::OWeakObject*)this, aAny ); - for ( sal_uInt16 n=0; n<aListeners.Count(); n++ ) - (*aListeners[n])->modified( aEvent ); + for (size_t n = 0; n < m_Listeners.size(); ++n) + m_Listeners[n]->modified( aEvent ); } IMPL_LINK_TYPED( ScAddInResult, TimeoutHdl, Timer*, pT, void ) @@ -64,10 +63,9 @@ ScAddInResult::~ScAddInResult() void SAL_CALL ScAddInResult::addResultListener( const css::uno::Reference< css::sheet::XResultListener >& aListener ) throw(css::uno::RuntimeException) { - uno::Reference<sheet::XResultListener> *pObj = new uno::Reference<sheet::XResultListener>( aListener ); - aListeners.Insert( pObj, aListeners.Count() ); + m_Listeners.push_back(uno::Reference<sheet::XResultListener>(aListener)); - if ( aListeners.Count() == 1 ) + if (m_Listeners.size() == 1) { acquire(); // one Ref for all listeners @@ -79,15 +77,13 @@ void SAL_CALL ScAddInResult::removeResultListener( const css::uno::Reference< cs { acquire(); - sal_uInt16 nCount = aListeners.Count(); - for ( sal_uInt16 n=nCount; n--; ) + for (size_t n = m_Listeners.size(); --n; ) { - uno::Reference<sheet::XResultListener> *pObj = aListeners[n]; - if ( *pObj == aListener ) + if (m_Listeners[n] == aListener) { - aListeners.DeleteAndDestroy( n ); + m_Listeners.erase(m_Listeners.begin() + n); - if ( aListeners.Count() == 0 ) + if (m_Listeners.empty()) { nTickCount = 0; //! Test diff --git a/sc/workben/result.hxx b/sc/workben/result.hxx index e0f796a..140a6d1 100644 --- a/sc/workben/result.hxx +++ b/sc/workben/result.hxx @@ -22,20 +22,21 @@ #include <vcl/timer.hxx> #include <rtl/ustring.hxx> -#include <boost/ptr_container/ptr_vector.hpp> #include <com/sun/star/sheet/XVolatileResult.hpp> #include <cppuhelper/implbase.hxx> -typedef boost::ptr_vector<css::uno::Reference< css::sheet::XResultListener >*> XResultListenerArr_Impl; +#include <vector> + +typedef std::vector<css::uno::Reference<css::sheet::XResultListener>> XResultListenerArr_Impl; class ScAddInResult : public cppu::WeakImplHelper< css::sheet::XVolatileResult> { private: String aArg; long nTickCount; - XResultListenerArr_Impl aListeners; + XResultListenerArr_Impl m_Listeners; Timer aTimer; DECL_LINK( TimeoutHdl, Timer* ); commit c0f489818595e50ed7cf01dfabc26c095617b44c Author: Michael Stahl <mst...@redhat.com> Date: Fri Nov 13 18:32:51 2015 +0100 sc: replace boost::ptr_vector with std::vector<std::unique_ptr> Change-Id: I59831588fb7bc7e907fbffb24ddfe068552b6492 diff --git a/sc/inc/pch/precompiled_sc.hxx b/sc/inc/pch/precompiled_sc.hxx index 4a02554..1adfbfa 100644 --- a/sc/inc/pch/precompiled_sc.hxx +++ b/sc/inc/pch/precompiled_sc.hxx @@ -40,7 +40,6 @@ #include <boost/math/special_functions/log1p.hpp> #include <boost/noncopyable.hpp> #include <boost/ptr_container/ptr_map.hpp> -#include <boost/ptr_container/ptr_vector.hpp> #include <memory> #include <cassert> #include <climits> diff --git a/sc/inc/pch/precompiled_scfilt.hxx b/sc/inc/pch/precompiled_scfilt.hxx index 468b070..4fb99bc 100644 --- a/sc/inc/pch/precompiled_scfilt.hxx +++ b/sc/inc/pch/precompiled_scfilt.hxx @@ -21,7 +21,6 @@ #include <boost/bind.hpp> #include <boost/checked_delete.hpp> #include <boost/noncopyable.hpp> -#include <boost/ptr_container/ptr_vector.hpp> #include <memory> #include <cassert> #include <com/sun/star/awt/DeviceInfo.hpp> diff --git a/sc/inc/queryparam.hxx b/sc/inc/queryparam.hxx index 3c96260..c174863 100644 --- a/sc/inc/queryparam.hxx +++ b/sc/inc/queryparam.hxx @@ -23,7 +23,8 @@ #include "global.hxx" #include "types.hxx" -#include <boost/ptr_container/ptr_vector.hpp> +#include <memory> +#include <vector> class SvNumberFormatter; @@ -61,7 +62,7 @@ struct ScQueryParamBase SvNumberFormatter* pFormatter ); protected: - typedef boost::ptr_vector<ScQueryEntry> EntriesType; + typedef std::vector<std::unique_ptr<ScQueryEntry>> EntriesType; public: typedef EntriesType::const_iterator const_iterator; @@ -73,7 +74,7 @@ protected: ScQueryParamBase(); ScQueryParamBase(const ScQueryParamBase& r); - EntriesType maEntries; + EntriesType m_Entries; }; struct ScQueryParamTable diff --git a/sc/source/core/data/dpsave.cxx b/sc/source/core/data/dpsave.cxx index 935aa9c..82d810c 100644 --- a/sc/source/core/data/dpsave.cxx +++ b/sc/source/core/data/dpsave.cxx @@ -1085,9 +1085,9 @@ void ScDPSaveData::SetPosition( ScDPSaveDimension* pDim, long nNew ) { if (pDim == it->get()) { - // Tell ptr_vector to give up ownership of this element. Don't - // delete this instance as it is re-inserted into the container - // later. + // Tell vector<unique_ptr> to give up ownership of this element. + // Don't delete this instance as it is re-inserted into the + // container later. it->release(); m_DimList.erase(it); break; diff --git a/sc/source/core/data/sortparam.cxx b/sc/source/core/data/sortparam.cxx index 7c246cb..0f7c158 100644 --- a/sc/source/core/data/sortparam.cxx +++ b/sc/source/core/data/sortparam.cxx @@ -25,6 +25,8 @@ #include <osl/diagnose.h> +#include <algorithm> + ScSortParam::ScSortParam() { Clear(); diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx index d01f2f2..ee76080 100644 --- a/sc/source/core/data/table3.cxx +++ b/sc/source/core/data/table3.cxx @@ -2620,9 +2620,9 @@ bool ScTable::ValidQuery( long nPos = -1; QueryEvaluator aEval(*pDocument, *this, rParam, pbTestEqualCondition); ScQueryParam::const_iterator it, itBeg = rParam.begin(), itEnd = rParam.end(); - for (it = itBeg; it != itEnd && it->bDoQuery; ++it) + for (it = itBeg; it != itEnd && (*it)->bDoQuery; ++it) { - const ScQueryEntry& rEntry = *it; + const ScQueryEntry& rEntry = **it; SCCOL nCol = static_cast<SCCOL>(rEntry.nField); // We can only handle one single direct query passed as a known pCell, diff --git a/sc/source/core/tool/queryparam.cxx b/sc/source/core/tool/queryparam.cxx index c4e416f..6a90ba2 100644 --- a/sc/source/core/tool/queryparam.cxx +++ b/sc/source/core/tool/queryparam.cxx @@ -23,8 +23,11 @@ #include <svl/sharedstringpool.hxx> #include <svl/zforlist.hxx> +#include <o3tl/make_unique.hxx> #include <osl/diagnose.h> +#include <algorithm> + namespace { const size_t MAXQUERY = 8; @@ -34,17 +37,17 @@ class FindByField : public std::unary_function<ScQueryEntry, bool> SCCOLROW mnField; public: explicit FindByField(SCCOLROW nField) : mnField(nField) {} - bool operator() (const ScQueryEntry& rEntry) const + bool operator() (const std::unique_ptr<ScQueryEntry>& rpEntry) const { - return rEntry.bDoQuery && rEntry.nField == mnField; + return rpEntry->bDoQuery && rpEntry->nField == mnField; } }; struct FindUnused : public std::unary_function<ScQueryEntry, bool> { - bool operator() (const ScQueryEntry& rEntry) const + bool operator() (const std::unique_ptr<ScQueryEntry>& rpEntry) const { - return !rEntry.bDoQuery; + return !rpEntry->bDoQuery; } }; @@ -52,12 +55,12 @@ struct FindUnused : public std::unary_function<ScQueryEntry, bool> ScQueryParamBase::const_iterator ScQueryParamBase::begin() const { - return maEntries.begin(); + return m_Entries.begin(); } ScQueryParamBase::const_iterator ScQueryParamBase::end() const { - return maEntries.end(); + return m_Entries.end(); } ScQueryParamBase::ScQueryParamBase() : @@ -70,14 +73,17 @@ ScQueryParamBase::ScQueryParamBase() : mbRangeLookup(false) { for (size_t i = 0; i < MAXQUERY; ++i) - maEntries.push_back(new ScQueryEntry); + m_Entries.push_back(o3tl::make_unique<ScQueryEntry>()); } -ScQueryParamBase::ScQueryParamBase(const ScQueryParamBase& r) : - bHasHeader(r.bHasHeader), bByRow(r.bByRow), bInplace(r.bInplace), bCaseSens(r.bCaseSens), - bRegExp(r.bRegExp), bDuplicate(r.bDuplicate), mbRangeLookup(r.mbRangeLookup), - maEntries(r.maEntries) +ScQueryParamBase::ScQueryParamBase(const ScQueryParamBase& r) + : bHasHeader(r.bHasHeader), bByRow(r.bByRow), bInplace(r.bInplace), bCaseSens(r.bCaseSens) + , bRegExp(r.bRegExp), bDuplicate(r.bDuplicate), mbRangeLookup(r.mbRangeLookup) { + for (auto const& it : r.m_Entries) + { + m_Entries.push_back(o3tl::make_unique<ScQueryEntry>(*it)); + } } ScQueryParamBase::~ScQueryParamBase() @@ -91,43 +97,43 @@ bool ScQueryParamBase::IsValidFieldIndex() const SCSIZE ScQueryParamBase::GetEntryCount() const { - return maEntries.size(); + return m_Entries.size(); } const ScQueryEntry& ScQueryParamBase::GetEntry(SCSIZE n) const { - return maEntries[n]; + return *m_Entries[n]; } ScQueryEntry& ScQueryParamBase::GetEntry(SCSIZE n) { - return maEntries[n]; + return *m_Entries[n]; } ScQueryEntry& ScQueryParamBase::AppendEntry() { // Find the first unused entry. EntriesType::iterator itr = std::find_if( - maEntries.begin(), maEntries.end(), FindUnused()); + m_Entries.begin(), m_Entries.end(), FindUnused()); - if (itr != maEntries.end()) + if (itr != m_Entries.end()) // Found! - return *itr; + return **itr; // Add a new entry to the end. - maEntries.push_back(new ScQueryEntry); - return maEntries.back(); + m_Entries.push_back(o3tl::make_unique<ScQueryEntry>()); + return *m_Entries.back(); } ScQueryEntry* ScQueryParamBase::FindEntryByField(SCCOLROW nField, bool bNew) { EntriesType::iterator itr = std::find_if( - maEntries.begin(), maEntries.end(), FindByField(nField)); + m_Entries.begin(), m_Entries.end(), FindByField(nField)); - if (itr != maEntries.end()) + if (itr != m_Entries.end()) { // existing entry found! - return &(*itr); + return (*itr).get(); } if (!bNew) @@ -140,15 +146,15 @@ ScQueryEntry* ScQueryParamBase::FindEntryByField(SCCOLROW nField, bool bNew) void ScQueryParamBase::RemoveEntryByField(SCCOLROW nField) { EntriesType::iterator itr = std::find_if( - maEntries.begin(), maEntries.end(), FindByField(nField)); + m_Entries.begin(), m_Entries.end(), FindByField(nField)); - if (itr != maEntries.end()) + if (itr != m_Entries.end()) { - maEntries.erase(itr); - if (maEntries.size() < MAXQUERY) + m_Entries.erase(itr); + if (m_Entries.size() < MAXQUERY) // Make sure that we have at least MAXQUERY number of entries at // all times. - maEntries.push_back(new ScQueryEntry); + m_Entries.push_back(o3tl::make_unique<ScQueryEntry>()); } } @@ -157,17 +163,17 @@ void ScQueryParamBase::Resize(size_t nNew) if (nNew < MAXQUERY) nNew = MAXQUERY; // never less than MAXQUERY - if (nNew < maEntries.size()) + if (nNew < m_Entries.size()) { - size_t n = maEntries.size() - nNew; + size_t n = m_Entries.size() - nNew; for (size_t i = 0; i < n; ++i) - maEntries.pop_back(); + m_Entries.pop_back(); } - else if (nNew > maEntries.size()) + else if (nNew > m_Entries.size()) { - size_t n = nNew - maEntries.size(); + size_t n = nNew - m_Entries.size(); for (size_t i = 0; i < n; ++i) - maEntries.push_back(new ScQueryEntry); + m_Entries.push_back(o3tl::make_unique<ScQueryEntry>()); } } @@ -175,7 +181,7 @@ void ScQueryParamBase::FillInExcelSyntax( svl::SharedStringPool& rPool, const OUString& rStr, SCSIZE nIndex, SvNumberFormatter* pFormatter ) { const OUString aCellStr = rStr; - if (nIndex >= maEntries.size()) + if (nIndex >= m_Entries.size()) Resize(nIndex+1); ScQueryEntry& rEntry = GetEntry(nIndex); @@ -297,9 +303,10 @@ void ScQueryParam::Clear() bHasHeader = bCaseSens = bRegExp = false; bInplace = bByRow = bDuplicate = true; - boost::ptr_vector<ScQueryEntry>::iterator itr = maEntries.begin(), itrEnd = maEntries.end(); - for (; itr != itrEnd; ++itr) + for (auto & itr : m_Entries) + { itr->Clear(); + } ClearDestParams(); } @@ -330,7 +337,11 @@ ScQueryParam& ScQueryParam::operator=( const ScQueryParam& r ) bByRow = r.bByRow; bDestPers = r.bDestPers; - maEntries = r.maEntries.clone(); + m_Entries.clear(); + for (auto const& it : r.m_Entries) + { + m_Entries.push_back(o3tl::make_unique<ScQueryEntry>(*it)); + } return *this; } @@ -345,8 +356,8 @@ bool ScQueryParam::operator==( const ScQueryParam& rOther ) const SCSIZE nEntryCount = GetEntryCount(); SCSIZE nOtherEntryCount = rOther.GetEntryCount(); - while ( nUsed<nEntryCount && maEntries[nUsed].bDoQuery ) ++nUsed; - while ( nOtherUsed<nOtherEntryCount && rOther.maEntries[nOtherUsed].bDoQuery ) + while (nUsed<nEntryCount && m_Entries[nUsed]->bDoQuery) ++nUsed; + while (nOtherUsed<nOtherEntryCount && rOther.m_Entries[nOtherUsed]->bDoQuery) ++nOtherUsed; if ( (nUsed == nOtherUsed) @@ -368,7 +379,7 @@ bool ScQueryParam::operator==( const ScQueryParam& rOther ) const { bEqual = true; for ( SCSIZE i=0; i<nUsed && bEqual; i++ ) - bEqual = maEntries[i] == rOther.maEntries[i]; + bEqual = *m_Entries[i] == *rOther.m_Entries[i]; } return bEqual; } @@ -386,9 +397,9 @@ void ScQueryParam::MoveToDest() nCol2 = sal::static_int_cast<SCCOL>( nCol2 + nDifX ); nRow2 = sal::static_int_cast<SCROW>( nRow2 + nDifY ); nTab = sal::static_int_cast<SCTAB>( nTab + nDifZ ); - size_t n = maEntries.size(); + size_t n = m_Entries.size(); for (size_t i=0; i<n; i++) - maEntries[i].nField += nDifX; + m_Entries[i]->nField += nDifX; bInplace = true; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits