sc/inc/chartarr.hxx | 8 ++- sc/inc/colorscale.hxx | 11 +++- sc/inc/formulagroup.hxx | 10 ++-- sc/qa/unit/ucalc.cxx | 7 +-- sc/source/core/data/colorscale.cxx | 57 +++++++++++++++---------- sc/source/core/data/column2.cxx | 33 ++++++++------ sc/source/core/data/fillinfo.cxx | 2 sc/source/core/tool/chartarr.cxx | 34 +++++++++----- sc/source/core/tool/formulagroup.cxx | 13 +++-- sc/source/filter/excel/xecontent.cxx | 3 - sc/source/filter/excel/xeextlst.cxx | 2 sc/source/filter/oox/condformatbuffer.cxx | 2 sc/source/filter/xml/xmlcondformat.cxx | 2 sc/source/filter/xml/xmlexprt.cxx | 3 - sc/source/ui/condformat/condformatdlgentry.cxx | 7 +-- sc/source/ui/unoobj/condformatuno.cxx | 8 +-- 16 files changed, 119 insertions(+), 83 deletions(-)
New commits: commit 8e36027e2768b4d9d7c8beff864a557c450184ca Author: Michael Stahl <mst...@redhat.com> Date: Sat Nov 7 00:20:26 2015 +0100 sc: replace boost::ptr_vector with std::vector<std::unique_ptr> Change-Id: Id80f6d6be9f5cb15448ea00299b8e371ccd812ee diff --git a/sc/inc/colorscale.hxx b/sc/inc/colorscale.hxx index 43a1998..a8d9f1f 100644 --- a/sc/inc/colorscale.hxx +++ b/sc/inc/colorscale.hxx @@ -10,7 +10,6 @@ #ifndef INCLUDED_SC_INC_COLORSCALE_HXX #define INCLUDED_SC_INC_COLORSCALE_HXX -#include <boost/ptr_container/ptr_vector.hpp> #include <formula/grammar.hxx> #include <tools/color.hxx> #include "rangelst.hxx" @@ -334,7 +333,8 @@ struct ScIconSetFormatData * Specifies whether the icons should be shown in reverse order */ bool mbReverse; - boost::ptr_vector<ScColorScaleEntry> maEntries; + typedef std::vector<std::unique_ptr<ScColorScaleEntry>> Entries_t; + Entries_t m_Entries; bool mbCustom; // the std::pair points to exactly one image // std..pair::second == -1 means no image @@ -346,6 +346,9 @@ struct ScIconSetFormatData mbReverse(false), mbCustom(false) {} + + ScIconSetFormatData(ScIconSetFormatData const&); + ScIconSetFormatData& operator=(ScIconSetFormatData const&) = delete; //TODO? }; class SC_DLLPUBLIC ScIconSetFormat : public ScColorFormat @@ -374,8 +377,8 @@ public: static ScIconSetMap* getIconSetMap(); static BitmapEx& getBitmap( ScIconSetType eType, sal_Int32 nIndex ); - typedef boost::ptr_vector<ScColorScaleEntry>::iterator iterator; - typedef boost::ptr_vector<ScColorScaleEntry>::const_iterator const_iterator; + typedef ScIconSetFormatData::Entries_t::iterator iterator; + typedef ScIconSetFormatData::Entries_t::const_iterator const_iterator; iterator begin(); const_iterator begin() const; diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index 169f03d..3562228 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -70,6 +70,7 @@ #include <formula/IFunctionDescription.hxx> +#include <o3tl/make_unique.hxx> #include <basegfx/polygon/b2dpolygon.hxx> #include <editeng/boxitem.hxx> #include <editeng/brushitem.hxx> @@ -5946,9 +5947,9 @@ void Test::testIconSet() ScIconSetFormat* pEntry = new ScIconSetFormat(m_pDoc); ScIconSetFormatData* pData = new ScIconSetFormatData; - pData->maEntries.push_back(new ScColorScaleEntry(0, COL_BLUE)); - pData->maEntries.push_back(new ScColorScaleEntry(1, COL_GREEN)); - pData->maEntries.push_back(new ScColorScaleEntry(2, COL_RED)); + pData->m_Entries.push_back(o3tl::make_unique<ScColorScaleEntry>(0, COL_BLUE)); + pData->m_Entries.push_back(o3tl::make_unique<ScColorScaleEntry>(1, COL_GREEN)); + pData->m_Entries.push_back(o3tl::make_unique<ScColorScaleEntry>(2, COL_RED)); pEntry->SetIconSetData(pData); m_pDoc->AddCondFormatData(pFormat->GetRange(), 0, 1); diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx index c346f73..74e4e33 100644 --- a/sc/source/core/data/colorscale.cxx +++ b/sc/source/core/data/colorscale.cxx @@ -17,6 +17,7 @@ #include "refupdatecontext.hxx" #include <formula/token.hxx> +#include <o3tl/make_unique.hxx> #include <algorithm> @@ -925,6 +926,20 @@ void ScDataBarFormat::EnsureSize() } } +ScIconSetFormatData::ScIconSetFormatData(ScIconSetFormatData const& rOther) + : eIconSetType(rOther.eIconSetType) + , mbShowValue(rOther.mbShowValue) + , mbReverse(rOther.mbReverse) + , mbCustom(rOther.mbCustom) + , maCustomVector(rOther.maCustomVector) +{ + m_Entries.reserve(rOther.m_Entries.size()); + for (auto const& it : rOther.m_Entries) + { + m_Entries.push_back(o3tl::make_unique<ScColorScaleEntry>(*it)); + } +} + ScIconSetFormat::ScIconSetFormat(ScDocument* pDoc): ScColorFormat(pDoc), mpFormatData(new ScIconSetFormatData) @@ -973,7 +988,7 @@ ScIconSetInfo* ScIconSetFormat::GetIconSetInfo(const ScAddress& rAddr) const // now we have for sure a value double nVal = mpDoc->GetValue(rAddr); - if (mpFormatData->maEntries.size() < 2) + if (mpFormatData->m_Entries.size() < 2) return NULL; double nMin = GetMinValue(); @@ -1002,7 +1017,7 @@ ScIconSetInfo* ScIconSetFormat::GetIconSetInfo(const ScAddress& rAddr) const if(mpFormatData->mbReverse) { - sal_Int32 nMaxIndex = mpFormatData->maEntries.size() - 1; + sal_Int32 nMaxIndex = mpFormatData->m_Entries.size() - 1; nIndex = nMaxIndex - nIndex; } @@ -1038,7 +1053,7 @@ void ScIconSetFormat::UpdateReference( sc::RefUpdateContext& rCxt ) { for(iterator itr = begin(); itr != end(); ++itr) { - itr->UpdateReference(rCxt); + (*itr)->UpdateReference(rCxt); } } @@ -1046,7 +1061,7 @@ void ScIconSetFormat::UpdateInsertTab( sc::RefUpdateInsertTabContext& rCxt ) { for(iterator itr = begin(); itr != end(); ++itr) { - itr->UpdateInsertTab(rCxt); + (*itr)->UpdateInsertTab(rCxt); } } @@ -1054,7 +1069,7 @@ void ScIconSetFormat::UpdateDeleteTab( sc::RefUpdateDeleteTabContext& rCxt ) { for(iterator itr = begin(); itr != end(); ++itr) { - itr->UpdateDeleteTab(rCxt); + (*itr)->UpdateDeleteTab(rCxt); } } @@ -1062,7 +1077,7 @@ void ScIconSetFormat::UpdateMoveTab( sc::RefUpdateMoveTabContext& rCxt ) { for(iterator itr = begin(); itr != end(); ++itr) { - itr->UpdateMoveTab(rCxt); + (*itr)->UpdateMoveTab(rCxt); } } @@ -1070,7 +1085,7 @@ bool ScIconSetFormat::NeedsRepaint() const { for(const_iterator itr = begin(); itr != end(); ++itr) { - if(itr->NeedsRepaint()) + if ((*itr)->NeedsRepaint()) return true; } @@ -1079,30 +1094,30 @@ bool ScIconSetFormat::NeedsRepaint() const ScIconSetFormat::iterator ScIconSetFormat::begin() { - return mpFormatData->maEntries.begin(); + return mpFormatData->m_Entries.begin(); } ScIconSetFormat::const_iterator ScIconSetFormat::begin() const { - return mpFormatData->maEntries.begin(); + return mpFormatData->m_Entries.begin(); } ScIconSetFormat::iterator ScIconSetFormat::end() { - return mpFormatData->maEntries.end(); + return mpFormatData->m_Entries.end(); } ScIconSetFormat::const_iterator ScIconSetFormat::end() const { - return mpFormatData->maEntries.end(); + return mpFormatData->m_Entries.end(); } double ScIconSetFormat::GetMinValue() const { const_iterator itr = begin(); - if(itr->GetType() == COLORSCALE_VALUE || itr->GetType() == COLORSCALE_FORMULA) - return itr->GetValue(); + if ((*itr)->GetType() == COLORSCALE_VALUE || (*itr)->GetType() == COLORSCALE_FORMULA) + return (*itr)->GetValue(); else { return getMinValue(); @@ -1111,10 +1126,10 @@ double ScIconSetFormat::GetMinValue() const double ScIconSetFormat::GetMaxValue() const { - boost::ptr_vector<ScColorScaleEntry>::const_reverse_iterator itr = mpFormatData->maEntries.rbegin(); + auto const itr = mpFormatData->m_Entries.rbegin(); - if(itr->GetType() == COLORSCALE_VALUE || itr->GetType() == COLORSCALE_FORMULA) - return itr->GetValue(); + if ((*itr)->GetType() == COLORSCALE_VALUE || (*itr)->GetType() == COLORSCALE_FORMULA) + return (*itr)->GetValue(); else { return getMaxValue(); @@ -1123,10 +1138,10 @@ double ScIconSetFormat::GetMaxValue() const double ScIconSetFormat::CalcValue(double nMin, double nMax, ScIconSetFormat::const_iterator& itr) const { - switch(itr->GetType()) + switch ((*itr)->GetType()) { case COLORSCALE_PERCENT: - return nMin + (nMax-nMin)*(itr->GetValue()/100); + return nMin + (nMax-nMin)*((*itr)->GetValue()/100); case COLORSCALE_MIN: return nMin; case COLORSCALE_MAX: @@ -1138,7 +1153,7 @@ double ScIconSetFormat::CalcValue(double nMin, double nMax, ScIconSetFormat::con return rValues[0]; else { - double fPercentile = itr->GetValue()/100.0; + double fPercentile = (*itr)->GetValue()/100.0; return GetPercentile(rValues, fPercentile); } } @@ -1147,7 +1162,7 @@ double ScIconSetFormat::CalcValue(double nMin, double nMax, ScIconSetFormat::con break; } - return itr->GetValue(); + return (*itr)->GetValue(); } namespace { @@ -1187,7 +1202,7 @@ ScIconSetMap* ScIconSetFormat::getIconSetMap() size_t ScIconSetFormat::size() const { - return mpFormatData->maEntries.size(); + return mpFormatData->m_Entries.size(); } diff --git a/sc/source/core/data/fillinfo.cxx b/sc/source/core/data/fillinfo.cxx index e0e2623..cd1d412 100644 --- a/sc/source/core/data/fillinfo.cxx +++ b/sc/source/core/data/fillinfo.cxx @@ -42,6 +42,8 @@ #include "cellvalue.hxx" #include "mtvcellfunc.hxx" +#include <boost/ptr_container/ptr_vector.hpp> + const sal_uInt16 ROWINFO_MAX = 1024; enum FillInfoLinePos diff --git a/sc/source/filter/excel/xecontent.cxx b/sc/source/filter/excel/xecontent.cxx index f98c3ca..d94bf88 100644 --- a/sc/source/filter/excel/xecontent.cxx +++ b/sc/source/filter/excel/xecontent.cxx @@ -1387,8 +1387,7 @@ XclExpIconSet::XclExpIconSet( const XclExpRoot& rRoot, const ScIconSetFormat& rF { const ScRange* pRange = rFormat.GetRange().front(); ScAddress aAddr = pRange->aStart; - for(ScIconSetFormat::const_iterator itr = rFormat.begin(); - itr != rFormat.end(); ++itr) + for (auto const& itr : rFormat) { // exact position is not important, we allow only absolute refs diff --git a/sc/source/filter/excel/xeextlst.cxx b/sc/source/filter/excel/xeextlst.cxx index 79bf523..ec6e8df 100644 --- a/sc/source/filter/excel/xeextlst.cxx +++ b/sc/source/filter/excel/xeextlst.cxx @@ -217,7 +217,7 @@ XclExpExtIconSet::XclExpExtIconSet(const XclExpRoot& rRoot, const ScIconSetForma XclExpRoot(rRoot) { const ScIconSetFormatData& rData = *rFormat.GetIconSetData(); - for (auto itr = rData.maEntries.begin(); itr != rData.maEntries.end(); ++itr) + for (auto const& itr : rData.m_Entries) { maCfvos.AppendNewRecord(new XclExpExtCfvo(*this, *itr, rPos, false)); } diff --git a/sc/source/filter/oox/condformatbuffer.cxx b/sc/source/filter/oox/condformatbuffer.cxx index 79ba6ea..c8cdc4a 100644 --- a/sc/source/filter/oox/condformatbuffer.cxx +++ b/sc/source/filter/oox/condformatbuffer.cxx @@ -406,7 +406,7 @@ void IconSetRule::SetData( ScIconSetFormat* pFormat, ScDocument* pDoc, const ScA for(size_t i = 0; i < maEntries.size(); ++i) { ScColorScaleEntry* pModelEntry = ConvertToModel( maEntries[i], pDoc, rPos ); - mxFormatData->maEntries.push_back(pModelEntry); + mxFormatData->m_Entries.push_back(std::unique_ptr<ScColorScaleEntry>(pModelEntry)); } mxFormatData->eIconSetType = getType(maIconSetType); diff --git a/sc/source/filter/xml/xmlcondformat.cxx b/sc/source/filter/xml/xmlcondformat.cxx index 28744a5..2d6884b 100644 --- a/sc/source/filter/xml/xmlcondformat.cxx +++ b/sc/source/filter/xml/xmlcondformat.cxx @@ -390,7 +390,7 @@ SvXMLImportContext* ScXMLIconSetFormatContext::CreateChildContext( sal_uInt16 nP { ScColorScaleEntry* pEntry(0); pContext = new ScXMLFormattingEntryContext( GetScImport(), nPrefix, rLocalName, xAttrList, pEntry ); - mpFormatData->maEntries.push_back(pEntry); + mpFormatData->m_Entries.push_back(std::unique_ptr<ScColorScaleEntry>(pEntry)); } break; default: diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx index d71b4b3..e06e29f 100644 --- a/sc/source/filter/xml/xmlexprt.cxx +++ b/sc/source/filter/xml/xmlexprt.cxx @@ -4400,8 +4400,7 @@ void ScXMLExport::ExportConditionalFormat(SCTAB nTab) SvXMLElementExport aElementColorScale(*this, XML_NAMESPACE_CALC_EXT, XML_ICON_SET, true, true); if(!mrIconSet.GetIconSetData()->mbShowValue) AddAttribute(XML_NAMESPACE_CALC_EXT, XML_SHOW_VALUE, XML_FALSE); - for(ScIconSetFormat::const_iterator it = mrIconSet.begin(); - it != mrIconSet.end(); ++it) + for (auto const& it : mrIconSet) { if(it->GetType() == COLORSCALE_FORMULA) { diff --git a/sc/source/ui/condformat/condformatdlgentry.cxx b/sc/source/ui/condformat/condformatdlgentry.cxx index 4c995bf..b6318a2 100644 --- a/sc/source/ui/condformat/condformatdlgentry.cxx +++ b/sc/source/ui/condformat/condformatdlgentry.cxx @@ -1523,10 +1523,11 @@ ScIconSetFrmtEntry::ScIconSetFrmtEntry( vcl::Window* pParent, ScDocument* pDoc, sal_Int32 nType = static_cast<sal_Int32>(eType); maLbIconSetType->SelectEntryPos(nType); - for(size_t i = 0, n = pIconSetFormatData->maEntries.size(); + for (size_t i = 0, n = pIconSetFormatData->m_Entries.size(); i < n; ++i) { - maEntries.push_back( VclPtr<ScIconSetFrmtDataEntry>::Create( this, eType, pDoc, i, &pIconSetFormatData->maEntries[i] ) ); + maEntries.push_back( VclPtr<ScIconSetFrmtDataEntry>::Create( + this, eType, pDoc, i, pIconSetFormatData->m_Entries[i].get())); Point aPos = maEntries[0]->GetPosPixel(); aPos.Y() += maEntries[0]->GetSizePixel().Height() * i * 1.2; maEntries[i]->SetPosPixel( aPos ); @@ -1625,7 +1626,7 @@ ScFormatEntry* ScIconSetFrmtEntry::GetEntry() const for(ScIconSetFrmtDataEntriesType::const_iterator itr = maEntries.begin(), itrEnd = maEntries.end(); itr != itrEnd; ++itr) { - pData->maEntries.push_back((*itr)->CreateEntry(mpDoc, maPos)); + pData->m_Entries.push_back(std::unique_ptr<ScColorScaleEntry>((*itr)->CreateEntry(mpDoc, maPos))); } pFormat->SetIconSetData(pData); diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx index 2626c74..e561ddf 100644 --- a/sc/source/ui/unoobj/condformatuno.cxx +++ b/sc/source/ui/unoobj/condformatuno.cxx @@ -1596,7 +1596,7 @@ void setIconSetEntry(ScIconSetFormat* pFormat, uno::Reference<sheet::XIconSetEnt if (!bFound) throw lang::IllegalArgumentException(); - pData->maEntries[nPos].SetType(eType); + pData->m_Entries[nPos]->SetType(eType); switch (eType) { case COLORSCALE_FORMULA: @@ -1605,7 +1605,7 @@ void setIconSetEntry(ScIconSetFormat* pFormat, uno::Reference<sheet::XIconSetEnt default: { double nVal = xEntry->getFormula().toDouble(); - pData->maEntries[nPos].SetValue(nVal); + pData->m_Entries[nPos]->SetValue(nVal); } break; } @@ -1786,10 +1786,10 @@ ScIconSetEntryObj::~ScIconSetEntryObj() ScColorScaleEntry* ScIconSetEntryObj::getCoreObject() { ScIconSetFormat* pFormat = mxParent->getCoreObject(); - if (pFormat->GetIconSetData()->maEntries.size() <= mnPos) + if (pFormat->GetIconSetData()->m_Entries.size() <= mnPos) throw lang::IllegalArgumentException(); - return &pFormat->GetIconSetData()->maEntries[mnPos]; + return pFormat->GetIconSetData()->m_Entries[mnPos].get(); } sal_Int32 ScIconSetEntryObj::getType() commit a3e410a043f42e70836ca564a5cccdd12664b457 Author: Michael Stahl <mst...@redhat.com> Date: Fri Nov 6 23:50:59 2015 +0100 sc: replace boost::ptr_vector with std::vector<std::unique_ptr> Change-Id: Ic1a44ef591e0d23bbd6574b232370b2888335ebf diff --git a/sc/inc/chartarr.hxx b/sc/inc/chartarr.hxx index 0a60e40..0cd54ed 100644 --- a/sc/inc/chartarr.hxx +++ b/sc/inc/chartarr.hxx @@ -23,7 +23,8 @@ #include "rangelst.hxx" #include "chartpos.hxx" -#include <boost/ptr_container/ptr_vector.hpp> +#include <memory> +#include <vector> class ScDocument; @@ -90,8 +91,9 @@ public: class ScChartCollection { - typedef ::boost::ptr_vector<ScChartArray> DataType; - DataType maData; + typedef ::std::vector<std::unique_ptr<ScChartArray>> DataType; + DataType m_Data; + public: ScChartCollection(); ScChartCollection(const ScChartCollection& rColl); diff --git a/sc/source/core/tool/chartarr.cxx b/sc/source/core/tool/chartarr.cxx index 0a9076c..edfa4ed 100644 --- a/sc/source/core/tool/chartarr.cxx +++ b/sc/source/core/tool/chartarr.cxx @@ -29,6 +29,9 @@ #include "formulacell.hxx" #include "docoptio.hxx" +#include <comphelper/stl_types.hxx> +#include <o3tl/make_unique.hxx> + #include <vector> using ::std::vector; @@ -419,46 +422,51 @@ ScMemChart* ScChartArray::CreateMemChartMulti() } ScChartCollection::ScChartCollection() {} -ScChartCollection::ScChartCollection(const ScChartCollection& r) : - maData(r.maData) {} +ScChartCollection::ScChartCollection(const ScChartCollection& r) +{ + for (auto const& it : r.m_Data) + { + m_Data.push_back(o3tl::make_unique<ScChartArray>(*it)); + } +} void ScChartCollection::push_back(ScChartArray* p) { - maData.push_back(p); + m_Data.push_back(std::unique_ptr<ScChartArray>(p)); } void ScChartCollection::clear() { - maData.clear(); + m_Data.clear(); } size_t ScChartCollection::size() const { - return maData.size(); + return m_Data.size(); } bool ScChartCollection::empty() const { - return maData.empty(); + return m_Data.empty(); } ScChartArray* ScChartCollection::operator[](size_t nIndex) { - if (maData.size() <= nIndex) - return NULL; - return &maData[nIndex]; + if (m_Data.size() <= nIndex) + return nullptr; + return m_Data[nIndex].get(); } const ScChartArray* ScChartCollection::operator[](size_t nIndex) const { - if (maData.size() <= nIndex) - return NULL; - return &maData[nIndex]; + if (m_Data.size() <= nIndex) + return nullptr; + return m_Data[nIndex].get(); } bool ScChartCollection::operator==(const ScChartCollection& rCmp) const { - return maData == rCmp.maData; + return ::comphelper::ContainerUniquePtrEquals(m_Data, rCmp.m_Data); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 3b49489707447cca30c7bcb54e9bfc6ffc9ab2e1 Author: Michael Stahl <mst...@redhat.com> Date: Fri Nov 6 23:44:31 2015 +0100 sc: replace boost::ptr_vector with std::vector<std::unique_ptr> Change-Id: I1929d105d46c373c40d1f53e7d933435118737d4 diff --git a/sc/inc/formulagroup.hxx b/sc/inc/formulagroup.hxx index 15c2a60..2e18cce 100644 --- a/sc/inc/formulagroup.hxx +++ b/sc/inc/formulagroup.hxx @@ -28,7 +28,6 @@ #include <unordered_map> #include <vector> #include <boost/noncopyable.hpp> -#include <boost/ptr_container/ptr_vector.hpp> class ScDocument; class ScTokenArray; @@ -59,7 +58,7 @@ struct FormulaGroupContext : boost::noncopyable typedef std::vector<double, DoubleAllocType> NumArrayType; typedef std::vector<rtl_uString*> StrArrayType; typedef std::vector<std::unique_ptr<NumArrayType>> NumArrayStoreType; - typedef boost::ptr_vector<StrArrayType> StrArrayStoreType; + typedef std::vector<std::unique_ptr<StrArrayType>> StrArrayStoreType; struct ColKey { @@ -89,7 +88,7 @@ struct FormulaGroupContext : boost::noncopyable typedef std::unordered_map<ColKey, ColArray, ColKey::Hash> ColArraysType; NumArrayStoreType m_NumArrays; /// manage life cycle of numeric arrays. - StrArrayStoreType maStrArrays; /// manage life cycle of string arrays. + StrArrayStoreType m_StrArrays; /// manage life cycle of string arrays. ColArraysType maColArrays; /// keep track of longest array for each column. diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx index e6983d9..cb1f145 100644 --- a/sc/source/core/data/column2.cxx +++ b/sc/source/core/data/column2.cxx @@ -2504,9 +2504,9 @@ copyFirstFormulaBlock( { if (!pStrArray) { - rCxt.maStrArrays.push_back( - new sc::FormulaGroupContext::StrArrayType(nArrayLen, NULL)); - pStrArray = &rCxt.maStrArrays.back(); + rCxt.m_StrArrays.push_back( + o3tl::make_unique<sc::FormulaGroupContext::StrArrayType>(nArrayLen, nullptr)); + pStrArray = rCxt.m_StrArrays.back().get(); } (*pStrArray)[nPos] = aRes.maString.getDataIgnoreCase(); @@ -2602,8 +2602,9 @@ formula::VectorRefArray ScColumn::FetchVectorRefArray( SCROW nRow1, SCROW nRow2 case sc::element_type_string: case sc::element_type_edittext: { - rCxt.maStrArrays.push_back(new sc::FormulaGroupContext::StrArrayType(nRow2+1, NULL)); - sc::FormulaGroupContext::StrArrayType& rArray = rCxt.maStrArrays.back(); + rCxt.m_StrArrays.push_back( + o3tl::make_unique<sc::FormulaGroupContext::StrArrayType>(nRow2+1, nullptr)); + sc::FormulaGroupContext::StrArrayType& rArray = *rCxt.m_StrArrays.back(); pColArray = rCxt.setCachedColArray(nTab, nCol, NULL, &rArray); if (!pColArray) // Failed to insert a new cached column array. diff --git a/sc/source/core/tool/formulagroup.cxx b/sc/source/core/tool/formulagroup.cxx index 835ed2a..8506fb7 100644 --- a/sc/source/core/tool/formulagroup.cxx +++ b/sc/source/core/tool/formulagroup.cxx @@ -112,9 +112,9 @@ void FormulaGroupContext::ensureStrArray( ColArray& rColArray, size_t nArrayLen if (rColArray.mpStrArray) return; - maStrArrays.push_back( - new sc::FormulaGroupContext::StrArrayType(nArrayLen, NULL)); - rColArray.mpStrArray = &maStrArrays.back(); + m_StrArrays.push_back( + o3tl::make_unique<sc::FormulaGroupContext::StrArrayType>(nArrayLen, nullptr)); + rColArray.mpStrArray = m_StrArrays.back().get(); } void FormulaGroupContext::ensureNumArray( ColArray& rColArray, size_t nArrayLen ) commit 5fd6aa03c8b3964ba7ccc1cbe4d4421a500fce72 Author: Michael Stahl <mst...@redhat.com> Date: Fri Nov 6 23:38:35 2015 +0100 sc: replace boost::ptr_vector with std::vector<std::unique_ptr> Change-Id: I74440dd6d7904fe9e6a59f7ff757f202d2718b07 diff --git a/sc/inc/formulagroup.hxx b/sc/inc/formulagroup.hxx index 384ea0a..15c2a60 100644 --- a/sc/inc/formulagroup.hxx +++ b/sc/inc/formulagroup.hxx @@ -23,6 +23,7 @@ #endif #include <svl/sharedstringpool.hxx> +#include <memory> #include <set> #include <unordered_map> #include <vector> @@ -57,7 +58,7 @@ struct FormulaGroupContext : boost::noncopyable typedef AlignedAllocator<double,256> DoubleAllocType; typedef std::vector<double, DoubleAllocType> NumArrayType; typedef std::vector<rtl_uString*> StrArrayType; - typedef boost::ptr_vector<NumArrayType> NumArrayStoreType; + typedef std::vector<std::unique_ptr<NumArrayType>> NumArrayStoreType; typedef boost::ptr_vector<StrArrayType> StrArrayStoreType; struct ColKey @@ -87,7 +88,7 @@ struct FormulaGroupContext : boost::noncopyable typedef std::unordered_map<ColKey, ColArray, ColKey::Hash> ColArraysType; - NumArrayStoreType maNumArrays; /// manage life cycle of numeric arrays. + NumArrayStoreType m_NumArrays; /// manage life cycle of numeric arrays. StrArrayStoreType maStrArrays; /// manage life cycle of string arrays. ColArraysType maColArrays; /// keep track of longest array for each column. diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx index de6598c..e6983d9 100644 --- a/sc/source/core/data/column2.cxx +++ b/sc/source/core/data/column2.cxx @@ -47,8 +47,6 @@ #include "scmatrix.hxx" #include <rowheightcontext.hxx> -#include <math.h> - #include <editeng/eeitem.hxx> #include <svx/algitem.hxx> @@ -67,9 +65,13 @@ #include <formula/errorcodes.hxx> #include <formula/vectortoken.hxx> +#include <o3tl/make_unique.hxx> + #include <algorithm> #include <memory> +#include <math.h> + // factor from font size to optimal cell height (text width) #define SC_ROT_BREAK_FACTOR 6 @@ -2491,9 +2493,9 @@ copyFirstFormulaBlock( { if (!pNumArray) { - rCxt.maNumArrays.push_back( - new sc::FormulaGroupContext::NumArrayType(nArrayLen, fNan)); - pNumArray = &rCxt.maNumArrays.back(); + rCxt.m_NumArrays.push_back( + o3tl::make_unique<sc::FormulaGroupContext::NumArrayType>(nArrayLen, fNan)); + pNumArray = rCxt.m_NumArrays.back().get(); } (*pNumArray)[nPos] = aRes.mfValue; @@ -2575,8 +2577,9 @@ formula::VectorRefArray ScColumn::FetchVectorRefArray( SCROW nRow1, SCROW nRow2 // Allocate a new array and copy the values to it. sc::numeric_block::const_iterator it = sc::numeric_block::begin(*itBlk->data); sc::numeric_block::const_iterator itEnd = sc::numeric_block::end(*itBlk->data); - rCxt.maNumArrays.push_back(new sc::FormulaGroupContext::NumArrayType(it, itEnd)); - sc::FormulaGroupContext::NumArrayType& rArray = rCxt.maNumArrays.back(); + rCxt.m_NumArrays.push_back( + o3tl::make_unique<sc::FormulaGroupContext::NumArrayType>(it, itEnd)); + sc::FormulaGroupContext::NumArrayType& rArray = *rCxt.m_NumArrays.back(); rArray.resize(nRow2+1, fNan); // allocate to the requested length. pColArray = rCxt.setCachedColArray(nTab, nCol, &rArray, NULL); @@ -2671,8 +2674,9 @@ formula::VectorRefArray ScColumn::FetchVectorRefArray( SCROW nRow1, SCROW nRow2 case sc::element_type_empty: { // Fill the whole length with NaN's. - rCxt.maNumArrays.push_back(new sc::FormulaGroupContext::NumArrayType(nRow2+1, fNan)); - sc::FormulaGroupContext::NumArrayType& rArray = rCxt.maNumArrays.back(); + rCxt.m_NumArrays.push_back( + o3tl::make_unique<sc::FormulaGroupContext::NumArrayType>(nRow2+1, fNan)); + sc::FormulaGroupContext::NumArrayType& rArray = *rCxt.m_NumArrays.back(); pColArray = rCxt.setCachedColArray(nTab, nCol, &rArray, NULL); if (!pColArray) // Failed to insert a new cached column array. diff --git a/sc/source/core/tool/formulagroup.cxx b/sc/source/core/tool/formulagroup.cxx index 1e73276..835ed2a 100644 --- a/sc/source/core/tool/formulagroup.cxx +++ b/sc/source/core/tool/formulagroup.cxx @@ -24,6 +24,7 @@ #if HAVE_FEATURE_OPENCL #include <opencl/platforminfo.hxx> #endif +#include <o3tl/make_unique.hxx> #include <rtl/bootstrap.hxx> #include <cstdio> @@ -124,9 +125,9 @@ void FormulaGroupContext::ensureNumArray( ColArray& rColArray, size_t nArrayLen double fNan; rtl::math::setNan(&fNan); - maNumArrays.push_back( - new sc::FormulaGroupContext::NumArrayType(nArrayLen, fNan)); - rColArray.mpNumArray = &maNumArrays.back(); + m_NumArrays.push_back( + o3tl::make_unique<sc::FormulaGroupContext::NumArrayType>(nArrayLen, fNan)); + rColArray.mpNumArray = m_NumArrays.back().get(); } FormulaGroupContext::FormulaGroupContext() _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits