diff options
author | Arkadiy Illarionov <qarkai@gmail.com> | 2019-02-09 17:14:17 +0300 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-02-13 10:26:00 +0100 |
commit | 49bc42bfd2b164d61603f138eeb2292f5d89605b (patch) | |
tree | b4ab1eb27293b044d8faa8facf402a0f47c64025 /sc | |
parent | 6cd9bc8aa40791bd0cd5315134084b2319fa2a15 (diff) |
Simplify containers iterations in sc/source/core/data
From documentimport.cxx to validat.cxx
Use range-based loop or replace with STL functions
Change-Id: I59fb3ed20598e497b5653245f070298181da1331
Reviewed-on: https://gerrit.libreoffice.org/67587
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sc')
24 files changed, 475 insertions, 688 deletions
diff --git a/sc/source/core/data/documentimport.cxx b/sc/source/core/data/documentimport.cxx index 4da6d7473894..ebe1b8a6dfc8 100644 --- a/sc/source/core/data/documentimport.cxx +++ b/sc/source/core/data/documentimport.cxx @@ -698,13 +698,12 @@ void ScDocumentImport::finalize() { // Populate the text width and script type arrays in all columns. Also // activate all formula cells. - ScDocument::TableContainer::iterator itTab = mpImpl->mrDoc.maTabs.begin(), itTabEnd = mpImpl->mrDoc.maTabs.end(); - for (; itTab != itTabEnd; ++itTab) + for (auto& rxTab : mpImpl->mrDoc.maTabs) { - if (!*itTab) + if (!rxTab) continue; - ScTable& rTab = **itTab; + ScTable& rTab = *rxTab; SCCOL nNumCols = rTab.aCol.size(); for (SCCOL nColIdx = 0; nColIdx < nNumCols; ++nColIdx) initColumn(rTab.aCol[nColIdx]); @@ -755,13 +754,12 @@ void ScDocumentImport::broadcastRecalcAfterImport() sc::AutoCalcSwitch aACSwitch( mpImpl->mrDoc, false); ScBulkBroadcast aBulkBroadcast( mpImpl->mrDoc.GetBASM(), SfxHintId::ScDataChanged); - ScDocument::TableContainer::iterator itTab = mpImpl->mrDoc.maTabs.begin(), itTabEnd = mpImpl->mrDoc.maTabs.end(); - for (; itTab != itTabEnd; ++itTab) + for (auto& rxTab : mpImpl->mrDoc.maTabs) { - if (!*itTab) + if (!rxTab) continue; - ScTable& rTab = **itTab; + ScTable& rTab = *rxTab; SCCOL nNumCols = rTab.aCol.size(); for (SCCOL nColIdx = 0; nColIdx < nNumCols; ++nColIdx) broadcastRecalcAfterImportColumn(rTab.aCol[nColIdx]); diff --git a/sc/source/core/data/dpcache.cxx b/sc/source/core/data/dpcache.cxx index 1be6e523966c..60011acd6317 100644 --- a/sc/source/core/data/dpcache.cxx +++ b/sc/source/core/data/dpcache.cxx @@ -1452,9 +1452,8 @@ void dumpItems(const ScDPCache& rCache, long nDim, const ScDPCache::ScDPItemData void dumpSourceData(const ScDPCache& rCache, long nDim, const ScDPCache::ScDPItemDataVec& rItems, const ScDPCache::IndexArrayType& rArray) { - ScDPCache::IndexArrayType::const_iterator it = rArray.begin(), itEnd = rArray.end(); - for (; it != itEnd; ++it) - cout << " '" << rCache.GetFormattedString(nDim, rItems[*it], false) << "'" << endl; + for (const auto& rIndex : rArray) + cout << " '" << rCache.GetFormattedString(nDim, rItems[rIndex], false) << "'" << endl; } const char* getGroupTypeName(sal_Int32 nType) @@ -1489,10 +1488,10 @@ void ScDPCache::Dump() const cout << "--- pivot cache dump" << endl; { - FieldsType::const_iterator it = maFields.begin(), itEnd = maFields.end(); - for (size_t i = 0; it != itEnd; ++it, ++i) + size_t i = 0; + for (const auto& rxField : maFields) { - const Field& fld = *(*it); + const Field& fld = *rxField; cout << "* source dimension: " << GetDimensionName(i) << " (ID = " << i << ")" << endl; cout << " item count: " << fld.maItems.size() << endl; if (bDumpItems) @@ -1510,19 +1509,22 @@ void ScDPCache::Dump() const cout << " source data (re-constructed):" << endl; dumpSourceData(*this, i, fld.maItems, fld.maData); } + + ++i; } } { - GroupFieldsType::const_iterator it = maGroupFields.begin(), itEnd = maGroupFields.end(); - for (size_t i = maFields.size(); it != itEnd; ++it, ++i) + size_t i = maFields.size(); + for (const auto& rxGroupField : maGroupFields) { - const GroupItems& gi = *(*it); + const GroupItems& gi = *rxGroupField; cout << "* group dimension: (unnamed) (ID = " << i << ")" << endl; cout << " item count: " << gi.maItems.size() << endl; cout << " group type: " << getGroupTypeName(gi.mnGroupType) << endl; if (bDumpItems) dumpItems(*this, i, gi.maItems, 0); + ++i; } } diff --git a/sc/source/core/data/dpdimsave.cxx b/sc/source/core/data/dpdimsave.cxx index f2f87aa668e1..ef7be61cc821 100644 --- a/sc/source/core/data/dpdimsave.cxx +++ b/sc/source/core/data/dpdimsave.cxx @@ -50,9 +50,8 @@ void ScDPSaveGroupItem::AddElementsFromGroup( const ScDPSaveGroupItem& rGroup ) { // add all elements of the other group (used for nested grouping) - for ( std::vector<OUString>::const_iterator aIter(rGroup.aElements.begin()); - aIter != rGroup.aElements.end(); ++aIter ) - aElements.push_back( *aIter ); + for ( const auto& rElement : rGroup.aElements ) + aElements.push_back( rElement ); } bool ScDPSaveGroupItem::RemoveElement( const OUString& rName ) @@ -91,23 +90,22 @@ void ScDPSaveGroupItem::RemoveElementsFromGroups( ScDPSaveGroupDimension& rDimen // remove this group's elements from their groups in rDimension // (rDimension must be a different dimension from the one which contains this) - for ( std::vector<OUString>::const_iterator aIter(aElements.begin()); aIter != aElements.end(); ++aIter ) - rDimension.RemoveFromGroups( *aIter ); + for ( const auto& rElement : aElements ) + rDimension.RemoveFromGroups( rElement ); } void ScDPSaveGroupItem::ConvertElementsToItems(SvNumberFormatter* pFormatter) const { maItems.reserve(aElements.size()); - std::vector<OUString>::const_iterator it = aElements.begin(), itEnd = aElements.end(); - for (; it != itEnd; ++it) + for (const auto& rElement : aElements) { sal_uInt32 nFormat = 0; double fValue; ScDPItemData aData; - if (pFormatter->IsNumberFormat(*it, nFormat, fValue)) + if (pFormatter->IsNumberFormat(rElement, nFormat, fValue)) aData.SetValue(fValue); else - aData.SetString(*it); + aData.SetString(rElement); maItems.push_back(aData); } @@ -121,9 +119,8 @@ bool ScDPSaveGroupItem::HasInGroup(const ScDPItemData& rItem) const void ScDPSaveGroupItem::AddToData(ScDPGroupDimension& rDataDim) const { ScDPGroupItem aGroup(aGroupName); - std::vector<ScDPItemData>::const_iterator it = maItems.begin(), itEnd = maItems.end(); - for (; it != itEnd; ++it) - aGroup.AddElement(*it); + for (const auto& rItem : maItems) + aGroup.AddElement(rItem); rDataDim.AddItem(aGroup); } @@ -166,13 +163,12 @@ OUString ScDPSaveGroupDimension::CreateGroupName(const OUString& rPrefix) while ( nAdd <= nMaxAdd ) { OUString aGroupName = rPrefix + OUString::number( nAdd ); - bool bExists = false; // look for existing groups - for ( ScDPSaveGroupItemVec::const_iterator aIter(aGroups.begin()); - aIter != aGroups.end() && !bExists; ++aIter ) - if (aIter->GetGroupName() == aGroupName) //TODO: ignore case - bExists = true; + bool bExists = std::any_of(aGroups.begin(), aGroups.end(), + [&aGroupName](const ScDPSaveGroupItem& rGroup) { + return rGroup.GetGroupName() == aGroupName; //TODO: ignore case + }); if ( !bExists ) return aGroupName; // found a new name @@ -191,9 +187,12 @@ const ScDPSaveGroupItem* ScDPSaveGroupDimension::GetNamedGroup( const OUString& ScDPSaveGroupItem* ScDPSaveGroupDimension::GetNamedGroupAcc( const OUString& rGroupName ) { - for (ScDPSaveGroupItemVec::iterator aIter = aGroups.begin(); aIter != aGroups.end(); ++aIter) - if (aIter->GetGroupName() == rGroupName) //TODO: ignore case - return &*aIter; + auto aIter = std::find_if(aGroups.begin(), aGroups.end(), + [&rGroupName](const ScDPSaveGroupItem& rGroup) { + return rGroup.GetGroupName() == rGroupName; //TODO: ignore case + }); + if (aIter != aGroups.end()) + return &*aIter; return nullptr; // none found } @@ -226,12 +225,12 @@ void ScDPSaveGroupDimension::RemoveFromGroups( const OUString& rItemName ) void ScDPSaveGroupDimension::RemoveGroup(const OUString& rGroupName) { - for (ScDPSaveGroupItemVec::iterator aIter = aGroups.begin(); aIter != aGroups.end(); ++aIter) - if (aIter->GetGroupName() == rGroupName) //TODO: ignore case - { - aGroups.erase( aIter ); - return; // don't have to look further - } + auto aIter = std::find_if(aGroups.begin(), aGroups.end(), + [&rGroupName](const ScDPSaveGroupItem& rGroup) { + return rGroup.GetGroupName() == rGroupName; //TODO: ignore case + }); + if (aIter != aGroups.end()) + aGroups.erase( aIter ); } bool ScDPSaveGroupDimension::IsEmpty() const @@ -243,13 +242,8 @@ bool ScDPSaveGroupDimension::HasOnlyHidden(const ScDPUniqueStringSet& rVisible) { // check if there are only groups that don't appear in the list of visible names - bool bAllHidden = true; - for (ScDPSaveGroupItemVec::const_iterator aIter = aGroups.begin(); aIter != aGroups.end() && bAllHidden; ++aIter) - { - if (rVisible.count(aIter->GetGroupName()) > 0) - bAllHidden = false; - } - return bAllHidden; + return std::none_of(aGroups.begin(), aGroups.end(), + [&rVisible](const ScDPSaveGroupItem& rGroup) { return rVisible.count(rGroup.GetGroupName()) > 0; }); } void ScDPSaveGroupDimension::Rename( const OUString& rNewName ) @@ -259,13 +253,8 @@ void ScDPSaveGroupDimension::Rename( const OUString& rNewName ) bool ScDPSaveGroupDimension::IsInGroup(const ScDPItemData& rItem) const { - ScDPSaveGroupItemVec::const_iterator it = aGroups.begin(), itEnd = aGroups.end(); - for (; it != itEnd; ++it) - { - if (it->HasInGroup(rItem)) - return true; - } - return false; + return std::any_of(aGroups.begin(), aGroups.end(), + [&rItem](const ScDPSaveGroupItem& rGroup) { return rGroup.HasInGroup(rItem); }); } namespace { @@ -286,10 +275,8 @@ void fillDateGroupDimension( bool bFirst = true; const ScDPCache::ScDPItemDataVec& rItems = rCache.GetDimMemberValues(nSourceDim); - ScDPCache::ScDPItemDataVec::const_iterator it = rItems.begin(), itEnd = rItems.end(); - for (; it != itEnd; ++it) + for (const ScDPItemData& rItem : rItems) { - const ScDPItemData& rItem = *it; if (rItem.GetType() != ScDPItemData::Value) continue; @@ -366,8 +353,8 @@ void ScDPSaveGroupDimension::AddToData( ScDPGroupTableData& rData ) const { // normal (manual) grouping - for (ScDPSaveGroupItemVec::const_iterator aIter(aGroups.begin()); aIter != aGroups.end(); ++aIter) - aIter->AddToData(aDim); + for (const auto& rGroup : aGroups) + rGroup.AddToData(aDim); } rData.AddGroupDimension( aDim ); @@ -390,26 +377,18 @@ void ScDPSaveGroupDimension::AddToCache(ScDPCache& rCache) const } rCache.ResetGroupItems(nDim, aDateInfo, 0); + for (const ScDPSaveGroupItem& rGI : aGroups) { - ScDPSaveGroupItemVec::const_iterator it = aGroups.begin(), itEnd = aGroups.end(); - for (; it != itEnd; ++it) - { - const ScDPSaveGroupItem& rGI = *it; - rGI.ConvertElementsToItems(pFormatter); - rCache.SetGroupItem(nDim, ScDPItemData(rGI.GetGroupName())); - } + rGI.ConvertElementsToItems(pFormatter); + rCache.SetGroupItem(nDim, ScDPItemData(rGI.GetGroupName())); } const ScDPCache::ScDPItemDataVec& rItems = rCache.GetDimMemberValues(nSourceDim); + for (const ScDPItemData& rItem : rItems) { - ScDPCache::ScDPItemDataVec::const_iterator it = rItems.begin(), itEnd = rItems.end(); - for (; it != itEnd; ++it) - { - const ScDPItemData& rItem = *it; - if (!IsInGroup(rItem)) - // Not in any group. Add as its own group. - rCache.SetGroupItem(nDim, rItem); - } + if (!IsInGroup(rItem)) + // Not in any group. Add as its own group. + rCache.SetGroupItem(nDim, rItem); } } @@ -470,10 +449,8 @@ void ScDPSaveNumGroupDimension::AddToCache(ScDPCache& rCache) const bool bFirst = true; const ScDPCache::ScDPItemDataVec& rItems = rCache.GetDimMemberValues(nDim); - ScDPCache::ScDPItemDataVec::const_iterator it = rItems.begin(), itEnd = rItems.end(); - for (; it != itEnd; ++it) + for (const ScDPItemData& rItem : rItems) { - const ScDPItemData& rItem = *it; if (rItem.GetType() != ScDPItemData::Value) continue; @@ -637,11 +614,11 @@ void ScDPDimensionSaveData::WriteToData( ScDPGroupTableData& rData ) const // rData is assumed to be empty // AddToData also handles date grouping - for( ScDPSaveGroupDimVec::const_iterator aIt = maGroupDims.begin(), aEnd = maGroupDims.end(); aIt != aEnd; ++aIt ) - aIt->AddToData( rData ); + for( const auto& rGroupDim : maGroupDims ) + rGroupDim.AddToData( rData ); - for( ScDPSaveNumGroupDimMap::const_iterator aIt = maNumGroupDims.begin(), aEnd = maNumGroupDims.end(); aIt != aEnd; ++aIt ) - aIt->second.AddToData( rData ); + for( const auto& rEntry : maNumGroupDims ) + rEntry.second.AddToData( rData ); } namespace { @@ -662,9 +639,8 @@ public: void ScDPDimensionSaveData::WriteToCache(ScDPCache& rCache) const { std::for_each(maGroupDims.begin(), maGroupDims.end(), AddGroupDimToCache(rCache)); - ScDPSaveNumGroupDimMap::const_iterator it = maNumGroupDims.begin(), itEnd = maNumGroupDims.end(); - for (; it != itEnd; ++it) - it->second.AddToCache(rCache); + for (const auto& rEntry : maNumGroupDims) + rEntry.second.AddToCache(rCache); } const ScDPSaveGroupDimension* ScDPDimensionSaveData::GetGroupDimForBase( const OUString& rBaseDimName ) const @@ -763,12 +739,12 @@ OUString ScDPDimensionSaveData::CreateGroupDimName( OUString aDimName( rSourceName ); if ( !bUseSource ) aDimName += OUString::number(nAdd); - bool bExists = false; // look for existing group dimensions - for( ScDPSaveGroupDimVec::const_iterator aIt = maGroupDims.begin(), aEnd = maGroupDims.end(); (aIt != aEnd) && !bExists; ++aIt ) - if( aIt->GetGroupDimName() == aDimName ) //TODO: ignore case - bExists = true; + bool bExists = std::any_of(maGroupDims.begin(), maGroupDims.end(), + [&aDimName](const ScDPSaveGroupDimension& rDim) { + return rDim.GetGroupDimName() == aDimName; //TODO: ignore case + }); // look for base dimensions that happen to have that name if ( !bExists && rObject.IsDimNameInUse( aDimName ) ) diff --git a/sc/source/core/data/dpfilteredcache.cxx b/sc/source/core/data/dpfilteredcache.cxx index f46c6cd96065..0763aee3152b 100644 --- a/sc/source/core/data/dpfilteredcache.cxx +++ b/sc/source/core/data/dpfilteredcache.cxx @@ -372,18 +372,17 @@ bool ScDPFilteredCache::isRowQualified(sal_Int32 nRow, const vector<Criterion>& const std::unordered_set<sal_Int32>& rRepeatIfEmptyDims) const { sal_Int32 nColSize = getColSize(); - vector<Criterion>::const_iterator itrEnd = rCriteria.end(); - for (vector<Criterion>::const_iterator itr = rCriteria.begin(); itr != itrEnd; ++itr) + for (const auto& rCriterion : rCriteria) { - if (itr->mnFieldIndex >= nColSize) + if (rCriterion.mnFieldIndex >= nColSize) // specified field is outside the source data columns. Don't // use this criterion. continue; // Check if the 'repeat if empty' flag is set for this field. - bool bRepeatIfEmpty = rRepeatIfEmptyDims.count(itr->mnFieldIndex) > 0; - const ScDPItemData* pCellData = getCell(static_cast<SCCOL>(itr->mnFieldIndex), nRow, bRepeatIfEmpty); - if (!itr->mpFilter->match(*pCellData)) + bool bRepeatIfEmpty = rRepeatIfEmptyDims.count(rCriterion.mnFieldIndex) > 0; + const ScDPItemData* pCellData = getCell(static_cast<SCCOL>(rCriterion.mnFieldIndex), nRow, bRepeatIfEmpty); + if (!rCriterion.mpFilter->match(*pCellData)) return false; } return true; diff --git a/sc/source/core/data/dpgroup.cxx b/sc/source/core/data/dpgroup.cxx index 34fc1a0e0259..0327dcb5c44f 100644 --- a/sc/source/core/data/dpgroup.cxx +++ b/sc/source/core/data/dpgroup.cxx @@ -63,10 +63,9 @@ bool ScDPGroupNumFilter::match(const ScDPItemData& rCellData) const if (rCellData.GetType() != ScDPItemData::Value) return false; - std::vector<ScDPItemData>::const_iterator it = maValues.begin(), itEnd = maValues.end(); - for (; it != itEnd; ++it) + for (const auto& rValue : maValues) { - double fVal = it->GetValue(); + double fVal = rValue.GetValue(); if (rtl::math::isInf(fVal)) { if (rtl::math::isSignBitSet(fVal)) @@ -132,10 +131,8 @@ bool ScDPGroupDateFilter::match( const ScDPItemData & rCellData ) const if ( !rCellData.IsValue() ) return false; - std::vector<ScDPItemData>::const_iterator it = maValues.begin(), itEnd = maValues.end(); - for (; it != itEnd; ++it) + for (const ScDPItemData& rValue : maValues) { - const ScDPItemData& rValue = *it; if (rValue.GetType() != ScDPItemData::GroupValue) continue; @@ -312,27 +309,20 @@ void ScDPGroupItem::AddElement( const ScDPItemData& rName ) bool ScDPGroupItem::HasElement( const ScDPItemData& rData ) const { - for ( ScDPItemDataVec::const_iterator aIter(aElements.begin()); aIter != aElements.end(); ++aIter ) - if ( aIter->IsCaseInsEqual( rData ) ) - return true; - - return false; + return std::any_of(aElements.begin(), aElements.end(), + [&rData](const ScDPItemData& rElement) { return rElement.IsCaseInsEqual(rData); }); } bool ScDPGroupItem::HasCommonElement( const ScDPGroupItem& rOther ) const { - for ( ScDPItemDataVec::const_iterator aIter(aElements.begin()); aIter != aElements.end(); ++aIter ) - if ( rOther.HasElement( *aIter ) ) - return true; - - return false; + return std::any_of(aElements.begin(), aElements.end(), + [&rOther](const ScDPItemData& rElement) { return rOther.HasElement(rElement); }); } void ScDPGroupItem::FillGroupFilter( ScDPFilteredCache::GroupFilter& rFilter ) const { - ScDPItemDataVec::const_iterator itrEnd = aElements.end(); - for (ScDPItemDataVec::const_iterator itr = aElements.begin(); itr != itrEnd; ++itr) - rFilter.addMatchItem(*itr); + for (const auto& rElement : aElements) + rFilter.addMatchItem(rElement); } ScDPGroupDimension::ScDPGroupDimension( long nSource, const OUString& rNewName ) : @@ -389,18 +379,20 @@ const std::vector<SCROW>& ScDPGroupDimension::GetColumnEntries( const ScDPGroupItem* ScDPGroupDimension::GetGroupForData( const ScDPItemData& rData ) const { - for (ScDPGroupItemVec::const_iterator aIter = aItems.begin(); aIter != aItems.end(); ++aIter) - if (aIter->HasElement(rData)) - return &*aIter; + auto aIter = std::find_if(aItems.begin(), aItems.end(), + [&rData](const ScDPGroupItem& rItem) { return rItem.HasElement(rData); }); + if (aIter != aItems.end()) + return &*aIter; return nullptr; } const ScDPGroupItem* ScDPGroupDimension::GetGroupForName( const ScDPItemData& rName ) const { - for ( ScDPGroupItemVec::const_iterator aIter(aItems.begin()); aIter != aItems.end(); ++aIter ) - if ( aIter->GetName().IsCaseInsEqual( rName ) ) - return &*aIter; + auto aIter = std::find_if(aItems.begin(), aItems.end(), + [&rName](const ScDPGroupItem& rItem) { return rItem.GetName().IsCaseInsEqual(rName); }); + if (aIter != aItems.end()) + return &*aIter; return nullptr; } @@ -600,8 +592,8 @@ sal_uInt32 ScDPGroupTableData::GetNumberFormat(long nDim) void ScDPGroupTableData::DisposeData() { - for ( ScDPGroupDimensionVec::iterator aIter(aGroups.begin()); aIter != aGroups.end(); ++aIter ) - aIter->DisposeData(); + for ( auto& rGroup : aGroups ) + rGroup.DisposeData(); for ( long i=0; i<nSourceCount; i++ ) pNumGroups[i].DisposeData(); @@ -645,12 +637,10 @@ void ScDPGroupTableData::ModifyFilterCriteria(vector<ScDPFilteredCache::Criterio // Build dimension ID to object map for group dimensions. typedef std::unordered_map<long, const ScDPGroupDimension*> GroupFieldMapType; GroupFieldMapType aGroupFieldIds; + + for (const auto& rGroup : aGroups) { - ScDPGroupDimensionVec::const_iterator itr = aGroups.begin(), itrEnd = aGroups.end(); - for (; itr != itrEnd; ++itr) - { - aGroupFieldIds.emplace(itr->GetGroupDim(), &(*itr)); - } + aGroupFieldIds.emplace(rGroup.GetGroupDim(), &rGroup); } vector<ScDPFilteredCache::Criterion> aNewCriteria; @@ -659,26 +649,25 @@ void ScDPGroupTableData::ModifyFilterCriteria(vector<ScDPFilteredCache::Criterio // Go through all the filtered field names and process them appropriately. const ScDPCache& rCache = GetCacheTable().getCache(); - vector<ScDPFilteredCache::Criterion>::const_iterator itrEnd = rCriteria.end(); GroupFieldMapType::const_iterator itrGrpEnd = aGroupFieldIds.end(); - for (vector<ScDPFilteredCache::Criterion>::const_iterator itr = rCriteria.begin(); itr != itrEnd; ++itr) + for (const auto& rCriterion : rCriteria) { - std::vector<ScDPItemData> aMatchValues = itr->mpFilter->getMatchValues(); + std::vector<ScDPItemData> aMatchValues = rCriterion.mpFilter->getMatchValues(); - GroupFieldMapType::const_iterator itrGrp = aGroupFieldIds.find(itr->mnFieldIndex); + GroupFieldMapType::const_iterator itrGrp = aGroupFieldIds.find(rCriterion.mnFieldIndex); if (itrGrp == itrGrpEnd) { - if (IsNumGroupDimension(itr->mnFieldIndex)) + if (IsNumGroupDimension(rCriterion.mnFieldIndex)) { // internal number group field - const ScDPNumGroupInfo* pNumInfo = rCache.GetNumGroupInfo(itr->mnFieldIndex); + const ScDPNumGroupInfo* pNumInfo = rCache.GetNumGroupInfo(rCriterion.mnFieldIndex); if (!pNumInfo) // Number group dimension without num info? Something is wrong... continue; ScDPFilteredCache::Criterion aCri; - aCri.mnFieldIndex = itr->mnFieldIndex; - const ScDPNumGroupDimension& rNumGrpDim = pNumGroups[itr->mnFieldIndex]; + aCri.mnFieldIndex = rCriterion.mnFieldIndex; + const ScDPNumGroupDimension& rNumGrpDim = pNumGroups[rCriterion.mnFieldIndex]; if (rNumGrpDim.IsDateDimension()) { @@ -699,7 +688,7 @@ void ScDPGroupTableData::ModifyFilterCriteria(vector<ScDPFilteredCache::Criterio else { // This is a regular source field. - aNewCriteria.push_back(*itr); + aNewCriteria.push_back(rCriterion); } } else @@ -813,10 +802,9 @@ void ScDPGroupTableData::FillGroupValues(vector<SCROW>& rItems, const vector<lon long nGroupedColumns = aGroups.size(); const ScDPCache& rCache = GetCacheTable().getCache(); - vector<long>::const_iterator it = rDims.begin(), itEnd = rDims.end(); - for (size_t i = 0; it != itEnd; ++it, ++i) + size_t i = 0; + for (long nColumn : rDims) { - long nColumn = *it; bool bDateDim = false; long nSourceDim = nColumn; @@ -874,29 +862,23 @@ void ScDPGroupTableData::FillGroupValues(vector<SCROW>& rItems, const vector<lon rItems[i] = rCache.GetIdByItemData(nColumn, aItem); } } + + ++i; } } bool ScDPGroupTableData::IsBaseForGroup(long nDim) const { - for ( ScDPGroupDimensionVec::const_iterator aIter(aGroups.begin()); aIter != aGroups.end(); ++aIter ) - { - const ScDPGroupDimension& rDim = *aIter; - if ( rDim.GetSourceDim() == nDim ) - return true; - } - - return false; + return std::any_of(aGroups.begin(), aGroups.end(), + [&nDim](const ScDPGroupDimension& rDim) { return rDim.GetSourceDim() == nDim; }); } long ScDPGroupTableData::GetGroupBase(long nGroupDim) const { - for ( ScDPGroupDimensionVec::const_iterator aIter(aGroups.begin()); aIter != aGroups.end(); ++aIter ) - { - const ScDPGroupDimension& rDim = *aIter; - if ( rDim.GetGroupDim() == nGroupDim ) - return rDim.GetSourceDim(); - } + auto aIter = std::find_if(aGroups.begin(), aGroups.end(), + [&nGroupDim](const ScDPGroupDimension& rDim) { return rDim.GetGroupDim() == nGroupDim; }); + if (aIter != aGroups.end()) + return aIter->GetSourceDim(); return -1; // none } @@ -911,12 +893,10 @@ bool ScDPGroupTableData::IsNumOrDateGroup(long nDimension) const pNumGroups[nDimension].IsDateDimension(); } - for ( ScDPGroupDimensionVec::const_iterator aIter(aGroups.begin()); aIter != aGroups.end(); ++aIter ) - { - const ScDPGroupDimension& rDim = *aIter; - if ( rDim.GetGroupDim() == nDimension ) - return rDim.IsDateDimension(); - } + auto aIter = std::find_if(aGroups.begin(), aGroups.end(), + [&nDimension](const ScDPGroupDimension& rDim) { return rDim.GetGroupDim() == nDimension; }); + if (aIter != aGroups.end()) + return aIter->IsDateDimension(); return false; } @@ -924,24 +904,24 @@ bool ScDPGroupTableData::IsNumOrDateGroup(long nDimension) const bool ScDPGroupTableData::IsInGroup( const ScDPItemData& rGroupData, long nGroupIndex, const ScDPItemData& rBaseData, long nBaseIndex ) const { - for ( ScDPGroupDimensionVec::const_iterator aIter(aGroups.begin()); aIter != aGroups.end(); ++aIter ) + auto aIter = std::find_if(aGroups.begin(), aGroups.end(), + [&nGroupIndex, &nBaseIndex](const ScDPGroupDimension& rDim) { + return rDim.GetGroupDim() == nGroupIndex && rDim.GetSourceDim() == nBaseIndex; }); + if (aIter != aGroups.end()) { const ScDPGroupDimension& rDim = *aIter; - if ( rDim.GetGroupDim() == nGroupIndex && rDim.GetSourceDim() == nBaseIndex ) + if (rDim.IsDateDimension()) { - if (rDim.IsDateDimension()) - { - return isDateInGroup(rGroupData, rBaseData); - } - else - { - // If the item is in a group, only that group is valid. - // If the item is not in any group, its own name is valid. + return isDateInGroup(rGroupData, rBaseData); + } + else + { + // If the item is in a group, only that group is valid. + // If the item is not in any group, its own name is valid. - const ScDPGroupItem* pGroup = rDim.GetGroupForData( rBaseData ); - return pGroup ? pGroup->GetName().IsCaseInsEqual( rGroupData ) : - rGroupData.IsCaseInsEqual( rBaseData ); - } + const ScDPGroupItem* pGroup = rDim.GetGroupForData( rBaseData ); + return pGroup ? pGroup->GetName().IsCaseInsEqual( rGroupData ) : + rGroupData.IsCaseInsEqual( rBaseData ); } } @@ -954,9 +934,9 @@ bool ScDPGroupTableData::HasCommonElement( const ScDPItemData& rFirstData, long { const ScDPGroupDimension* pFirstDim = nullptr; const ScDPGroupDimension* pSecondDim = nullptr; - for ( ScDPGroupDimensionVec::const_iterator aIter(aGroups.begin()); aIter != aGroups.end(); ++aIter ) + for ( const auto& rDim : aGroups ) { - const ScDPGroupDimension* pDim = &(*aIter); + const ScDPGroupDimension* pDim = &rDim; if ( pDim->GetGroupDim() == nFirstIndex ) pFirstDim = pDim; else if ( pDim->GetGroupDim() == nSecondIndex ) diff --git a/sc/source/core/data/dpobject.cxx b/sc/source/core/data/dpobject.cxx index 4f83e326b87f..21f3bf6190c6 100644 --- a/sc/source/core/data/dpobject.cxx +++ b/sc/source/core/data/dpobject.cxx @@ -2598,14 +2598,10 @@ bool hasFieldColumn(const vector<ScPivotField>* pRefFields, SCCOL nCol) if (!pRefFields) return false; - vector<ScPivotField>::const_iterator itr = pRefFields->begin(), itrEnd = pRefFields->end(); - for (; itr != itrEnd; ++itr) - { - if (itr->nCol == nCol) + return std::any_of(pRefFields->begin(), pRefFields->end(), + [&nCol](const ScPivotField& rField) { // This array of fields contains the specified column. - return true; - } - return false; + return rField.nCol == nCol; }); } class FindByOriginalDim @@ -2907,10 +2903,8 @@ struct FindInvalidRange void setGroupItemsToCache( ScDPCache& rCache, const std::set<ScDPObject*>& rRefs ) { // Go through all referencing pivot tables, and re-fill the group dimension info. - std::set<ScDPObject*>::const_iterator itRef = rRefs.begin(), itRefEnd = rRefs.end(); - for (; itRef != itRefEnd; ++itRef) + for (const ScDPObject* pObj : rRefs) { - const ScDPObject* pObj = *itRef; const ScDPSaveData* pSave = pObj->GetSaveData(); if (!pSave) continue; @@ -3037,10 +3031,8 @@ void ScDPCollection::SheetCaches::updateReference( // No caches. return; - RangeIndexType::iterator it = maRanges.begin(), itEnd = maRanges.end(); - for (; it != itEnd; ++it) + for (ScRange& rKeyRange : maRanges) { - const ScRange& rKeyRange = *it; SCCOL nCol1 = rKeyRange.aStart.Col(); SCROW nRow1 = rKeyRange.aStart.Row(); SCTAB nTab1 = rKeyRange.aStart.Tab(); @@ -3058,7 +3050,7 @@ void ScDPCollection::SheetCaches::updateReference( { // range updated. ScRange aNew(nCol1, nRow1, nTab1, nCol2, nRow2, nTab2); - *it = aNew; + rKeyRange = aNew; } } } @@ -3096,16 +3088,14 @@ void ScDPCollection::SheetCaches::updateCache(const ScRange& rRange, std::set<Sc bool ScDPCollection::SheetCaches::remove(const ScDPCache* p) { - CachesType::iterator it = m_Caches.begin(), itEnd = m_Caches.end(); - for (; it != itEnd; ++it) + CachesType::iterator it = std::find_if(m_Caches.begin(), m_Caches.end(), + [&p](const CachesType::value_type& rEntry) { return rEntry.second.get() == p; }); + if (it != m_Caches.end()) { - if (it->second.get() == p) - { - size_t idx = it->first; - m_Caches.erase(it); - maRanges[idx].SetInvalid(); - return true; - } + size_t idx = it->first; + m_Caches.erase(it); + maRanges[idx].SetInvalid(); + return true; } return false; } @@ -3174,14 +3164,12 @@ void ScDPCollection::NameCaches::updateCache( bool ScDPCollection::NameCaches::remove(const ScDPCache* p) { - CachesType::iterator it = m_Caches.begin(), itEnd = m_Caches.end(); - for (; it != itEnd; ++it) + CachesType::iterator it = std::find_if(m_Caches.begin(), m_Caches.end(), + [&p](const CachesType::value_type& rEntry) { return rEntry.second.get() == p; }); + if (it != m_Caches.end()) { - if (it->second.get() == p) - { - m_Caches.erase(it); - return true; - } + m_Caches.erase(it); + return true; } return false; } @@ -3346,14 +3334,12 @@ void ScDPCollection::DBCaches::updateCache( bool ScDPCollection::DBCaches::remove(const ScDPCache* p) { - CachesType::iterator it = m_Caches.begin(), itEnd = m_Caches.end(); - for (; it != itEnd; ++it) + CachesType::iterator it = std::find_if(m_Caches.begin(), m_Caches.end(), + [&p](const CachesType::value_type& rEntry) { return rEntry.second.get() == p; }); + if (it != m_Caches.end()) { - if (it->second.get() == p) - { - m_Caches.erase(it); - return true; - } + m_Caches.erase(it); + return true; } return false; } @@ -3623,9 +3609,8 @@ void ScDPCollection::DeleteOnTab( SCTAB nTab ) void ScDPCollection::UpdateReference( UpdateRefMode eUpdateRefMode, const ScRange& r, SCCOL nDx, SCROW nDy, SCTAB nDz ) { - TablesType::iterator itr = maTables.begin(), itrEnd = maTables.end(); - for (; itr != itrEnd; ++itr) - (*itr)->UpdateReference(eUpdateRefMode, r, nDx, nDy, nDz); + for (auto& rxTable : maTables) + rxTable->UpdateReference(eUpdateRefMode, r, nDx, nDy, nDz); // Update the source ranges of the caches. maSheetCaches.updateReference(eUpdateRefMode, r, nDx, nDy, nDz); @@ -3634,10 +3619,9 @@ void ScDPCollection::UpdateReference( UpdateRefMode eUpdateRefMode, void ScDPCollection::CopyToTab( SCTAB nOld, SCTAB nNew ) { TablesType aAdded; - TablesType::const_iterator it = maTables.begin(), itEnd = maTables.end(); - for (; it != itEnd; ++it) + for (const auto& rxTable : maTables) { - const ScDPObject& rObj = **it; + const ScDPObject& rObj = *rxTable; ScRange aOutRange = rObj.GetOutRange(); if (aOutRange.aStart.Tab() != nOld) continue; @@ -3657,15 +3641,8 @@ void ScDPCollection::CopyToTab( SCTAB nOld, SCTAB nNew ) bool ScDPCollection::RefsEqual( const ScDPCollection& r ) const { - if (maTables.size() != r.maTables.size()) - return false; - - TablesType::const_iterator itr = maTables.begin(), itr2 = r.maTables.begin(), itrEnd = maTables.end(); - for (; itr != itrEnd; ++itr, ++itr2) - if (!(*itr)->RefsEqual(**itr2)) - return false; - - return true; + return std::equal(maTables.begin(), maTables.end(), r.maTables.begin(), r.maTables.end(), + [](const TablesType::value_type& a, const TablesType::value_type& b) { return a->RefsEqual(*b); }); } void ScDPCollection::WriteRefsTo( ScDPCollection& r ) const @@ -3673,10 +3650,12 @@ void ScDPCollection::WriteRefsTo( ScDPCollection& r ) const if ( maTables.size() == r.maTables.size() ) { //TODO: assert equal names? - TablesType::const_iterator itr = maTables.begin(), itrEnd = maTables.end(); TablesType::iterator itr2 = r.maTables.begin(); - for (; itr != itrEnd; ++itr, ++itr2) - (*itr)->WriteRefsTo(**itr2); + for (const auto& rxTable : maTables) + { + rxTable->WriteRefsTo(**itr2); + ++itr2; + } } else { @@ -3743,17 +3722,8 @@ OUString ScDPCollection::CreateNewName() const for (size_t nAdd = 0; nAdd <= n; ++nAdd) // nCount+1 tries { OUString aNewName = "DataPilot" + OUString::number(1 + nAdd); - bool bFound = false; - TablesType::const_iterator itr = maTables.begin(), itrEnd = maTables.end(); - for (; itr != itrEnd; ++itr) - { - if ((*itr)->GetName() == aNewName) - { - bFound = true; - break; - } - } - if (!bFound) + if (std::none_of(maTables.begin(), maTables.end(), + [&aNewName](const TablesType::value_type& rxObj) { return rxObj->GetName() == aNewName; })) return aNewName; // found unused Name } return OUString(); // should not happen @@ -3893,10 +3863,9 @@ void ScDPCollection::RemoveCache(const ScDPCache* pCache) void ScDPCollection::GetAllTables(const ScRange& rSrcRange, std::set<ScDPObject*>& rRefs) const { std::set<ScDPObject*> aRefs; - TablesType::const_iterator it = maTables.begin(), itEnd = maTables.end(); - for (; it != itEnd; ++it) + for (const auto& rxTable : maTables) { - const ScDPObject& rObj = **it; + const ScDPObject& rObj = *rxTable; if (!rObj.IsSheetData()) // Source is not a sheet range. continue; @@ -3922,10 +3891,9 @@ void ScDPCollection::GetAllTables(const ScRange& rSrcRange, std::set<ScDPObject* void ScDPCollection::GetAllTables(const OUString& rSrcName, std::set<ScDPObject*>& rRefs) const { std::set<ScDPObject*> aRefs; - TablesType::const_iterator it = maTables.begin(), itEnd = maTables.end(); - for (; it != itEnd; ++it) + for (const auto& rxTable : maTables) { - const ScDPObject& rObj = **it; + const ScDPObject& rObj = *rxTable; if (!rObj.IsSheetData()) // Source is not a sheet range. continue; @@ -3953,10 +3921,9 @@ void ScDPCollection::GetAllTables( std::set<ScDPObject*>& rRefs) const { std::set<ScDPObject*> aRefs; - TablesType::const_iterator it = maTables.begin(), itEnd = maTables.end(); - for (; it != itEnd; ++it) + for (const auto& rxTable : maTables) { - const ScDPObject& rObj = **it; + const ScDPObject& rObj = *rxTable; if (!rObj.IsImportData()) // Source data is not a database. continue; diff --git a/sc/source/core/data/dpresfilter.cxx b/sc/source/core/data/dpresfilter.cxx index e1b37f3dfc2d..c4102824fe1f 100644 --- a/sc/source/core/data/dpresfilter.cxx +++ b/sc/source/core/data/dpresfilter.cxx @@ -66,15 +66,13 @@ ScDPResultTree::MemberNode::~MemberNode() {} void ScDPResultTree::MemberNode::dump(int nLevel) const { string aIndent(nLevel*2, ' '); - ValuesType::const_iterator itVal = maValues.begin(), itValEnd = maValues.end(); - for (; itVal != itValEnd; ++itVal) - cout << aIndent << "value: " << *itVal << endl; + for (const auto& rValue : maValues) + cout << aIndent << "value: " << rValue << endl; - DimensionsType::const_iterator it = maChildDimensions.begin(), itEnd = maChildDimensions.end(); - for (; it != itEnd; ++it) + for (const auto& [rName, rxDim] : maChildDimensions) { - cout << aIndent << "dimension: " << it->first << endl; - it->second->dump(nLevel+1); + cout << aIndent << "dimension: " << rName << endl; + rxDim->dump(nLevel+1); } } #endif @@ -93,10 +91,8 @@ void ScDPResultTree::add( const OUString* pMemName = nullptr; MemberNode* pMemNode = mpRoot.get(); - std::vector<ScDPResultFilter>::const_iterator itFilter = rFilters.begin(), itFilterEnd = rFilters.end(); - for (; itFilter != itFilterEnd; ++itFilter) + for (const ScDPResultFilter& filter : rFilters) { - const ScDPResultFilter& filter = *itFilter; if (filter.mbDataLayout) continue; diff --git a/sc/source/core/data/dpsave.cxx b/sc/source/core/data/dpsave.cxx index ceb9fa8d7227..c5c5139ad170 100644 --- a/sc/source/core/data/dpsave.cxx +++ b/sc/source/core/data/dpsave.cxx @@ -205,10 +205,10 @@ ScDPSaveDimension::ScDPSaveDimension(const ScDPSaveDimension& r) : bSubTotalDefault( r.bSubTotalDefault ), maSubTotalFuncs( r.maSubTotalFuncs ) { - for (MemberList::const_iterator i=r.maMemberList.begin(); i != r.maMemberList.end() ; ++i) + for (const ScDPSaveMember* pMem : r.maMemberList) { - const OUString& rName = (*i)->GetName(); - std::unique_ptr<ScDPSaveMember> pNew(new ScDPSaveMember( **i )); + const OUString& rName = pMem->GetName(); + std::unique_ptr<ScDPSaveMember> pNew(new ScDPSaveMember( *pMem )); maMemberList.push_back( pNew.get() ); maMemberHash[rName] = std::move(pNew); } @@ -248,11 +248,9 @@ bool ScDPSaveDimension::operator== ( const ScDPSaveDimension& r ) const if (maMemberHash.size() != r.maMemberHash.size() ) return false; - MemberList::const_iterator a=maMemberList.begin(); - MemberList::const_iterator b=r.maMemberList.begin(); - for (; a != maMemberList.end() ; ++a, ++b) - if (!(**a == **b)) - return false; + if (!std::equal(maMemberList.begin(), maMemberList.end(), r.maMemberList.begin(), r.maMemberList.end(), + [](const ScDPSaveMember* a, const ScDPSaveMember* b) { return *a == *b; })) + return false; if( pReferenceValue && r.pReferenceValue ) { @@ -369,18 +367,13 @@ void ScDPSaveDimension::RemoveSubtotalName() bool ScDPSaveDimension::IsMemberNameInUse(const OUString& rName) const { - MemberList::const_iterator itr = maMemberList.begin(), itrEnd = maMemberList.end(); - for (; itr != itrEnd; ++itr) - { - const ScDPSaveMember* pMem = *itr; + return std::any_of(maMemberList.begin(), maMemberList.end(), [&rName](const ScDPSaveMember* pMem) { if (rName.equalsIgnoreAsciiCase(pMem->GetName())) return true; const boost::optional<OUString> & pLayoutName = pMem->GetLayoutName(); - if (pLayoutName && rName.equalsIgnoreAsciiCase(*pLayoutName)) - return true; - } - return false; + return pLayoutName && rName.equalsIgnoreAsciiCase(*pLayoutName); + }); } void ScDPSaveDimension::SetLayoutName(const OUString& rName) @@ -435,10 +428,8 @@ void ScDPSaveDimension::SetCurrentPage( const OUString* pPage ) // We use member's visibility attribute to filter by page dimension. // pPage == nullptr -> all members visible. - MemberList::iterator it = maMemberList.begin(), itEnd = maMemberList.end(); - for (; it != itEnd; ++it) + for (ScDPSaveMember* pMem : maMemberList) { - ScDPSaveMember* pMem = *it; bool bVisible = !pPage || pMem->GetName() == *pPage; pMem->SetIsVisible(bVisible); } @@ -446,13 +437,10 @@ void ScDPSaveDimension::SetCurrentPage( const OUString* pPage ) OUString ScDPSaveDimension::GetCurrentPage() const { - MemberList::const_iterator it = maMemberList.begin(), itEnd = maMemberList.end(); - for (; it != itEnd; ++it) - { - const ScDPSaveMember* pMem = *it; - if (pMem->GetIsVisible()) - return pMem->GetName(); - } + MemberList::const_iterator it = std::find_if(maMemberList.begin(), maMemberList.end(), + [](const ScDPSaveMember* pMem) { return pMem->GetIsVisible(); }); + if (it != maMemberList.end()) + return (*it)->GetName(); return OUString(); } @@ -596,9 +584,8 @@ void ScDPSaveDimension::WriteToSource( const uno::Reference<uno::XInterface>& xD if ( !pSortInfo || pSortInfo->Mode == sheet::DataPilotFieldSortMode::MANUAL ) nPosition = 0; - for (MemberList::const_iterator i=maMemberList.begin(); i != maMemberList.end() ; ++i) + for (ScDPSaveMember* pMember : maMemberList) { - ScDPSaveMember* pMember = *i; if (!pMember->GetIsVisible()) bHasHiddenMember = true; OUString aMemberName = pMember->GetName(); @@ -626,10 +613,8 @@ void ScDPSaveDimension::WriteToSource( const uno::Reference<uno::XInterface>& xD void ScDPSaveDimension::UpdateMemberVisibility(const std::unordered_map<OUString, bool>& rData) { typedef std::unordered_map<OUString, bool> DataMap; - MemberList::iterator itrMem = maMemberList.begin(), itrMemEnd = maMemberList.end(); - for (; itrMem != itrMemEnd; ++itrMem) + for (ScDPSaveMember* pMem : maMemberList) { - ScDPSaveMember* pMem = *itrMem; const OUString& rMemName = pMem->GetName(); DataMap::const_iterator itr = rData.find(rMemName); if (itr != rData.end()) @@ -639,14 +624,8 @@ void ScDPSaveDimension::UpdateMemberVisibility(const std::unordered_map<OUString bool ScDPSaveDimension::HasInvisibleMember() const { - MemberList::const_iterator itrMem = maMemberList.begin(), itrMemEnd = maMemberList.end(); - for (; itrMem != itrMemEnd; ++itrMem) - { - const ScDPSaveMember* pMem = *itrMem; - if (!pMem->GetIsVisible()) - return true; - } - return false; + return std::any_of(maMemberList.begin(), maMemberList.end(), + [](const ScDPSaveMember* pMem) { return !pMem->GetIsVisible(); }); } void ScDPSaveDimension::RemoveObsoleteMembers(const MemberSetType& rMembers) @@ -701,10 +680,8 @@ void ScDPSaveDimension::Dump(int nIndent) const cout << aIndent << " + is data layout: " << (bIsDataLayout ? "yes" : "no") << endl; cout << aIndent << " + is duplicate: " << (bDupFlag ? "yes" : "no") << endl; - MemberList::const_iterator itMem = maMemberList.begin(), itMemEnd = maMemberList.end(); - for (; itMem != itMemEnd; ++itMem) + for (ScDPSaveMember* pMem : maMemberList) { - ScDPSaveMember* pMem = *itMem; pMem->Dump(nIndent+1); } @@ -923,15 +900,14 @@ ScDPSaveDimension* ScDPSaveData::DuplicateDimension(const OUString& rName) void ScDPSaveData::RemoveDimensionByName(const OUString& rName) { - for (auto iter = m_DimList.begin(); iter != m_DimList.end(); ++iter) + auto iter = std::find_if(m_DimList.begin(), m_DimList.end(), + [&rName](const std::unique_ptr<ScDPSaveDimension>& rxDim) { + return rxDim->GetName() == rName && !rxDim->IsDataLayout(); }); + if (iter != m_DimList.end()) { - if ((*iter)->GetName() != rName || (*iter)->IsDataLayout()) - continue; - m_DimList.erase(iter); RemoveDuplicateNameCount(rName); DimensionsChanged(); - return; } } @@ -947,11 +923,11 @@ ScDPSaveDimension* ScDPSaveData::GetInnermostDimension(DataPilotFieldOrientation // return the innermost dimension for the given orientation, // excluding data layout dimension - for (auto iter = m_DimList.rbegin(); iter != m_DimList.rend(); ++iter) - { - if ((*iter)->GetOrientation() == nOrientation && !(*iter)->IsDataLayout()) - return iter->get(); - } + auto iter = std::find_if(m_DimList.rbegin(), m_DimList.rend(), + [&nOrientation](const std::unique_ptr<ScDPSaveDimension>& rxDim) { + return rxDim->GetOrientation() == nOrientation && !rxDim->IsDataLayout(); }); + if (iter != m_DimList.rend()) + return iter->get(); return nullptr; } @@ -985,27 +961,23 @@ void ScDPSaveData::SetPosition( ScDPSaveDimension* pDim, long nNew ) DataPilotFieldOrientation nOrient = pDim->GetOrientation(); - for (auto it = m_DimList.begin(); it != m_DimList.end(); ++it) + auto it = std::find_if(m_DimList.begin(), m_DimList.end(), + [&pDim](const std::unique_ptr<ScDPSaveDimension>& rxDim) { return pDim == rxDim.get(); }); + if (it != m_DimList.end()) { - if (pDim == it->get()) - { - // 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; - } + // 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); } - auto iterInsert = m_DimList.begin(); - while ( nNew > 0 && iterInsert != m_DimList.end()) - { - if ((*iterInsert)->GetOrientation() == nOrient ) - --nNew; - - ++iterInsert; - } + auto iterInsert = std::find_if(m_DimList.begin(), m_DimList.end(), + [&nOrient, &nNew](const std::unique_ptr<ScDPSaveDimension>& rxDim) { + if (rxDim->GetOrientation() == nOrient ) + --nNew; + return nNew <= 0; + }); m_DimList.insert(iterInsert, std::unique_ptr<ScDPSaveDimension>(pDim)); DimensionsChanged(); @@ -1104,15 +1076,14 @@ void ScDPSaveData::WriteToSource( const uno::Reference<sheet::XDimensionsSupplie uno::Reference<container::XIndexAccess> xIntDims = new ScNameToIndexAccess( xDimsName ); long nIntCount = xIntDims->getCount(); - auto iter = m_DimList.begin(); - for (long i = 0; iter != m_DimList.end(); ++iter, ++i) + for (const auto& rxDim : m_DimList) { - OUString aName = (*iter)->GetName(); + OUString aName = rxDim->GetName(); OUString aCoreName = ScDPUtil::getSourceDimensionName(aName); SAL_INFO("sc.core", aName); - bool bData = (*iter)->IsDataLayout(); + bool bData = rxDim->IsDataLayout(); //TODO: getByName for ScDPSource, including DataLayoutDimension !!!!!!!! @@ -1139,7 +1110,7 @@ void ScDPSaveData::WriteToSource( const uno::Reference<sheet::XDimensionsSupplie if (bFound) { - if ((*iter)->GetDupFlag()) + if (rxDim->GetDupFlag()) { uno::Reference<util::XCloneable> xCloneable(xIntDim, uno::UNO_QUERY); SAL_WARN_IF(!xCloneable.is(), "sc.core", "cannot clone dimension"); @@ -1150,12 +1121,12 @@ void ScDPSaveData::WriteToSource( const uno::Reference<sheet::XDimensionsSupplie if (xNewName.is()) { xNewName->setName(aName); - (*iter)->WriteToSource(xNew); + rxDim->WriteToSource(xNew); } } } else - (*iter)->WriteToSource( xIntDim ); + rxDim->WriteToSource( xIntDim ); } } SAL_WARN_IF(!bFound, "sc.core", "WriteToSource: Dimension not found: " + aName + "."); diff --git a/sc/source/core/data/dptabres.cxx b/sc/source/core/data/dptabres.cxx index 357ab98fbeac..da6c053c9a8c 100644 --- a/sc/source/core/data/dptabres.cxx +++ b/sc/source/core/data/dptabres.cxx @@ -2715,15 +2715,11 @@ bool ScDPGroupCompare::TestIncluded( const ScDPMember& rMember ) ScDPItemData aMemberData(rMember.FillItemData()); const std::vector<ScDPInitState::Member>& rMemStates = rInitState.GetMembers(); - std::vector<ScDPInitState::Member>::const_iterator it = rMemStates.begin(), itEnd = rMemStates.end(); - for (; it != itEnd && bInclude; ++it) - { - if (pResultData->GetGroupBase(it->mnSrcIndex) == nDimSource) - { - bInclude = pResultData->IsInGroup( - it->mnNameIndex, it->mnSrcIndex, aMemberData, nDimSource); - } - } + bInclude = std::all_of(rMemStates.begin(), rMemStates.end(), + [this, &aMemberData](const ScDPInitState::Member& rMem) { + return (pResultData->GetGroupBase(rMem.mnSrcIndex) != nDimSource) + || pResultData->IsInGroup(rMem.mnNameIndex, rMem.mnSrcIndex, aMemberData, nDimSource); + }); } else if ( nGroupBase >= 0 ) { @@ -2733,18 +2729,13 @@ bool ScDPGroupCompare::TestIncluded( const ScDPMember& rMember ) //TODO: get array of groups (or indexes) before loop? ScDPItemData aMemberData(rMember.FillItemData()); const std::vector<ScDPInitState::Member>& rMemStates = rInitState.GetMembers(); - std::vector<ScDPInitState::Member>::const_iterator it = rMemStates.begin(), itEnd = rMemStates.end(); - for (; it != itEnd && bInclude; ++it) - { - if (pResultData->GetGroupBase(it->mnSrcIndex) == nGroupBase) - { + bInclude = std::all_of(rMemStates.begin(), rMemStates.end(), + [this, &aMemberData](const ScDPInitState::Member& rMem) { // coverity[copy_paste_error : FALSE] - same base (hierarchy between // the two groups is irrelevant) - bInclude = pResultData->HasCommonElement( - it->mnNameIndex, it->mnSrcIndex, aMemberData, nDimSource); - } - - } + return (pResultData->GetGroupBase(rMem.mnSrcIndex) != nGroupBase) + || pResultData->HasCommonElement(rMem.mnNameIndex, rMem.mnSrcIndex, aMemberData, nDimSource); + }); } return bInclude; @@ -3482,10 +3473,9 @@ void ScDPResultDimension::Dump(int nIndent) const { std::string aIndent(nIndent*2, ' '); std::cout << aIndent << "-- dimension '" << GetName() << "'" << std::endl; - MemberArray::const_iterator it = maMemberArray.begin(), itEnd = maMemberArray.end(); - for (; it != itEnd; ++it) + for (const auto& rxMember : maMemberArray) { - const ScDPResultMember* p = it->get(); + const ScDPResultMember* p = rxMember.get(); p->Dump(nIndent+1); } } @@ -3518,11 +3508,9 @@ void ScDPResultDimension::FillVisibilityData(ScDPResultVisibilityData& rData) co if (IsDataLayout()) return; - MemberArray::const_iterator itr = maMemberArray.begin(), itrEnd = maMemberArray.end(); - - for (;itr != itrEnd; ++itr) + for (const auto& rxMember : maMemberArray) { - ScDPResultMember* pMember = itr->get(); + ScDPResultMember* pMember = rxMember.get(); if (pMember->IsValid()) { ScDPItemData aItem(pMember->FillItemData()); @@ -3863,9 +3851,8 @@ void ScDPDataDimension::Dump(int nIndent) const std::string aIndent(nIndent*2, ' '); std::cout << aIndent << "-- data dimension '" << (pResultDimension ? pResultDimension->GetName() : OUString()) << "'" << std::endl; - auto it = maMembers.begin(), itEnd = maMembers.end(); - for (; it != itEnd; ++it) - (*it)->Dump(nIndent+1); + for (auto& rxMember : maMembers) + rxMember->Dump(nIndent+1); } #endif @@ -3926,10 +3913,8 @@ void ScDPResultVisibilityData::fillFieldFilters(vector<ScDPFilteredCache::Criter } const ScDPDimensions* pDims = mpSource->GetDimensionsObject(); - for (DimMemberType::const_iterator itr = maDimensions.begin(), itrEnd = maDimensions.end(); - itr != itrEnd; ++itr) + for (const auto& [rDimName, rMem] : maDimensions) { - const OUString& rDimName = itr->first; ScDPFilteredCache::Criterion aCri; FieldNameMapType::const_iterator itrField = aFieldNames.find(rDimName); if (itrField == aFieldNames.end()) @@ -3943,11 +3928,8 @@ void ScDPResultVisibilityData::fillFieldFilters(vector<ScDPFilteredCache::Criter ScDPFilteredCache::GroupFilter* pGrpFilter = static_cast<ScDPFilteredCache::GroupFilter*>(aCri.mpFilter.get()); - const VisibleMemberType& rMem = itr->second; - for (VisibleMemberType::const_iterator itrMem = rMem.begin(), itrMemEnd = rMem.end(); - itrMem != itrMemEnd; ++itrMem) + for (const ScDPItemData& rMemItem : rMem) { - const ScDPItemData& rMemItem = *itrMem; pGrpFilter->addMatchItem(rMemItem); } diff --git a/sc/source/core/data/dptabsrc.cxx b/sc/source/core/data/dptabsrc.cxx index e456e3b8136a..0b3f79e35a0d 100644 --- a/sc/source/core/data/dptabsrc.cxx +++ b/sc/source/core/data/dptabsrc.cxx @@ -603,10 +603,9 @@ static long lcl_GetIndexFromName( const OUString& rName, const uno::Sequence<OUS void ScDPSource::FillCalcInfo(bool bIsRow, ScDPTableData::CalcInfo& rInfo, bool &rHasAutoShow) { const std::vector<long>& rDims = bIsRow ? maRowDims : maColDims; - std::vector<long>::const_iterator it = rDims.begin(), itEnd = rDims.end(); - for (; it != itEnd; ++it) + for (const auto& rDimIndex : rDims) { - ScDPDimension* pDim = GetDimensionsObject()->getByIndex(*it); + ScDPDimension* pDim = GetDimensionsObject()->getByIndex(rDimIndex); long nHierarchy = ScDPDimension::getUsedHierarchy(); if ( nHierarchy >= ScDPHierarchies::getCount() ) nHierarchy = 0; @@ -631,13 +630,13 @@ void ScDPSource::FillCalcInfo(bool bIsRow, ScDPTableData::CalcInfo& rInfo, bool if (bIsRow) { - rInfo.aRowLevelDims.push_back(*it); + rInfo.aRowLevelDims.push_back(rDimIndex); rInfo.aRowDims.push_back(pDim); rInfo.aRowLevels.push_back(pLevel); } else { - rInfo.aColLevelDims.push_back(*it); + rInfo.aColLevelDims.push_back(rDimIndex); rInfo.aColDims.push_back(pDim); rInfo.aColLevels.push_back(pLevel); } @@ -698,10 +697,9 @@ void ScDPSource::FilterCacheByPageDimensions() // filter table by page dimensions. vector<ScDPFilteredCache::Criterion> aCriteria; - vector<long>::const_iterator it = maPageDims.begin(), itEnd = maPageDims.end(); - for (; it != itEnd; ++it) + for (const auto& rDimIndex : maPageDims) { - ScDPDimension* pDim = GetDimensionsObject()->getByIndex(*it); + ScDPDimension* pDim = GetDimensionsObject()->getByIndex(rDimIndex); long nField = pDim->GetDimension(); ScDPMembers* pMems = pDim->GetHierarchiesObject()->getByIndex(0)-> @@ -775,11 +773,9 @@ void ScDPSource::CreateRes_Impl() // Go through all data dimensions (i.e. fields) and build their meta data // so that they can be passed on to ScDPResultData instance later. // TODO: aggregate all of data dimension info into a structure. - vector<long>::const_iterator it = maDataDims.begin(), itEnd = maDataDims.end(); - for (; it != itEnd; ++it) + for (const long nDimIndex : maDataDims) { // Get function for each data field. - long nDimIndex = *it; ScDPDimension* pDim = GetDimensionsObject()->getByIndex(nDimIndex); ScGeneralFunction eUser = pDim->getFunction(); if (eUser == ScGeneralFunction::AUTO) @@ -845,11 +841,11 @@ void ScDPSource::CreateRes_Impl() // (both in column and row fields). aInitState is filled with the page // field selections, they are kept across the data iterator loop. - for (it = maPageDims.begin(), itEnd = maPageDims.end(); it != itEnd; ++it) + for (const auto& rDimIndex : maPageDims) { - ScDPDimension* pDim = GetDimensionsObject()->getByIndex(*it); + ScDPDimension* pDim = GetDimensionsObject()->getByIndex(rDimIndex); if ( pDim->HasSelectedPage() ) - aInitState.AddMember(*it, GetCache()->GetIdByItemData(*it, pDim->GetSelectedData())); + aInitState.AddMember(rDimIndex, GetCache()->GetIdByItemData(rDimIndex, pDim->GetSelectedData())); } // Show grand total columns only when the option is set *and* there is at @@ -881,9 +877,9 @@ void ScDPSource::CreateRes_Impl() pRowResRoot->SetHasElements(); // initialize members object also for all page dimensions (needed for numeric groups) - for (it = maPageDims.begin(), itEnd = maPageDims.end(); it != itEnd; ++it) + for (const auto& rDimIndex : maPageDims) { - ScDPDimension* pDim = GetDimensionsObject()->getByIndex(*it); + ScDPDimension* pDim = GetDimensionsObject()->getByIndex(rDimIndex); long nHierarchy = ScDPDimension::getUsedHierarchy(); if ( nHierarchy >= ScDPHierarchies::getCount() ) nHierarchy = 0; @@ -911,10 +907,7 @@ void ScDPSource::CreateRes_Impl() FilterCacheByPageDimensions(); - aInfo.aPageDims.reserve(maPageDims.size()); - for (it = maPageDims.begin(), itEnd = maPageDims.end(); it != itEnd; ++it) - aInfo.aPageDims.push_back(*it); - + aInfo.aPageDims = maPageDims; aInfo.pInitState = &aInitState; aInfo.pColRoot = pColResRoot.get(); aInfo.pRowRoot = pRowResRoot.get(); @@ -994,10 +987,9 @@ void ScDPSource::FillLevelList( sheet::DataPilotFieldOrientation nOrientation, s } ScDPDimensions* pDims = GetDimensionsObject(); - std::vector<long>::const_iterator it = pDimIndex->begin(), itEnd = pDimIndex->end(); - for (; it != itEnd; ++it) + for (const auto& rIndex : *pDimIndex) { - ScDPDimension* pDim = pDims->getByIndex(*it); + ScDPDimension* pDim = pDims->getByIndex(rIndex); OSL_ENSURE( pDim->getOrientation() == nOrientation, "orientations are wrong" ); ScDPHierarchies* pHiers = pDim->GetHierarchiesObject(); @@ -2354,14 +2346,9 @@ long ScDPMembers::getMinMembers() const long nVisCount = 0; if (!maMembers.empty()) { - MembersType::const_iterator it = maMembers.begin(), itEnd = maMembers.end(); - for (; it != itEnd; ++it) - { + nVisCount = std::count_if(maMembers.begin(), maMembers.end(), [](const rtl::Reference<ScDPMember>& pMbr) { // count only visible with details (default is true for both) - const rtl::Reference<ScDPMember>& pMbr = *it; - if (!pMbr || (pMbr->isVisible() && pMbr->getShowDetails())) - ++nVisCount; - } + return !pMbr || (pMbr->isVisible() && pMbr->getShowDetails()); }); } else nVisCount = nMbrCount; // default for all diff --git a/sc/source/core/data/drwlayer.cxx b/sc/source/core/data/drwlayer.cxx index 251c76905a14..fa7a784fbb4a 100644 --- a/sc/source/core/data/drwlayer.cxx +++ b/sc/source/core/data/drwlayer.cxx @@ -1417,10 +1417,11 @@ void ScDrawLayer::DeleteObjectsInSelection( const ScMarkData& rMark ) rMark.GetMultiMarkArea( aMarkRange ); SCTAB nTabCount = pDoc->GetTableCount(); - ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end(); - for (; itr != itrEnd && *itr < nTabCount; ++itr) + for (const SCTAB nTab : rMark) { - SCTAB nTab = *itr; + if (nTab >= nTabCount) + break; + SdrPage* pPage = GetPage(static_cast<sal_uInt16>(nTab)); if (pPage) { @@ -1540,10 +1541,8 @@ static bool lcl_IsAllInRange( const ::std::vector< ScRangeList >& rRangesVector, { // check if every range of rRangesVector is completely in rClipRange - ::std::vector< ScRangeList >::const_iterator aIt = rRangesVector.begin(); - for( ;aIt!=rRangesVector.end(); ++aIt ) + for( const ScRangeList& rRanges : rRangesVector ) { - const ScRangeList& rRanges = *aIt; for ( size_t i = 0, nCount = rRanges.size(); i < nCount; i++ ) { const ScRange & rRange = rRanges[ i ]; @@ -1562,10 +1561,8 @@ static bool lcl_MoveRanges( ::std::vector< ScRangeList >& rRangesVector, const S bool bChanged = false; ScRange aErrorRange( ScAddress::UNINITIALIZED ); - ::std::vector< ScRangeList >::iterator aIt = rRangesVector.begin(); - for( ;aIt!=rRangesVector.end(); ++aIt ) + for( ScRangeList& rRanges : rRangesVector ) { - ScRangeList& rRanges = *aIt; for ( size_t i = 0, nCount = rRanges.size(); i < nCount; i++ ) { ScRange & rRange = rRanges[ i ]; diff --git a/sc/source/core/data/fillinfo.cxx b/sc/source/core/data/fillinfo.cxx index 34a6950cbf76..ecdcfd6deb64 100644 --- a/sc/source/core/data/fillinfo.cxx +++ b/sc/source/core/data/fillinfo.cxx @@ -287,10 +287,9 @@ bool handleConditionalFormat(ScConditionalFormatList& rCondFormList, const std:: { bool bFound = false; bool bAnyCondition = false; - for(std::vector<sal_uInt32>::const_iterator itr = rCondFormats.begin(); - itr != rCondFormats.end() && !bFound; ++itr) + for(const auto& rCondFormat : rCondFormats) { - ScConditionalFormat* pCondForm = rCondFormList.GetFormat(*itr); + ScConditionalFormat* pCondForm = rCondFormList.GetFormat(rCondFormat); if(!pCondForm) continue; @@ -340,6 +339,9 @@ bool handleConditionalFormat(ScConditionalFormatList& rCondFormList, const std:: pInfo->pIconSet = std::move(aData.pIconSet); bFound = true; } + + if (bFound) + break; } return bAnyCondition; diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx index 1af4729634f8..e7b9b2eedd04 100644 --- a/sc/source/core/data/formulacell.cxx +++ b/sc/source/core/data/formulacell.cxx @@ -583,10 +583,9 @@ sc::FormulaGroupAreaListener* ScFormulaCellGroup::getAreaListener( void ScFormulaCellGroup::endAllGroupListening( ScDocument& rDoc ) { - AreaListenersType::iterator it = mpImpl->m_AreaListeners.begin(), itEnd = mpImpl->m_AreaListeners.end(); - for (; it != itEnd; ++it) + for (auto& rEntry : mpImpl->m_AreaListeners) { - sc::FormulaGroupAreaListener *const pListener = it->second.get(); + sc::FormulaGroupAreaListener *const pListener = rEntry.second.get(); ScRange aListenRange = pListener->getListeningRange(); // This "always listen" special range is never grouped. bool bGroupListening = (aListenRange != BCA_LISTEN_ALWAYS); diff --git a/sc/source/core/data/markdata.cxx b/sc/source/core/data/markdata.cxx index 7c18face085e..8332746878fa 100644 --- a/sc/source/core/data/markdata.cxx +++ b/sc/source/core/data/markdata.cxx @@ -424,13 +424,12 @@ void ScMarkData::ExtendRangeListTables( ScRangeList* pList ) const ScRangeList aOldList(*pList); pList->RemoveAll(); //TODO: or skip the existing below - std::set<SCTAB>::const_iterator it = maTabMarked.begin(); - for (; it != maTabMarked.end(); ++it) + for (const auto& rTab : maTabMarked) for ( size_t i=0, nCount = aOldList.size(); i<nCount; i++) { ScRange aRange = aOldList[ i ]; - aRange.aStart.SetTab(*it); - aRange.aEnd.SetTab(*it); + aRange.aStart.SetTab(rTab); + aRange.aEnd.SetTab(rTab); pList->push_back( aRange ); } } @@ -598,13 +597,12 @@ bool ScMarkData::HasAnyMultiMarks() const void ScMarkData::InsertTab( SCTAB nTab ) { std::set<SCTAB> tabMarked; - for (auto itr = maTabMarked.begin(), itrEnd = maTabMarked.end(); - itr != itrEnd; ++itr) + for (const auto& rTab : maTabMarked) { - if (*itr < nTab) - tabMarked.insert(*itr); + if (rTab < nTab) + tabMarked.insert(rTab); else - tabMarked.insert(*itr + 1); + tabMarked.insert(rTab + 1); } maTabMarked.swap(tabMarked); } @@ -612,13 +610,12 @@ void ScMarkData::InsertTab( SCTAB nTab ) void ScMarkData::DeleteTab( SCTAB nTab ) { std::set<SCTAB> tabMarked; - for (auto itr = maTabMarked.begin(), itrEnd = maTabMarked.end(); - itr != itrEnd; ++itr) + for (const auto& rTab : maTabMarked) { - if (*itr < nTab) - tabMarked.insert(*itr); - else if (*itr > nTab) - tabMarked.insert(*itr - 1); + if (rTab < nTab) + tabMarked.insert(rTab); + else if (rTab > nTab) + tabMarked.insert(rTab - 1); } maTabMarked.swap(tabMarked); } diff --git a/sc/source/core/data/olinetab.cxx b/sc/source/core/data/olinetab.cxx index a8d5146a6a23..a7e66c8f8d55 100644 --- a/sc/source/core/data/olinetab.cxx +++ b/sc/source/core/data/olinetab.cxx @@ -143,10 +143,9 @@ ScOutlineArray::ScOutlineArray( const ScOutlineArray& rArray ) : for (size_t nLevel = 0; nLevel < nDepth; ++nLevel) { const ScOutlineCollection& rColl = rArray.aCollections[nLevel]; - ScOutlineCollection::const_iterator it = rColl.begin(), itEnd = rColl.end(); - for (; it != itEnd; ++it) + for (const auto& rEntry : rColl) { - const ScOutlineEntry *const pEntry = &it->second; + const ScOutlineEntry *const pEntry = &rEntry.second; aCollections[nLevel].insert(*pEntry); } } @@ -164,15 +163,16 @@ void ScOutlineArray::FindEntry( for (size_t nLevel = 0; nLevel < nMaxLevel; ++nLevel) //TODO: Search backwards? { ScOutlineCollection* pCollect = &aCollections[nLevel]; - ScOutlineCollection::iterator it = pCollect->begin(), itEnd = pCollect->end(); - for (; it != itEnd; ++it) + size_t nIndex = 0; + for (auto& rEntry : *pCollect) { - ScOutlineEntry *const pEntry = &it->second; + ScOutlineEntry *const pEntry = &rEntry.second; if (pEntry->GetStart() <= nSearchPos && pEntry->GetEnd() >= nSearchPos) { rFindLevel = nLevel + 1; // Next Level (for insertion) - rFindIndex = std::distance(pCollect->begin(), it); + rFindIndex = nIndex; } + ++nIndex; } } } @@ -289,10 +289,9 @@ bool ScOutlineArray::FindTouchedLevel( for (size_t nLevel = 0; nLevel < nDepth; ++nLevel) { const ScOutlineCollection* pCollect = &aCollections[nLevel]; - ScOutlineCollection::const_iterator it = pCollect->begin(), itEnd = pCollect->end(); - for (; it != itEnd; ++it) + for (const auto& rEntry : *pCollect) { - const ScOutlineEntry *const pEntry = &it->second; + const ScOutlineEntry *const pEntry = &rEntry.second; SCCOLROW nStart = pEntry->GetStart(); SCCOLROW nEnd = pEntry->GetEnd(); @@ -465,13 +464,13 @@ const ScOutlineEntry* ScOutlineArray::GetEntryByPos(size_t nLevel, SCCOLROW nPos return nullptr; const ScOutlineCollection& rColl = aCollections[nLevel]; - ScOutlineCollection::const_iterator it = rColl.begin(), itEnd = rColl.end(); - for (; it != itEnd; ++it) - { - const ScOutlineEntry *const pEntry = &it->second; - if (pEntry->GetStart() <= nPos && nPos <= pEntry->GetEnd()) - return pEntry; - } + ScOutlineCollection::const_iterator it = std::find_if(rColl.begin(), rColl.end(), + [&nPos](const auto& rEntry) { + const ScOutlineEntry *const pEntry = &rEntry.second; + return pEntry->GetStart() <= nPos && nPos <= pEntry->GetEnd(); + }); + if (it != rColl.end()) + return &it->second; return nullptr; } @@ -483,15 +482,15 @@ bool ScOutlineArray::GetEntryIndex(size_t nLevel, SCCOLROW nPos, size_t& rnIndex // Found entry contains passed position const ScOutlineCollection& rColl = aCollections[nLevel]; - ScOutlineCollection::const_iterator it = rColl.begin(), itEnd = rColl.end(); - for (; it != itEnd; ++it) + ScOutlineCollection::const_iterator it = std::find_if(rColl.begin(), rColl.end(), + [&nPos](const auto& rEntry) { + const ScOutlineEntry *const p = &rEntry.second; + return p->GetStart() <= nPos && nPos <= p->GetEnd(); + }); + if (it != rColl.end()) { - const ScOutlineEntry *const p = &it->second; - if (p->GetStart() <= nPos && nPos <= p->GetEnd()) - { - rnIndex = std::distance(rColl.begin(), it); - return true; - } + rnIndex = std::distance(rColl.begin(), it); + return true; } return false; } @@ -504,15 +503,15 @@ bool ScOutlineArray::GetEntryIndexInRange( // Found entry will be completely inside of passed range const ScOutlineCollection& rColl = aCollections[nLevel]; - ScOutlineCollection::const_iterator it = rColl.begin(), itEnd = rColl.end(); - for (; it != itEnd; ++it) + ScOutlineCollection::const_iterator it = std::find_if(rColl.begin(), rColl.end(), + [&nBlockStart, &nBlockEnd](const auto& rEntry) { + const ScOutlineEntry *const p = &rEntry.second; + return nBlockStart <= p->GetStart() && p->GetEnd() <= nBlockEnd; + }); + if (it != rColl.end()) { - const ScOutlineEntry *const p = &it->second; - if (nBlockStart <= p->GetStart() && p->GetEnd() <= nBlockEnd) - { - rnIndex = std::distance(rColl.begin(), it); - return true; - } + rnIndex = std::distance(rColl.begin(), it); + return true; } return false; } @@ -530,19 +529,19 @@ void ScOutlineArray::SetVisibleBelow( for (size_t nSubLevel = nLevel+1; nSubLevel < nDepth; ++nSubLevel) { ScOutlineCollection& rColl = aCollections[nSubLevel]; - ScOutlineCollection::iterator it = rColl.begin(), itEnd = rColl.end(); - for (; it != itEnd; ++it) + size_t nPos = 0; + for (auto& rEntry : rColl) { - ScOutlineEntry *const p = &it->second; + ScOutlineEntry *const p = &rEntry.second; if (p->GetStart() >= nStart && p->GetEnd() <= nEnd) { p->SetVisible(bValue); if (bSkipHidden && !p->IsHidden()) { - size_t nPos = std::distance(rColl.begin(), it); SetVisibleBelow(nSubLevel, nPos, bValue, true); } } + ++nPos; } if (bSkipHidden) @@ -570,10 +569,9 @@ void ScOutlineArray::ExtendBlock(size_t nLevel, SCCOLROW& rBlkStart, SCCOLROW& r return; const ScOutlineCollection& rColl = aCollections[nLevel]; - ScOutlineCollection::const_iterator it = rColl.begin(), itEnd = rColl.end(); - for (; it != itEnd; ++it) + for (const auto& rEntry : rColl) { - const ScOutlineEntry *const pEntry = &it->second; + const ScOutlineEntry *const pEntry = &rEntry.second; SCCOLROW nStart = pEntry->GetStart(); SCCOLROW nEnd = pEntry->GetEnd(); diff --git a/sc/source/core/data/pivot2.cxx b/sc/source/core/data/pivot2.cxx index 7fca2b376c05..03c3e16259be 100644 --- a/sc/source/core/data/pivot2.cxx +++ b/sc/source/core/data/pivot2.cxx @@ -122,10 +122,9 @@ void ScPivotParam::SetLabelData(const ScDPLabelDataVector& rVector) { ScDPLabelDataVector aNewArray; aNewArray.reserve(rVector.size()); - ScDPLabelDataVector::const_iterator it; - for (it = rVector.begin(); it != rVector.end(); ++it) + for (const auto& rxData : rVector) { - aNewArray.push_back(std::make_unique<ScDPLabelData>(**it)); + aNewArray.push_back(std::make_unique<ScDPLabelData>(*rxData)); } maLabelArray.swap(aNewArray); } diff --git a/sc/source/core/data/stlpool.cxx b/sc/source/core/data/stlpool.cxx index 7097bbcb79e8..b2ac20625ec2 100644 --- a/sc/source/core/data/stlpool.cxx +++ b/sc/source/core/data/stlpool.cxx @@ -410,11 +410,10 @@ ScStyleSheet* ScStyleSheetPool::FindCaseIns( const OUString& rName, SfxStyleFami { CaseInsensitiveNamePredicate aPredicate(rName, eFam); std::vector<unsigned> aFoundPositions = GetIndexedStyleSheets().FindPositionsByPredicate(aPredicate); - std::vector<unsigned>::const_iterator it = aFoundPositions.begin(); - for (/**/;it != aFoundPositions.end(); ++it) + for (const auto& rPos : aFoundPositions) { - SfxStyleSheetBase *pFound = GetStyleSheetByPositionInIndex(*it); + SfxStyleSheetBase *pFound = GetStyleSheetByPositionInIndex(rPos); // we do not know what kind of sheets we have. if (pFound->isScStyleSheet()) return static_cast<ScStyleSheet*>(pFound); diff --git a/sc/source/core/data/table1.cxx b/sc/source/core/data/table1.cxx index a39376aaa390..7c5555c9f679 100644 --- a/sc/source/core/data/table1.cxx +++ b/sc/source/core/data/table1.cxx @@ -1720,12 +1720,12 @@ void ScTable::UpdateReference( SCROW nERow = 0; bool bRecalcPages = false; - for ( ScRangeVec::iterator aIt = aPrintRanges.begin(), aEnd = aPrintRanges.end(); aIt != aEnd; ++aIt ) + for ( auto& rPrintRange : aPrintRanges ) { - nSCol = aIt->aStart.Col(); - nSRow = aIt->aStart.Row(); - nECol = aIt->aEnd.Col(); - nERow = aIt->aEnd.Row(); + nSCol = rPrintRange.aStart.Col(); + nSRow = rPrintRange.aStart.Row(); + nECol = rPrintRange.aEnd.Col(); + nERow = rPrintRange.aEnd.Row(); // do not try to modify sheet index of print range if ( ScRefUpdate::Update( pDocument, eUpdateRefMode, @@ -1733,7 +1733,7 @@ void ScTable::UpdateReference( nDx,nDy,0, nSCol,nSRow,nSTab, nECol,nERow,nETab ) ) { - *aIt = ScRange( nSCol, nSRow, 0, nECol, nERow, 0 ); + rPrintRange = ScRange( nSCol, nSRow, 0, nECol, nERow, 0 ); bRecalcPages = true; } } diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index 36c6b531ba46..65d87fb28162 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -586,15 +586,14 @@ void ScTable::CopyConditionalFormat( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCRO ScRange aNewRange( nCol1, nRow1, nTab, nCol2, nRow2, nTab ); bool bSameDoc = pDocument->GetStyleSheetPool() == pTable->pDocument->GetStyleSheetPool(); - for(ScConditionalFormatList::const_iterator itr = pTable->mpCondFormatList->begin(), - itrEnd = pTable->mpCondFormatList->end(); itr != itrEnd; ++itr) + for(const auto& rxCondFormat : *pTable->mpCondFormatList) { - const ScRangeList& rCondFormatRange = (*itr)->GetRange(); + const ScRangeList& rCondFormatRange = rxCondFormat->GetRange(); if(!rCondFormatRange.Intersects( aOldRange )) continue; ScRangeList aIntersectedRange = rCondFormatRange.GetIntersectedRange(aOldRange); - std::unique_ptr<ScConditionalFormat> pNewFormat = (*itr)->Clone(pDocument); + std::unique_ptr<ScConditionalFormat> pNewFormat = rxCondFormat->Clone(pDocument); pNewFormat->SetRange(aIntersectedRange); sc::RefUpdateContext aRefCxt(*pDocument); @@ -605,25 +604,24 @@ void ScTable::CopyConditionalFormat( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCRO aRefCxt.mnTabDelta = nTab - pTable->nTab; pNewFormat->UpdateReference(aRefCxt, true); - if (bSameDoc && pTable->nTab == nTab && CheckAndDeduplicateCondFormat(pDocument, mpCondFormatList->GetFormat((*itr)->GetKey()), pNewFormat.get(), nTab)) + if (bSameDoc && pTable->nTab == nTab && CheckAndDeduplicateCondFormat(pDocument, mpCondFormatList->GetFormat(rxCondFormat->GetKey()), pNewFormat.get(), nTab)) { continue; } sal_uLong nMax = 0; bool bDuplicate = false; - for(ScConditionalFormatList::const_iterator itrCond = mpCondFormatList->begin(); - itrCond != mpCondFormatList->end(); ++itrCond) + for(const auto& rxCond : *mpCondFormatList) { // Check if there is the same format in the destination // If there is, then simply expand its range - if (CheckAndDeduplicateCondFormat(pDocument, (*itrCond).get(), pNewFormat.get(), nTab)) + if (CheckAndDeduplicateCondFormat(pDocument, rxCond.get(), pNewFormat.get(), nTab)) { bDuplicate = true; break; } - if ((*itrCond)->GetKey() > nMax) - nMax = (*itrCond)->GetKey(); + if (rxCond->GetKey() > nMax) + nMax = rxCond->GetKey(); } // Do not add duplicate entries if (bDuplicate) @@ -1662,14 +1660,11 @@ CommentCaptionState ScTable::GetAllNoteCaptionsState(const ScRange& rRange, std: { aCol[nCol].GetNotesInRange(nStartRow, nEndRow, rNotes); - for(std::vector<sc::NoteEntry>::const_iterator itr = rNotes.begin(), - itrEnd = rNotes.end(); itr != itrEnd; ++itr) - { - if ( bIsFirstNoteShownState != itr->mpNote->IsCaptionShown()) // compare the first note caption with others - { - return CommentCaptionState::MIXED; - } - } + bool bIsMixedState = std::any_of(rNotes.begin(), rNotes.end(), [bIsFirstNoteShownState](const sc::NoteEntry& rNote) { + // compare the first note caption with others + return bIsFirstNoteShownState != rNote.mpNote->IsCaptionShown(); }); + if (bIsMixedState) + return CommentCaptionState::MIXED; } } return bIsFirstNoteShownState ? CommentCaptionState::ALLSHOWN : CommentCaptionState::ALLHIDDEN; @@ -2173,10 +2168,9 @@ void ScTable::FindMaxRotCol( RowInfo* pRowInfo, SCSIZE nArrCount, SCCOL nX1, SCC ScStyleSheetPool* pStylePool = pDocument->GetStyleSheetPool(); if (mpCondFormatList && pStylePool && !rCondFormatData.empty()) { - for(std::vector<sal_uInt32>::const_iterator itr = rCondFormatData.begin(), itrEnd = rCondFormatData.end(); - itr != itrEnd; ++itr) + for(const auto& rItem : rCondFormatData) { - const ScConditionalFormat* pFormat = mpCondFormatList->GetFormat(*itr); + const ScConditionalFormat* pFormat = mpCondFormatList->GetFormat(rItem); if ( pFormat ) { size_t nEntryCount = pFormat->size(); diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx index eb2d1d9c4857..055c55fc14ba 100644 --- a/sc/source/core/data/table3.cxx +++ b/sc/source/core/data/table3.cxx @@ -359,10 +359,9 @@ public: RowsType aRows2; aRows2.reserve(rRows.size()); - std::vector<SCCOLROW>::const_iterator it = rIndices.begin(), itEnd = rIndices.end(); - for (; it != itEnd; ++it) + for (const auto& rIndex : rIndices) { - size_t nPos = *it - nStart; // switch to an offset to top row. + size_t nPos = rIndex - nStart; // switch to an offset to top row. aRows2.push_back(rRows[nPos]); aOrderIndices2.push_back(maOrderIndices[nPos]); } @@ -958,11 +957,10 @@ void ScTable::SortReorderByColumn( std::vector<sc::AreaListener> aAreaListeners = pDocument->GetBASM()->GetAllListeners( aMoveRange, sc::OneColumnInsideArea); { - std::vector<sc::AreaListener>::iterator it = aAreaListeners.begin(), itEnd = aAreaListeners.end(); - for (; it != itEnd; ++it) + for (auto& rAreaListener : aAreaListeners) { - pDocument->EndListeningArea(it->maArea, it->mbGroupListening, it->mpListener); - aListeners.push_back( it->mpListener); + pDocument->EndListeningArea(rAreaListener.maArea, rAreaListener.mbGroupListening, rAreaListener.mpListener); + aListeners.push_back( rAreaListener.mpListener); } } @@ -976,17 +974,16 @@ void ScTable::SortReorderByColumn( // Re-start area listeners on the reordered columns. { - std::vector<sc::AreaListener>::iterator it = aAreaListeners.begin(), itEnd = aAreaListeners.end(); - for (; it != itEnd; ++it) + for (auto& rAreaListener : aAreaListeners) { - ScRange aNewRange = it->maArea; + ScRange aNewRange = rAreaListener.maArea; sc::ColRowReorderMapType::const_iterator itCol = aColMap.find( aNewRange.aStart.Col()); if (itCol != aColMap.end()) { aNewRange.aStart.SetCol( itCol->second); aNewRange.aEnd.SetCol( itCol->second); } - pDocument->StartListeningArea(aNewRange, it->mbGroupListening, it->mpListener); + pDocument->StartListeningArea(aNewRange, rAreaListener.mbGroupListening, rAreaListener.mpListener); } } } @@ -1103,17 +1100,16 @@ void ScTable::SortReorderByRow( sc::toSpanArrayWithValue<SCROW,const ScPatternAttr*,PatternSpan>( aSortedCols[i].get()->maPatterns); - std::vector<PatternSpan>::iterator it = aSpans.begin(), itEnd = aSpans.end(); - for (; it != itEnd; ++it) + for (const auto& rSpan : aSpans) { - assert(it->mpPattern); // should never be NULL. - pDocument->GetPool()->Put(*it->mpPattern); + assert(rSpan.mpPattern); // should never be NULL. + pDocument->GetPool()->Put(*rSpan.mpPattern); } - for (it = aSpans.begin(); it != itEnd; ++it) + for (const auto& rSpan : aSpans) { - aCol[nThisCol].SetPatternArea(it->mnRow1, it->mnRow2, *it->mpPattern); - pDocument->GetPool()->Remove(*it->mpPattern); + aCol[nThisCol].SetPatternArea(rSpan.mnRow1, rSpan.mnRow2, *rSpan.mpPattern); + pDocument->GetPool()->Remove(*rSpan.mpPattern); } } @@ -1132,16 +1128,13 @@ void ScTable::SortReorderByRow( std::vector<sc::RowSpan> aSpans = sc::toSpanArray<SCROW,sc::RowSpan>(aRowFlags.maRowsHidden, nRow1); - std::vector<sc::RowSpan>::const_iterator it = aSpans.begin(), itEnd = aSpans.end(); - for (; it != itEnd; ++it) - SetRowHidden(it->mnRow1, it->mnRow2, true); + for (const auto& rSpan : aSpans) + SetRowHidden(rSpan.mnRow1, rSpan.mnRow2, true); aSpans = sc::toSpanArray<SCROW,sc::RowSpan>(aRowFlags.maRowsFiltered, nRow1); - it = aSpans.begin(); - itEnd = aSpans.end(); - for (; it != itEnd; ++it) - SetRowFiltered(it->mnRow1, it->mnRow2, true); + for (const auto& rSpan : aSpans) + SetRowFiltered(rSpan.mnRow1, rSpan.mnRow2, true); } // Notify the cells' listeners to (re-)start listening. @@ -1185,13 +1178,12 @@ void ScTable::SortReorderByRowRefUpdate( aMoveRange, sc::AreaInsideOrOverlap, sc::ListenerGroupType::Group); { - std::vector<sc::AreaListener>::iterator it = aGrpListeners.begin(), itEnd = aGrpListeners.end(); - for (; it != itEnd; ++it) + for (auto& rGrpListener : aGrpListeners) { - assert(it->mbGroupListening); - SvtListener* pGrpLis = it->mpListener; + assert(rGrpListener.mbGroupListening); + SvtListener* pGrpLis = rGrpListener.mpListener; pGrpLis->Query(aQuery); - pDocument->EndListeningArea(it->maArea, it->mbGroupListening, pGrpLis); + pDocument->EndListeningArea(rGrpListener.maArea, rGrpListener.mbGroupListening, pGrpLis); } } @@ -1305,17 +1297,16 @@ void ScTable::SortReorderByRowRefUpdate( sc::toSpanArrayWithValue<SCROW,const ScPatternAttr*,PatternSpan>( aSortedCols[i].get()->maPatterns); - std::vector<PatternSpan>::iterator it = aSpans.begin(), itEnd = aSpans.end(); - for (; it != itEnd; ++it) + for (const auto& rSpan : aSpans) { - assert(it->mpPattern); // should never be NULL. - pDocument->GetPool()->Put(*it->mpPattern); + assert(rSpan.mpPattern); // should never be NULL. + pDocument->GetPool()->Put(*rSpan.mpPattern); } - for (it = aSpans.begin(); it != itEnd; ++it) + for (const auto& rSpan : aSpans) { - aCol[nThisCol].SetPatternArea(it->mnRow1, it->mnRow2, *it->mpPattern); - pDocument->GetPool()->Remove(*it->mpPattern); + aCol[nThisCol].SetPatternArea(rSpan.mnRow1, rSpan.mnRow2, *rSpan.mpPattern); + pDocument->GetPool()->Remove(*rSpan.mpPattern); } } @@ -1334,16 +1325,13 @@ void ScTable::SortReorderByRowRefUpdate( std::vector<sc::RowSpan> aSpans = sc::toSpanArray<SCROW,sc::RowSpan>(aRowFlags.maRowsHidden, nRow1); - std::vector<sc::RowSpan>::const_iterator it = aSpans.begin(), itEnd = aSpans.end(); - for (; it != itEnd; ++it) - SetRowHidden(it->mnRow1, it->mnRow2, true); + for (const auto& rSpan : aSpans) + SetRowHidden(rSpan.mnRow1, rSpan.mnRow2, true); aSpans = sc::toSpanArray<SCROW,sc::RowSpan>(aRowFlags.maRowsFiltered, nRow1); - it = aSpans.begin(); - itEnd = aSpans.end(); - for (; it != itEnd; ++it) - SetRowFiltered(it->mnRow1, it->mnRow2, true); + for (const auto& rSpan : aSpans) + SetRowFiltered(rSpan.mnRow1, rSpan.mnRow2, true); } // Set up row reorder map (for later broadcasting of reference updates). @@ -1368,11 +1356,10 @@ void ScTable::SortReorderByRowRefUpdate( std::vector<sc::AreaListener> aAreaListeners = pDocument->GetBASM()->GetAllListeners( aMoveRange, sc::OneRowInsideArea); { - std::vector<sc::AreaListener>::iterator it = aAreaListeners.begin(), itEnd = aAreaListeners.end(); - for (; it != itEnd; ++it) + for (auto& rAreaListener : aAreaListeners) { - pDocument->EndListeningArea(it->maArea, it->mbGroupListening, it->mpListener); - aListeners.push_back( it->mpListener); + pDocument->EndListeningArea(rAreaListener.maArea, rAreaListener.mbGroupListening, rAreaListener.mpListener); + aListeners.push_back( rAreaListener.mpListener); } } @@ -1398,16 +1385,12 @@ void ScTable::SortReorderByRowRefUpdate( std::for_each(aListeners.begin(), aListeners.end(), FormulaGroupPosCollector(aFormulaGroupPos)); const sc::RefQueryFormulaGroup::TabsType& rGroupTabs = aFormulaGroupPos.getAllPositions(); - sc::RefQueryFormulaGroup::TabsType::const_iterator itGroupTab = rGroupTabs.begin(), itGroupTabEnd = rGroupTabs.end(); - for (; itGroupTab != itGroupTabEnd; ++itGroupTab) + for (const auto& [rTab, rCols] : rGroupTabs) { - const sc::RefQueryFormulaGroup::ColsType& rCols = itGroupTab->second; - sc::RefQueryFormulaGroup::ColsType::const_iterator itCol = rCols.begin(), itColEnd = rCols.end(); - for (; itCol != itColEnd; ++itCol) + for (const auto& [nCol, rCol] : rCols) { - const sc::RefQueryFormulaGroup::ColType& rCol = itCol->second; std::vector<SCROW> aBounds(rCol); - pDocument->UnshareFormulaCells(itGroupTab->first, itCol->first, aBounds); + pDocument->UnshareFormulaCells(rTab, nCol, aBounds); } } @@ -1416,28 +1399,23 @@ void ScTable::SortReorderByRowRefUpdate( std::for_each(aListeners.begin(), aListeners.end(), aFunc); // Re-group formulas in affected columns. - for (itGroupTab = rGroupTabs.begin(); itGroupTab != itGroupTabEnd; ++itGroupTab) + for (const auto& [rTab, rCols] : rGroupTabs) { - const sc::RefQueryFormulaGroup::ColsType& rCols = itGroupTab->second; - sc::RefQueryFormulaGroup::ColsType::const_iterator itCol = rCols.begin(), itColEnd = rCols.end(); - for (; itCol != itColEnd; ++itCol) - pDocument->RegroupFormulaCells(itGroupTab->first, itCol->first); + for (const auto& rEntry : rCols) + pDocument->RegroupFormulaCells(rTab, rEntry.first); } // Re-start area listeners on the reordered rows. + for (const auto& rAreaListener : aAreaListeners) { - std::vector<sc::AreaListener>::iterator it = aAreaListeners.begin(), itEnd = aAreaListeners.end(); - for (; it != itEnd; ++it) + ScRange aNewRange = rAreaListener.maArea; + sc::ColRowReorderMapType::const_iterator itRow = aRowMap.find( aNewRange.aStart.Row()); + if (itRow != aRowMap.end()) { - ScRange aNewRange = it->maArea; - sc::ColRowReorderMapType::const_iterator itRow = aRowMap.find( aNewRange.aStart.Row()); - if (itRow != aRowMap.end()) - { - aNewRange.aStart.SetRow( itRow->second); - aNewRange.aEnd.SetRow( itRow->second); - } - pDocument->StartListeningArea(aNewRange, it->mbGroupListening, it->mpListener); + aNewRange.aStart.SetRow( itRow->second); + aNewRange.aEnd.SetRow( itRow->second); } + pDocument->StartListeningArea(aNewRange, rAreaListener.mbGroupListening, rAreaListener.mpListener); } // Re-group columns in the sorted range too. @@ -1893,13 +1871,10 @@ void ScTable::RemoveSubTotals( ScSubTotalParam& rParam ) auto& aRows = aFunc.aRemoved; - auto it = aRows.rbegin(), itEnd = aRows.rend(); - for (; it != itEnd; ++it) - { - SCROW nRow = *it; - RemoveRowBreak(nRow+1, false, true); - pDocument->DeleteRow(0, nTab, MAXCOL, nTab, nRow, 1); - } + std::for_each(aRows.rbegin(), aRows.rend(), [this](const SCROW nRow) { + RemoveRowBreak(nRow+1, false, true); + pDocument->DeleteRow(0, nTab, MAXCOL, nTab, nRow, 1); + }); rParam.nRow2 -= aRows.size(); } @@ -2051,16 +2026,8 @@ bool ScTable::DoSubTotals( ScSubTotalParam& rParam ) if ( bChanged && bTestPrevSub ) { // No group change on rows that will contain subtotal formulas - for ( ::std::vector< RowEntry >::const_iterator - iEntry( aRowVector.begin()); - iEntry != aRowVector.end(); ++iEntry) - { - if ( iEntry->nDestRow == nRow ) - { - bChanged = false; - break; - } - } + bChanged = std::none_of(aRowVector.begin(), aRowVector.end(), + [&nRow](const RowEntry& rEntry) { return rEntry.nDestRow == nRow; }); } } if ( bChanged ) @@ -2078,18 +2045,16 @@ bool ScTable::DoSubTotals( ScSubTotalParam& rParam ) if (bSpaceLeft) { - for ( ::std::vector< RowEntry >::iterator iMove( - aRowVector.begin() ); - iMove != aRowVector.end(); ++iMove) + for ( auto& rRowEntry : aRowVector) { - if ( aRowEntry.nDestRow <= iMove->nSubStartRow ) - ++iMove->nSubStartRow; - if ( aRowEntry.nDestRow <= iMove->nDestRow ) - ++iMove->nDestRow; - if ( aRowEntry.nDestRow <= iMove->nFuncStart ) - ++iMove->nFuncStart; - if ( aRowEntry.nDestRow <= iMove->nFuncEnd ) - ++iMove->nFuncEnd; + if ( aRowEntry.nDestRow <= rRowEntry.nSubStartRow ) + ++rRowEntry.nSubStartRow; + if ( aRowEntry.nDestRow <= rRowEntry.nDestRow ) + ++rRowEntry.nDestRow; + if ( aRowEntry.nDestRow <= rRowEntry.nFuncStart ) + ++rRowEntry.nFuncStart; + if ( aRowEntry.nDestRow <= rRowEntry.nFuncEnd ) + ++rRowEntry.nFuncEnd; } // collect formula positions aRowVector.push_back( aRowEntry ); @@ -2130,11 +2095,10 @@ bool ScTable::DoSubTotals( ScSubTotalParam& rParam ) SCROW nGlobalStartFunc = aRowVector[0].nFuncStart; SCROW nGlobalEndRow = 0; SCROW nGlobalEndFunc = 0; - for (::std::vector< RowEntry >::const_iterator iEntry(aRowVector.begin()); - iEntry != aRowVector.end(); ++iEntry) + for (const auto& rRowEntry : aRowVector) { - nGlobalEndRow = (nGlobalEndRow < iEntry->nDestRow) ? iEntry->nDestRow : nGlobalEndRow; - nGlobalEndFunc = (nGlobalEndFunc < iEntry->nFuncEnd) ? iEntry->nFuncEnd : nGlobalEndRow; + nGlobalEndRow = (nGlobalEndRow < rRowEntry.nDestRow) ? rRowEntry.nDestRow : nGlobalEndRow; + nGlobalEndFunc = (nGlobalEndFunc < rRowEntry.nFuncEnd) ? rRowEntry.nFuncEnd : nGlobalEndRow; } for (sal_uInt16 nLevel = 0; nLevel<nLevelCount; nLevel++) @@ -2184,18 +2148,17 @@ bool ScTable::DoSubTotals( ScSubTotalParam& rParam ) aRef.InitFlags(); aRef.Ref1.SetAbsTab(nTab); aRef.Ref2.SetAbsTab(nTab); - for ( ::std::vector< RowEntry >::const_iterator iEntry( aRowVector.begin()); - iEntry != aRowVector.end(); ++iEntry) + for (const auto& rRowEntry : aRowVector) { - SCCOL nResCount = rParam.nSubTotals[iEntry->nGroupNo]; - SCCOL* nResCols = rParam.pSubTotals[iEntry->nGroupNo]; - ScSubTotalFunc* pResFunc = rParam.pFunctions[iEntry->nGroupNo]; + SCCOL nResCount = rParam.nSubTotals[rRowEntry.nGroupNo]; + SCCOL* nResCols = rParam.pSubTotals[rRowEntry.nGroupNo]; + ScSubTotalFunc* pResFunc = rParam.pFunctions[rRowEntry.nGroupNo]; for ( SCCOL nResult=0; nResult < nResCount; ++nResult ) { aRef.Ref1.SetAbsCol(nResCols[nResult]); - aRef.Ref1.SetAbsRow(iEntry->nFuncStart); + aRef.Ref1.SetAbsRow(rRowEntry.nFuncStart); aRef.Ref2.SetAbsCol(nResCols[nResult]); - aRef.Ref2.SetAbsRow(iEntry->nFuncEnd); + aRef.Ref2.SetAbsRow(rRowEntry.nFuncEnd); ScTokenArray aArr; aArr.AddOpCode( ocSubTotal ); @@ -2206,16 +2169,16 @@ bool ScTable::DoSubTotals( ScSubTotalParam& rParam ) aArr.AddOpCode( ocClose ); aArr.AddOpCode( ocStop ); ScFormulaCell* pCell = new ScFormulaCell( - pDocument, ScAddress(nResCols[nResult], iEntry->nDestRow, nTab), aArr); + pDocument, ScAddress(nResCols[nResult], rRowEntry.nDestRow, nTab), aArr); if ( rParam.bIncludePattern ) pCell->SetNeedNumberFormat(true); - SetFormulaCell(nResCols[nResult], iEntry->nDestRow, pCell); - if ( nResCols[nResult] != nGroupCol[iEntry->nGroupNo] ) + SetFormulaCell(nResCols[nResult], rRowEntry.nDestRow, pCell); + if ( nResCols[nResult] != nGroupCol[rRowEntry.nGroupNo] ) { - ApplyStyle( nResCols[nResult], iEntry->nDestRow, pStyle ); + ApplyStyle( nResCols[nResult], rRowEntry.nDestRow, pStyle ); - lcl_RemoveNumberFormat( this, nResCols[nResult], iEntry->nDestRow ); + lcl_RemoveNumberFormat( this, nResCols[nResult], rRowEntry.nDestRow ); } } @@ -2808,28 +2771,26 @@ bool ScTable::ValidQuery( } else { - ScQueryEntry::QueryItemsType::const_iterator itr = rItems.begin(), itrEnd = rItems.end(); - - for (; itr != itrEnd; ++itr) + for (const auto& rItem : rItems) { - if (aEval.isQueryByValue(*itr, nCol, nRow, aCell)) + if (aEval.isQueryByValue(rItem, nCol, nRow, aCell)) { std::pair<bool,bool> aThisRes = - aEval.compareByValue(aCell, nCol, nRow, rEntry, *itr, pContext); + aEval.compareByValue(aCell, nCol, nRow, rEntry, rItem, pContext); aRes.first |= aThisRes.first; aRes.second |= aThisRes.second; } - else if (aEval.isQueryByString(rEntry, *itr, nCol, nRow, aCell)) + else if (aEval.isQueryByString(rEntry, rItem, nCol, nRow, aCell)) { std::pair<bool,bool> aThisRes = - aEval.compareByString(aCell, nRow, rEntry, *itr, pContext); + aEval.compareByString(aCell, nRow, rEntry, rItem, pContext); aRes.first |= aThisRes.first; aRes.second |= aThisRes.second; } else if (rParam.mbRangeLookup) { std::pair<bool,bool> aThisRes = - aEval.compareByRangeLookup(aCell, nCol, nRow, rEntry, *itr); + aEval.compareByRangeLookup(aCell, nCol, nRow, rEntry, rItem); aRes.first |= aThisRes.first; aRes.second |= aThisRes.second; } diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx index d2a8fb845011..91201f0efbe7 100644 --- a/sc/source/core/data/table4.cxx +++ b/sc/source/core/data/table4.cxx @@ -648,10 +648,9 @@ void ScTable::FillAuto( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, else aCol[nCol].ApplyPatternArea( nY1, nY2, *pSrcPattern ); - for(std::vector<sal_uInt32>::const_iterator itr = rCondFormatIndex.begin(), itrEnd = rCondFormatIndex.end(); - itr != itrEnd; ++itr) + for(const auto& rIndex : rCondFormatIndex) { - ScConditionalFormat* pCondFormat = mpCondFormatList->GetFormat(*itr); + ScConditionalFormat* pCondFormat = mpCondFormatList->GetFormat(rIndex); if (pCondFormat) { ScRangeList aRange = pCondFormat->GetRange(); @@ -681,10 +680,9 @@ void ScTable::FillAuto( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, else aCol[nCol].ApplyPattern( static_cast<SCROW>(nRow), *pSrcPattern ); - for(std::vector<sal_uInt32>::const_iterator itr = rCondFormatIndex.begin(), itrEnd = rCondFormatIndex.end(); - itr != itrEnd; ++itr) + for(const auto& rIndex : rCondFormatIndex) { - ScConditionalFormat* pCondFormat = mpCondFormatList->GetFormat(*itr); + ScConditionalFormat* pCondFormat = mpCondFormatList->GetFormat(rIndex); if (pCondFormat) { ScRangeList aRange = pCondFormat->GetRange(); @@ -1251,9 +1249,8 @@ void ScTable::FillFormulaVertical( aCol[nCol].EndListeningFormulaCells(aEndCxt, nStartRow, nEndRow, &nStartRow, &nEndRow); aCol[nCol].StartListeningFormulaCells(aStartCxt, aEndCxt, nStartRow, nEndRow); - std::vector<sc::RowSpan>::const_iterator it = aSpans.begin(), itEnd = aSpans.end(); - for (; it != itEnd; ++it) - aCol[nCol].SetDirty(it->mnRow1, it->mnRow2, ScColumn::BROADCAST_NONE); + for (const auto& rSpan : aSpans) + aCol[nCol].SetDirty(rSpan.mnRow1, rSpan.mnRow2, ScColumn::BROADCAST_NONE); rProgress += nRow2 - nRow1 + 1; if (pProgress) @@ -1660,10 +1657,9 @@ void ScTable::FillSeries( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, aCol[nCol].SetPatternArea( static_cast<SCROW>(nIMin), static_cast<SCROW>(nIMax), *pSrcPattern ); - for(std::vector<sal_uInt32>::const_iterator itr = rCondFormatIndex.begin(), itrEnd = rCondFormatIndex.end(); - itr != itrEnd; ++itr) + for(const auto& rIndex : rCondFormatIndex) { - ScConditionalFormat* pCondFormat = mpCondFormatList->GetFormat(*itr); + ScConditionalFormat* pCondFormat = mpCondFormatList->GetFormat(rIndex); if (pCondFormat) { ScRangeList aRange = pCondFormat->GetRange(); @@ -1680,10 +1676,9 @@ void ScTable::FillSeries( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, { aCol[nCol].SetPatternArea( nAtRow, nAtRow, *pSrcPattern); - for(std::vector<sal_uInt32>::const_iterator itr = rCondFormatIndex.begin(), itrEnd = rCondFormatIndex.end(); - itr != itrEnd; ++itr) + for(const auto& rIndex : rCondFormatIndex) { - ScConditionalFormat* pCondFormat = mpCondFormatList->GetFormat(*itr); + ScConditionalFormat* pCondFormat = mpCondFormatList->GetFormat(rIndex); if (pCondFormat) { ScRangeList aRange = pCondFormat->GetRange(); @@ -1701,10 +1696,9 @@ void ScTable::FillSeries( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, if(!ColHidden(nAtCol)) { aCol[nAtCol].SetPattern(static_cast<SCROW>(nRow), *pSrcPattern); - for(std::vector<sal_uInt32>::const_iterator itr = rCondFormatIndex.begin(), itrEnd = rCondFormatIndex.end(); - itr != itrEnd; ++itr) + for(const auto& rIndex : rCondFormatIndex) { - ScConditionalFormat* pCondFormat = mpCondFormatList->GetFormat(*itr); + ScConditionalFormat* pCondFormat = mpCondFormatList->GetFormat(rIndex); if (pCondFormat) { ScRangeList aRange = pCondFormat->GetRange(); diff --git a/sc/source/core/data/table5.cxx b/sc/source/core/data/table5.cxx index 907d292b4d37..4d3c99f86899 100644 --- a/sc/source/core/data/table5.cxx +++ b/sc/source/core/data/table5.cxx @@ -468,16 +468,16 @@ Sequence<TablePageBreakData> ScTable::GetRowBreakData() const set<SCROW> aRowBreaks = maRowPageBreaks; copy(maRowManualBreaks.begin(), maRowManualBreaks.end(), inserter(aRowBreaks, aRowBreaks.begin())); - set<SCROW>::const_iterator itr = aRowBreaks.begin(), itrEnd = aRowBreaks.end(); + sal_Int32 i = 0; Sequence<TablePageBreakData> aSeq(aRowBreaks.size()); - for (sal_Int32 i = 0; itr != itrEnd; ++itr, ++i) + for (const SCROW nRow : aRowBreaks) { - SCROW nRow = *itr; TablePageBreakData aData; aData.Position = nRow; aData.ManualBreak = HasRowManualBreak(nRow); aSeq[i] = aData; + ++i; } return aSeq; @@ -1012,13 +1012,11 @@ void ScTable::SyncColRowFlags() pRowFlags->AndValue(0, MAXROW, nManualBreakComplement); mpColFlags->AndValue(0, MAXCOL+1, nManualBreakComplement); - for (set<SCROW>::const_iterator itr = maRowManualBreaks.begin(), itrEnd = maRowManualBreaks.end(); - itr != itrEnd; ++itr) - pRowFlags->OrValue(*itr, CRFlags::ManualBreak); + for (const auto& rBreakPos : maRowManualBreaks) + pRowFlags->OrValue(rBreakPos, CRFlags::ManualBreak); - for (set<SCCOL>::const_iterator itr = maColManualBreaks.begin(), itrEnd = maColManualBreaks.end(); - itr != itrEnd; ++itr) - mpColFlags->OrValue(*itr, CRFlags::ManualBreak); + for (const auto& rBreakPos : maColManualBreaks) + mpColFlags->OrValue(rBreakPos, CRFlags::ManualBreak); // Hidden flags. lcl_syncFlags(*mpHiddenCols, *mpHiddenRows, mpColFlags.get(), pRowFlags.get(), CRFlags::Hidden); diff --git a/sc/source/core/data/tabprotection.cxx b/sc/source/core/data/tabprotection.cxx index 312165a0739e..69fd340acedd 100644 --- a/sc/source/core/data/tabprotection.cxx +++ b/sc/source/core/data/tabprotection.cxx @@ -435,11 +435,10 @@ bool ScTableProtectionImpl::updateReference( UpdateRefMode eMode, const ScDocume const ScRange& rWhere, SCCOL nDx, SCROW nDy, SCTAB nDz ) { bool bChanged = false; - for (::std::vector<ScEnhancedProtection>::iterator it(maEnhancedProtection.begin()); - it != maEnhancedProtection.end(); ++it) + for (auto& rEnhancedProtection : maEnhancedProtection) { - if ((*it).maRangeList.is()) - bChanged |= (*it).maRangeList->UpdateReference( eMode, pDoc, rWhere, nDx, nDy, nDz); + if (rEnhancedProtection.maRangeList.is()) + bChanged |= rEnhancedProtection.maRangeList->UpdateReference( eMode, pDoc, rWhere, nDx, nDy, nDz); } return bChanged; } @@ -460,19 +459,13 @@ bool ScTableProtectionImpl::isBlockEditable( const ScRange& rRange ) const // present we assume the permission to edit is not granted. Until we // actually can evaluate the descriptors.. - for (::std::vector<ScEnhancedProtection>::const_iterator it(maEnhancedProtection.begin()), - itEnd(maEnhancedProtection.end()); it != itEnd; ++it) - { - if (!(*it).hasSecurityDescriptor() && (*it).maRangeList.is()) - { - if ((*it).maRangeList->In( rRange)) - { - // Range is editable if no password is assigned. - if (!(*it).hasPassword()) - return true; - } - } - } + auto lIsEditable = [rRange](const ScEnhancedProtection& rEnhancedProtection) { + return !rEnhancedProtection.hasSecurityDescriptor() + && rEnhancedProtection.maRangeList.is() && rEnhancedProtection.maRangeList->In( rRange) + && !rEnhancedProtection.hasPassword(); // Range is editable if no password is assigned. + }; + if (std::any_of(maEnhancedProtection.begin(), maEnhancedProtection.end(), lIsEditable)) + return true; // For a single address, a simple check with single ranges was sufficient. if (rRange.aStart == rRange.aEnd) @@ -480,16 +473,15 @@ bool ScTableProtectionImpl::isBlockEditable( const ScRange& rRange ) const // Test also for cases where rRange is encompassed by a union of two or // more ranges of the list. The original ranges are not necessarily joined. - for (::std::vector<ScEnhancedProtection>::const_iterator it(maEnhancedProtection.begin()), - itEnd(maEnhancedProtection.end()); it != itEnd; ++it) + for (const auto& rEnhancedProtection : maEnhancedProtection) { - if (!(*it).hasSecurityDescriptor() && (*it).maRangeList.is()) + if (!rEnhancedProtection.hasSecurityDescriptor() && rEnhancedProtection.maRangeList.is()) { - ScRangeList aList( (*it).maRangeList->GetIntersectedRange( rRange)); + ScRangeList aList( rEnhancedProtection.maRangeList->GetIntersectedRange( rRange)); if (aList.size() == 1 && aList[0] == rRange) { // Range is editable if no password is assigned. - if (!(*it).hasPassword()) + if (!rEnhancedProtection.hasPassword()) return true; } } @@ -501,15 +493,14 @@ bool ScTableProtectionImpl::isBlockEditable( const ScRange& rRange ) const /* TODO: once we handle passwords, remember a successful unlock at * ScEnhancedProtection so we can use that here. */ ScRangeList aRangeList; - for (::std::vector<ScEnhancedProtection>::const_iterator it(maEnhancedProtection.begin()), - itEnd(maEnhancedProtection.end()); it != itEnd; ++it) + for (const auto& rEnhancedProtection : maEnhancedProtection) { - if (!(*it).hasSecurityDescriptor() && (*it).maRangeList.is()) + if (!rEnhancedProtection.hasSecurityDescriptor() && rEnhancedProtection.maRangeList.is()) { // Ranges are editable if no password is assigned. - if (!(*it).hasPassword()) + if (!rEnhancedProtection.hasPassword()) { - const ScRangeList& rRanges = *(*it).maRangeList; + const ScRangeList& rRanges = *rEnhancedProtection.maRangeList; size_t nRanges = rRanges.size(); for (size_t i=0; i < nRanges; ++i) { diff --git a/sc/source/core/data/validat.cxx b/sc/source/core/data/validat.cxx index dc262625b794..69bc69b45668 100644 --- a/sc/source/core/data/validat.cxx +++ b/sc/source/core/data/validat.cxx @@ -959,9 +959,9 @@ ScValidationDataList::ScValidationDataList(const ScValidationDataList& rList) { // for Ref-Undo - real copy with new tokens! - for (const_iterator it = rList.begin(); it != rList.end(); ++it) + for (const auto& rxItem : rList) { - InsertNew( std::unique_ptr<ScValidationData>((*it)->Clone()) ); + InsertNew( std::unique_ptr<ScValidationData>(rxItem->Clone()) ); } //TODO: faster insert for sorted entries from rList ??? @@ -972,9 +972,9 @@ ScValidationDataList::ScValidationDataList(ScDocument* pNewDoc, { // for new documents - real copy with new tokens! - for (const_iterator it = rList.begin(); it != rList.end(); ++it) + for (const auto& rxItem : rList) { - InsertNew( std::unique_ptr<ScValidationData>((*it)->Clone(pNewDoc)) ); + InsertNew( std::unique_ptr<ScValidationData>(rxItem->Clone(pNewDoc)) ); } //TODO: faster insert for sorted entries from rList ??? |