oox/source/core/contexthandler2.cxx | 8 oox/source/core/xmlfilterbase.cxx | 24 +- oox/source/drawingml/chart/typegroupconverter.cxx | 8 oox/source/drawingml/diagram/diagramlayoutatoms.cxx | 21 -- oox/source/drawingml/shape.cxx | 18 - oox/source/ole/vbacontrol.cxx | 22 +- opencl/source/openclconfig.cxx | 30 +-- package/source/xstor/ohierarchyholder.cxx | 16 - package/source/xstor/owriteablestream.cxx | 9 package/source/xstor/xstorage.cxx | 196 ++++++++------------ package/source/zipapi/ZipFile.cxx | 26 +- package/source/zippackage/ZipPackage.cxx | 11 - package/source/zippackage/ZipPackageFolder.cxx | 33 +-- package/source/zippackage/zipfileaccess.cxx | 27 +- 14 files changed, 202 insertions(+), 247 deletions(-)
New commits: commit 9d7620613d3ea2feb45a7ff57c4d2544bb1c6fe6 Author: Arkadiy Illarionov <qar...@gmail.com> AuthorDate: Fri Feb 15 00:08:43 2019 +0300 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Fri Feb 15 12:21:28 2019 +0100 Simplify containers iterations in oox, opencl, package Use range-based loop or replace with STL functions Change-Id: I91405920d91383bc6cf13b9497d262b1f6f0a84d Reviewed-on: https://gerrit.libreoffice.org/67848 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/oox/source/core/contexthandler2.cxx b/oox/source/core/contexthandler2.cxx index a88d58b7d41a..ab9cea4a49fc 100644 --- a/oox/source/core/contexthandler2.cxx +++ b/oox/source/core/contexthandler2.cxx @@ -66,10 +66,10 @@ sal_Int32 ContextHandler2Helper::getCurrentElementWithMce() const sal_Int32 ContextHandler2Helper::getCurrentElement() const { - for ( ContextStack::reverse_iterator It = mxContextStack->rbegin(); - It != mxContextStack->rend(); ++It ) - if( getNamespace( It->mnElement ) != NMSP_mce ) - return It->mnElement; + auto It = std::find_if(mxContextStack->rbegin(), mxContextStack->rend(), + [](const ElementInfo& rItem) { return getNamespace(rItem.mnElement) != NMSP_mce; }); + if (It != mxContextStack->rend()) + return It->mnElement; return XML_ROOT_CONTEXT; } diff --git a/oox/source/core/xmlfilterbase.cxx b/oox/source/core/xmlfilterbase.cxx index 09d5dd63060d..8050c91b0d8e 100644 --- a/oox/source/core/xmlfilterbase.cxx +++ b/oox/source/core/xmlfilterbase.cxx @@ -782,30 +782,31 @@ writeCustomProperties( XmlFilterBase& rSelf, const Reference< XDocumentPropertie FSNS( XML_xmlns, XML_vt ), OUStringToOString(rSelf.getNamespaceURL(OOX_NS(officeDocPropsVT)), RTL_TEXTENCODING_UTF8).getStr(), FSEND ); - for (auto aIt = aprop.begin(); aIt != aprop.end(); ++aIt) + size_t nIndex = 0; + for (const auto& rProp : aprop) { - if ( !aIt->Name.isEmpty() ) + if ( !rProp.Name.isEmpty() ) { - OString aName = OUStringToOString( aIt->Name, RTL_TEXTENCODING_ASCII_US ); + OString aName = OUStringToOString( rProp.Name, RTL_TEXTENCODING_ASCII_US ); // pid starts from 2 not from 1 as MS supports pid from 2 pAppProps->startElement( XML_property , XML_fmtid, "{D5CDD505-2E9C-101B-9397-08002B2CF9AE}", - XML_pid, OString::number((aIt - aprop.begin()) + 2), + XML_pid, OString::number(nIndex + 2), XML_name, aName, FSEND); - switch ( aIt->Value.getValueTypeClass() ) + switch ( rProp.Value.getValueTypeClass() ) { case TypeClass_STRING: { OUString aValue; - aIt->Value >>= aValue; + rProp.Value >>= aValue; writeElement( pAppProps, FSNS( XML_vt, XML_lpwstr ), aValue ); } break; case TypeClass_BOOLEAN: { - bool val = *o3tl::forceAccess<bool>(aIt->Value); + bool val = *o3tl::forceAccess<bool>(rProp.Value); writeElement( pAppProps, FSNS( XML_vt, XML_bool ), val ? 1 : 0); } break; @@ -815,23 +816,23 @@ writeCustomProperties( XmlFilterBase& rSelf, const Reference< XDocumentPropertie util::Date aDate; util::Duration aDuration; util::DateTime aDateTime; - if ( ( aIt->Value ) >>= num ) + if ( rProp.Value >>= num ) { writeElement( pAppProps, FSNS( XML_vt, XML_i4 ), num ); } - else if ( ( aIt->Value ) >>= aDate ) + else if ( rProp.Value >>= aDate ) { aDateTime = util::DateTime( 0, 0 , 0, 0, aDate.Year, aDate.Month, aDate.Day, true ); writeElement( pAppProps, FSNS( XML_vt, XML_filetime ), aDateTime); } - else if ( ( aIt->Value ) >>= aDuration ) + else if ( rProp.Value >>= aDuration ) { OUStringBuffer buf; ::sax::Converter::convertDuration( buf, aDuration ); OUString aDurationStr = buf.makeStringAndClear(); writeElement( pAppProps, FSNS( XML_vt, XML_lpwstr ), aDurationStr ); } - else if ( ( aIt->Value ) >>= aDateTime ) + else if ( rProp.Value >>= aDateTime ) writeElement( pAppProps, FSNS( XML_vt, XML_filetime ), aDateTime ); else //no other options @@ -841,6 +842,7 @@ writeCustomProperties( XmlFilterBase& rSelf, const Reference< XDocumentPropertie } pAppProps->endElement( XML_property ); } + ++nIndex; } pAppProps->endElement( XML_Properties ); } diff --git a/oox/source/drawingml/chart/typegroupconverter.cxx b/oox/source/drawingml/chart/typegroupconverter.cxx index 98623f750aca..1f6c73e11d0b 100644 --- a/oox/source/drawingml/chart/typegroupconverter.cxx +++ b/oox/source/drawingml/chart/typegroupconverter.cxx @@ -371,7 +371,7 @@ void TypeGroupConverter::convertFromModel( const Reference< XDiagram >& rxDiagra ::std::vector< Reference< XLabeledDataSequence > > aLabeledSeqVec; OSL_ENSURE( aSeries.size() >= 3, "TypeGroupConverter::convertFromModel - too few stock chart series" ); int nRoleIdx = (aSeries.size() == 3) ? 1 : 0; - for( SeriesConvVector::iterator aIt = aSeries.begin(), aEnd = aSeries.end(); (nRoleIdx < 4) && (aIt != aEnd); ++nRoleIdx, ++aIt ) + for( auto& rxSeriesConv : aSeries ) { // create a data sequence with a specific role OUString aRole; @@ -382,9 +382,13 @@ void TypeGroupConverter::convertFromModel( const Reference< XDiagram >& rxDiagra case 2: aRole = "values-min"; break; case 3: aRole = "values-last"; break; } - Reference< XLabeledDataSequence > xDataSeq = (*aIt)->createValueSequence( aRole ); + Reference< XLabeledDataSequence > xDataSeq = rxSeriesConv->createValueSequence( aRole ); if( xDataSeq.is() ) aLabeledSeqVec.push_back( xDataSeq ); + + ++nRoleIdx; + if (nRoleIdx >= 4) + break; } // attach labeled data sequences to series and insert series into chart type diff --git a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx index 1e7e9607172e..b3063762cd7a 100644 --- a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx +++ b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx @@ -150,10 +150,8 @@ void calculateHierChildOffsetScale(const oox::drawingml::ShapePtr& pShape, { const oox::drawingml::ShapePtr& pParentShape = rParents[nParent]; const std::vector<oox::drawingml::ShapePtr>& rChildren = pParentShape->getChildren(); - auto it = std::find_if( - rChildren.begin(), rChildren.end(), - [pShape](const oox::drawingml::ShapePtr& pChild) { return pChild == pShape; }); - if (it == rChildren.end()) + if (std::none_of(rChildren.begin(), rChildren.end(), + [pShape](const oox::drawingml::ShapePtr& pChild) { return pChild == pShape; })) // This is not our parent. continue; @@ -1152,23 +1150,20 @@ bool LayoutNode::setupShape( const ShapePtr& rShape, const dgm::Point* pPresNode pPresNode->msModelId); if( aNodeName != mrDgm.getData()->getPresOfNameMap().end() ) { - DiagramData::StringMap::value_type::second_type::const_iterator aVecIter=aNodeName->second.begin(); - const DiagramData::StringMap::value_type::second_type::const_iterator aVecEnd=aNodeName->second.end(); - while( aVecIter != aVecEnd ) + for( const auto& rItem : aNodeName->second ) { DiagramData::PointNameMap& rMap = mrDgm.getData()->getPointNameMap(); // pPresNode is the presentation node of the aDataNode2 data node. - DiagramData::PointNameMap::const_iterator aDataNode2 = rMap.find(aVecIter->first); + DiagramData::PointNameMap::const_iterator aDataNode2 = rMap.find(rItem.first); if (aDataNode2 == rMap.end()) { //busted, skip it - ++aVecIter; continue; } rShape->setDataNodeType(aDataNode2->second->mnType); - if( aVecIter->second == 0 ) + if( rItem.second == 0 ) { // grab shape attr from topmost element(s) rShape->getShapeProperties() = aDataNode2->second->mpShape->getShapeProperties(); @@ -1210,8 +1205,8 @@ bool LayoutNode::setupShape( const ShapePtr& rShape, const dgm::Point* pPresNode for (const auto& pSourceParagraph : rSourceParagraphs) { TextParagraph& rPara = pTextBody->addParagraph(); - if (aVecIter->second != -1) - rPara.getProperties().setLevel(aVecIter->second); + if (rItem.second != -1) + rPara.getProperties().setLevel(rItem.second); for (const auto& pRun : pSourceParagraph->getRuns()) rPara.addRun(pRun); @@ -1219,8 +1214,6 @@ bool LayoutNode::setupShape( const ShapePtr& rShape, const dgm::Point* pPresNode rPara.getProperties().apply(rBody->getParagraphs().front()->getProperties()); } } - - ++aVecIter; } } else diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index b935bec0de96..b01aa8ac51ce 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -1190,35 +1190,35 @@ Reference< XShape > const & Shape::createAndInsert( if( aShapeProps.hasProperty( PROP_FillGradient ) ) { std::vector<beans::PropertyValue> aGradientStops; - auto aIt = aFillProperties.maGradientProps.maGradientStops.begin(); - for( size_t i = 0; i < aFillProperties.maGradientProps.maGradientStops.size(); ++i ) + size_t i = 0; + for( const auto& [rPos, rColor] : aFillProperties.maGradientProps.maGradientStops ) { // for each stop in the gradient definition: // save position std::vector<beans::PropertyValue> aGradientStop; - aGradientStop.push_back(comphelper::makePropertyValue("Pos", aIt->first)); + aGradientStop.push_back(comphelper::makePropertyValue("Pos", rPos)); - OUString sStopColorScheme = aIt->second.getSchemeName(); + OUString sStopColorScheme = rColor.getSchemeName(); if( sStopColorScheme.isEmpty() ) { // save RGB color - aGradientStop.push_back(comphelper::makePropertyValue("RgbClr", aIt->second.getColor(rGraphicHelper, nFillPhClr))); + aGradientStop.push_back(comphelper::makePropertyValue("RgbClr", rColor.getColor(rGraphicHelper, nFillPhClr))); // in the case of a RGB color, transformations are already applied to // the color with the exception of alpha transformations. We only need // to keep the transparency value to calculate the alpha value later. - if( aIt->second.hasTransparency() ) - aGradientStop.push_back(comphelper::makePropertyValue("Transparency", aIt->second.getTransparency())); + if( rColor.hasTransparency() ) + aGradientStop.push_back(comphelper::makePropertyValue("Transparency", rColor.getTransparency())); } else { // save color with scheme name aGradientStop.push_back(comphelper::makePropertyValue("SchemeClr", sStopColorScheme)); // save all color transformations - aGradientStop.push_back(comphelper::makePropertyValue("Transformations", aIt->second.getTransformations())); + aGradientStop.push_back(comphelper::makePropertyValue("Transformations", rColor.getTransformations())); } aGradientStops.push_back(comphelper::makePropertyValue(OUString::number(i), comphelper::containerToSequence(aGradientStop))); - ++aIt; + ++i; } // If getFillProperties.moFillType is unused that means gradient is defined by a theme // which is already saved into StyleFillRef property, so no need to save the explicit values too diff --git a/oox/source/ole/vbacontrol.cxx b/oox/source/ole/vbacontrol.cxx index 6a6de0cbfe52..0f3de9741094 100644 --- a/oox/source/ole/vbacontrol.cxx +++ b/oox/source/ole/vbacontrol.cxx @@ -450,21 +450,23 @@ void VbaFormControl::importStorage( StorageBase& rStrg, const AxClassTable& rCla } } // apply caption/titles to pages - auto itCtrlId = pMultiPage->mnIDs.begin(); - auto itCtrlId_end = pMultiPage->mnIDs.end(); - AxArrayString::iterator itCaption = sCaptions.begin(); maControls.clear(); // need to sort the controls according to the order of the ids - for ( sal_Int32 index = 1 ; ( sCaptions.size() == idToPage.size() ) && itCtrlId != itCtrlId_end; ++itCtrlId, ++itCaption, ++index ) + if ( sCaptions.size() == idToPage.size() ) { - IdToPageMap::iterator iter = idToPage.find( *itCtrlId ); - if ( iter != idToPage.end() ) + AxArrayString::iterator itCaption = sCaptions.begin(); + for ( const auto& rCtrlId : pMultiPage->mnIDs ) { - AxPageModel* pPage = static_cast<AxPageModel*> ( iter->second->mxCtrlModel.get() ); - - pPage->importProperty( XML_Caption, *itCaption ); - maControls.push_back( iter->second ); + IdToPageMap::iterator iter = idToPage.find( rCtrlId ); + if ( iter != idToPage.end() ) + { + AxPageModel* pPage = static_cast<AxPageModel*> ( iter->second->mxCtrlModel.get() ); + + pPage->importProperty( XML_Caption, *itCaption ); + maControls.push_back( iter->second ); + } + ++itCaption; } } } diff --git a/opencl/source/openclconfig.cxx b/opencl/source/openclconfig.cxx index cf067de5aac3..6fcd59618789 100644 --- a/opencl/source/openclconfig.cxx +++ b/opencl/source/openclconfig.cxx @@ -58,14 +58,14 @@ css::uno::Sequence<OUString> SetOfImplMatcherToStringSequence(const OpenCLConfig css::uno::Sequence<OUString> result(rSet.size()); size_t n(0); - for (auto i = rSet.cbegin(); i != rSet.cend(); ++i) + for (const auto& rItem : rSet) { result[n++] = - (*i).maOS.replaceAll("%", "%25").replaceAll("/", "%2F").replaceAll(";", "%3B") + "/" + - (*i).maOSVersion.replaceAll("%", "%25").replaceAll("/", "%2F").replaceAll(";", "%3B") + "/" + - (*i).maPlatformVendor.replaceAll("%", "%25").replaceAll("/", "%2F").replaceAll(";", "%3B") + "/" + - (*i).maDevice.replaceAll("%", "%25").replaceAll("/", "%2F").replaceAll(";", "%3B") + "/" + - (*i).maDriverVersion.replaceAll("%", "%25").replaceAll("/", "%2F").replaceAll(";", "%3B"); + rItem.maOS.replaceAll("%", "%25").replaceAll("/", "%2F").replaceAll(";", "%3B") + "/" + + rItem.maOSVersion.replaceAll("%", "%25").replaceAll("/", "%2F").replaceAll(";", "%3B") + "/" + + rItem.maPlatformVendor.replaceAll("%", "%25").replaceAll("/", "%2F").replaceAll(";", "%3B") + "/" + + rItem.maDevice.replaceAll("%", "%25").replaceAll("/", "%2F").replaceAll(";", "%3B") + "/" + + rItem.maDriverVersion.replaceAll("%", "%25").replaceAll("/", "%2F").replaceAll(";", "%3B"); } return result; @@ -100,15 +100,15 @@ OpenCLConfig::ImplMatcherSet StringSequenceToSetOfImplMatcher(const css::uno::Se { OpenCLConfig::ImplMatcherSet result; - for (auto i = rSequence.begin(); i != rSequence.end(); ++i) + for (const auto& rItem : rSequence) { OpenCLConfig::ImplMatcher m; sal_Int32 index(0); - m.maOS = getToken(*i, index); - m.maOSVersion = getToken(*i, index); - m.maPlatformVendor = getToken(*i, index); - m.maDevice = getToken(*i, index); - m.maDriverVersion = getToken(*i, index); + m.maOS = getToken(rItem, index); + m.maOSVersion = getToken(rItem, index); + m.maPlatformVendor = getToken(rItem, index); + m.maDevice = getToken(rItem, index); + m.maDriverVersion = getToken(rItem, index); result.insert(m); } @@ -158,12 +158,12 @@ bool match(const OpenCLConfig::ImplMatcher& rListEntry, const OpenCLPlatformInfo bool match(const OpenCLConfig::ImplMatcherSet& rList, const OpenCLPlatformInfo& rPlatform, const OpenCLDeviceInfo& rDevice, const char* sKindOfList) { - for (auto i = rList.cbegin(); i != rList.end(); ++i) + for (const auto& rListEntry : rList) { SAL_INFO("opencl", "Looking for match for platform=" << rPlatform << ", device=" << rDevice << - " in " << sKindOfList << " entry=" << *i); + " in " << sKindOfList << " entry=" << rListEntry); - if (match(*i, rPlatform, rDevice)) + if (match(rListEntry, rPlatform, rDevice)) { SAL_INFO("opencl", "Match!"); return true; diff --git a/package/source/xstor/ohierarchyholder.cxx b/package/source/xstor/ohierarchyholder.cxx index 800cfdf7ce1f..26b63f806eae 100644 --- a/package/source/xstor/ohierarchyholder.cxx +++ b/package/source/xstor/ohierarchyholder.cxx @@ -264,18 +264,10 @@ void SAL_CALL OHierarchyElement_Impl::disposing( const lang::EventObject& Source ::osl::ClearableMutexGuard aGuard( m_aMutex ); uno::Reference< embed::XExtendedStorageStream > xStream( Source.Source, uno::UNO_QUERY ); - for ( OWeakStorRefList_Impl::iterator pStorageIter = m_aOpenStreams.begin(); - pStorageIter != m_aOpenStreams.end(); ) - { - if ( !pStorageIter->get().is() || pStorageIter->get() == xStream ) - { - pStorageIter = m_aOpenStreams.erase(pStorageIter); - } - else - { - ++pStorageIter; - } - } + m_aOpenStreams.erase(std::remove_if(m_aOpenStreams.begin(), m_aOpenStreams.end(), + [&xStream](const OWeakStorRefList_Impl::value_type& rxStorage) { + return !rxStorage.get().is() || rxStorage.get() == xStream; }), + m_aOpenStreams.end()); aGuard.clear(); diff --git a/package/source/xstor/owriteablestream.cxx b/package/source/xstor/owriteablestream.cxx index f81c3af1c5eb..63cdbad804ed 100644 --- a/package/source/xstor/owriteablestream.cxx +++ b/package/source/xstor/owriteablestream.cxx @@ -481,13 +481,12 @@ void OWriteStream_Impl::DisposeWrappers() if ( !m_aInputStreamsVector.empty() ) { - for ( InputStreamsVector_Impl::iterator pStreamIter = m_aInputStreamsVector.begin(); - pStreamIter != m_aInputStreamsVector.end(); ++pStreamIter ) + for ( auto& pStream : m_aInputStreamsVector ) { - if ( *pStreamIter ) + if ( pStream ) { - (*pStreamIter)->InternalDispose(); - (*pStreamIter) = nullptr; + pStream->InternalDispose(); + pStream = nullptr; } } diff --git a/package/source/xstor/xstorage.cxx b/package/source/xstor/xstorage.cxx index a07d06cbaa20..2dc532324084 100644 --- a/package/source/xstor/xstorage.cxx +++ b/package/source/xstor/xstorage.cxx @@ -303,13 +303,12 @@ OStorage_Impl::~OStorage_Impl() } else if ( !m_aReadOnlyWrapVector.empty() ) { - for ( StorageHoldersType::iterator pStorageIter = m_aReadOnlyWrapVector.begin(); - pStorageIter != m_aReadOnlyWrapVector.end(); ++pStorageIter ) + for ( auto& rStorage : m_aReadOnlyWrapVector ) { - uno::Reference< embed::XStorage > xTmp = pStorageIter->m_xWeakRef; + uno::Reference< embed::XStorage > xTmp = rStorage.m_xWeakRef; if ( xTmp.is() ) try { - pStorageIter->m_pPointer->InternalDispose( false ); + rStorage.m_pPointer->InternalDispose( false ); } catch( const uno::Exception& rException ) { SAL_INFO("package.xstor", "Quiet exception: " << rException); @@ -652,11 +651,10 @@ void OStorage_Impl::CopyToStorage( const uno::Reference< embed::XStorage >& xDes if ( !m_xPackageFolder.is() ) throw embed::InvalidStorageException( THROW_WHERE ); - for ( SotElementVector_Impl::iterator pElementIter = m_aChildrenVector.begin(); - pElementIter != m_aChildrenVector.end(); ++pElementIter ) + for ( auto& pElement : m_aChildrenVector ) { - if ( !(*pElementIter)->m_bIsRemoved ) - CopyStorageElement( *pElementIter, xDest, (*pElementIter)->m_aName, bDirect ); + if ( !pElement->m_bIsRemoved ) + CopyStorageElement( pElement, xDest, pElement->m_aName, bDirect ); } // move storage properties to the destination one ( means changeable properties ) @@ -1007,19 +1005,17 @@ void OStorage_Impl::Commit() xNewPackageFolder = m_xPackageFolder; // remove replaced removed elements - for ( SotElementVector_Impl::iterator pDeletedIter = m_aDeletedVector.begin(); - pDeletedIter != m_aDeletedVector.end(); - ++pDeletedIter ) + for ( auto& pDeleted : m_aDeletedVector ) { - if ( m_nStorageType == embed::StorageFormats::OFOPXML && !(*pDeletedIter)->m_bIsStorage ) - RemoveStreamRelInfo( (*pDeletedIter)->m_aOriginalName ); + if ( m_nStorageType == embed::StorageFormats::OFOPXML && !pDeleted->m_bIsStorage ) + RemoveStreamRelInfo( pDeleted->m_aOriginalName ); // the removed elements are not in new temporary storage if ( m_bCommited || m_bIsRoot ) - xNewPackageFolder->removeByName( (*pDeletedIter)->m_aOriginalName ); - delete *pDeletedIter; - *pDeletedIter = nullptr; + xNewPackageFolder->removeByName( pDeleted->m_aOriginalName ); + delete pDeleted; + pDeleted = nullptr; } m_aDeletedVector.clear(); @@ -1047,116 +1043,116 @@ void OStorage_Impl::Commit() } // there should be no more deleted elements - for ( pElementIter = m_aChildrenVector.begin(); pElementIter != m_aChildrenVector.end(); ++pElementIter ) + for ( auto& pElement : m_aChildrenVector ) { // if it is a 'duplicate commit' inserted elements must be really inserted to package later // since thay can conflict with renamed elements - if ( !(*pElementIter)->m_bIsInserted ) + if ( !pElement->m_bIsInserted ) { // for now stream is opened in direct mode that means that in case // storage is committed all the streams from it are committed in current state. // following two steps are separated to allow easily implement transacted mode // for streams if we need it in future. // Only hierarchical access uses transacted streams currently - if ( !(*pElementIter)->m_bIsStorage && (*pElementIter)->m_xStream - && !(*pElementIter)->m_xStream->IsTransacted() ) - (*pElementIter)->m_xStream->Commit(); + if ( !pElement->m_bIsStorage && pElement->m_xStream + && !pElement->m_xStream->IsTransacted() ) + pElement->m_xStream->Commit(); // if the storage was not open, there is no need to commit it ??? // the storage should be checked that it is committed - if ((*pElementIter)->m_bIsStorage && (*pElementIter)->m_xStorage && (*pElementIter)->m_xStorage->m_bCommited) + if (pElement->m_bIsStorage && pElement->m_xStorage && pElement->m_xStorage->m_bCommited) { // it's temporary PackageFolder should be inserted instead of current one // also the new copy of PackageFolder should be used by the children storages // the renamed elements are not in new temporary storage if ( m_bCommited || m_bIsRoot ) - xNewPackageFolder->removeByName( (*pElementIter)->m_aOriginalName ); + xNewPackageFolder->removeByName( pElement->m_aOriginalName ); - (*pElementIter)->m_xStorage->InsertIntoPackageFolder((*pElementIter)->m_aName, xNewPackageFolder); + pElement->m_xStorage->InsertIntoPackageFolder(pElement->m_aName, xNewPackageFolder); } - else if (!(*pElementIter)->m_bIsStorage && (*pElementIter)->m_xStream && (*pElementIter)->m_xStream->m_bFlushed) + else if (!pElement->m_bIsStorage && pElement->m_xStream && pElement->m_xStream->m_bFlushed) { if ( m_nStorageType == embed::StorageFormats::OFOPXML ) - CommitStreamRelInfo( *pElementIter ); + CommitStreamRelInfo( pElement ); // the renamed elements are not in new temporary storage if ( m_bCommited || m_bIsRoot ) - xNewPackageFolder->removeByName( (*pElementIter)->m_aOriginalName ); + xNewPackageFolder->removeByName( pElement->m_aOriginalName ); - (*pElementIter)->m_xStream->InsertIntoPackageFolder((*pElementIter)->m_aName, xNewPackageFolder); + pElement->m_xStream->InsertIntoPackageFolder(pElement->m_aName, xNewPackageFolder); } else if ( !m_bCommited && !m_bIsRoot ) { // the element must be just copied to the new temporary package folder // the connection with the original package should not be lost just because // the element is still referred by the folder in the original hierarchy - uno::Any aPackageElement = m_xPackageFolder->getByName( (*pElementIter)->m_aOriginalName ); - xNewPackageFolder->insertByName( (*pElementIter)->m_aName, aPackageElement ); + uno::Any aPackageElement = m_xPackageFolder->getByName( pElement->m_aOriginalName ); + xNewPackageFolder->insertByName( pElement->m_aName, aPackageElement ); } - else if ( (*pElementIter)->m_aName != (*pElementIter)->m_aOriginalName ) + else if ( pElement->m_aName != pElement->m_aOriginalName ) { // this is the case when xNewPackageFolder refers to m_xPackageFolder // in case the name was changed and it is not a changed storage - rename the element - uno::Any aPackageElement = xNewPackageFolder->getByName( (*pElementIter)->m_aOriginalName ); - xNewPackageFolder->removeByName( (*pElementIter)->m_aOriginalName ); - xNewPackageFolder->insertByName( (*pElementIter)->m_aName, aPackageElement ); + uno::Any aPackageElement = xNewPackageFolder->getByName( pElement->m_aOriginalName ); + xNewPackageFolder->removeByName( pElement->m_aOriginalName ); + xNewPackageFolder->insertByName( pElement->m_aName, aPackageElement ); - if ( m_nStorageType == embed::StorageFormats::OFOPXML && !(*pElementIter)->m_bIsStorage ) + if ( m_nStorageType == embed::StorageFormats::OFOPXML && !pElement->m_bIsStorage ) { - if (!(*pElementIter)->m_xStream) + if (!pElement->m_xStream) { - OpenSubStream( *pElementIter ); - if (!(*pElementIter)->m_xStream) + OpenSubStream( pElement ); + if (!pElement->m_xStream) throw uno::RuntimeException( THROW_WHERE ); } - CommitStreamRelInfo( *pElementIter ); + CommitStreamRelInfo( pElement ); } } - (*pElementIter)->m_aOriginalName = (*pElementIter)->m_aName; + pElement->m_aOriginalName = pElement->m_aName; } } - for ( pElementIter = m_aChildrenVector.begin(); pElementIter != m_aChildrenVector.end(); ++pElementIter ) + for ( auto& pElement : m_aChildrenVector ) { // now inserted elements can be inserted to the package - if ( (*pElementIter)->m_bIsInserted ) + if ( pElement->m_bIsInserted ) { - (*pElementIter)->m_aOriginalName = (*pElementIter)->m_aName; + pElement->m_aOriginalName = pElement->m_aName; - if ( (*pElementIter)->m_bIsStorage ) + if ( pElement->m_bIsStorage ) { - if ((*pElementIter)->m_xStorage->m_bCommited) + if (pElement->m_xStorage->m_bCommited) { - OSL_ENSURE((*pElementIter)->m_xStorage, "An inserted storage is incomplete!"); - if (!(*pElementIter)->m_xStorage) + OSL_ENSURE(pElement->m_xStorage, "An inserted storage is incomplete!"); + if (!pElement->m_xStorage) throw uno::RuntimeException( THROW_WHERE ); - (*pElementIter)->m_xStorage->InsertIntoPackageFolder((*pElementIter)->m_aName, xNewPackageFolder); + pElement->m_xStorage->InsertIntoPackageFolder(pElement->m_aName, xNewPackageFolder); - (*pElementIter)->m_bIsInserted = false; + pElement->m_bIsInserted = false; } } else { - OSL_ENSURE((*pElementIter)->m_xStream, "An inserted stream is incomplete!"); - if (!(*pElementIter)->m_xStream) + OSL_ENSURE(pElement->m_xStream, "An inserted stream is incomplete!"); + if (!pElement->m_xStream) throw uno::RuntimeException( THROW_WHERE ); - if (!(*pElementIter)->m_xStream->IsTransacted()) - (*pElementIter)->m_xStream->Commit(); + if (!pElement->m_xStream->IsTransacted()) + pElement->m_xStream->Commit(); - if ((*pElementIter)->m_xStream->m_bFlushed) + if (pElement->m_xStream->m_bFlushed) { if ( m_nStorageType == embed::StorageFormats::OFOPXML ) - CommitStreamRelInfo( *pElementIter ); + CommitStreamRelInfo( pElement ); - (*pElementIter)->m_xStream->InsertIntoPackageFolder( (*pElementIter)->m_aName, xNewPackageFolder ); + pElement->m_xStream->InsertIntoPackageFolder( pElement->m_aName, xNewPackageFolder ); - (*pElementIter)->m_bIsInserted = false; + pElement->m_bIsInserted = false; } } } @@ -1235,16 +1231,14 @@ void OStorage_Impl::Revert() } // return replaced removed elements - for ( SotElementVector_Impl::iterator pDeletedIter = m_aDeletedVector.begin(); - pDeletedIter != m_aDeletedVector.end(); - ++pDeletedIter ) + for ( auto& pDeleted : m_aDeletedVector ) { - m_aChildrenVector.push_back( *pDeletedIter ); + m_aChildrenVector.push_back( pDeleted ); - ClearElement( *pDeletedIter ); + ClearElement( pDeleted ); - (*pDeletedIter)->m_aName = (*pDeletedIter)->m_aOriginalName; - (*pDeletedIter)->m_bIsRemoved = false; + pDeleted->m_aName = pDeleted->m_aOriginalName; + pDeleted->m_bIsRemoved = false; } m_aDeletedVector.clear(); @@ -1293,12 +1287,10 @@ SotElement_Impl* OStorage_Impl::FindElement( const OUString& rName ) ReadContents(); - for ( SotElementVector_Impl::iterator pElementIter = m_aChildrenVector.begin(); - pElementIter != m_aChildrenVector.end(); ++pElementIter ) - { - if ( (*pElementIter)->m_aName == rName && !(*pElementIter)->m_bIsRemoved ) - return *pElementIter; - } + auto pElementIter = std::find_if(m_aChildrenVector.begin(), m_aChildrenVector.end(), + [&rName](const SotElement_Impl* pElement) { return pElement->m_aName == rName && !pElement->m_bIsRemoved; }); + if (pElementIter != m_aChildrenVector.end()) + return *pElementIter; return nullptr; } @@ -1414,16 +1406,15 @@ SotElement_Impl* OStorage_Impl::InsertElement( const OUString& aName, bool bIsSt SotElement_Impl* pDeletedElm = nullptr; - for ( SotElementVector_Impl::iterator pElementIter = m_aChildrenVector.begin(); - pElementIter != m_aChildrenVector.end(); ++pElementIter ) + for ( const auto& pElement : m_aChildrenVector ) { - if ( (*pElementIter)->m_aName == aName ) + if ( pElement->m_aName == aName ) { - SAL_WARN_IF( !(*pElementIter)->m_bIsRemoved, "package.xstor", "Try to insert an element instead of existing one!" ); - if ( (*pElementIter)->m_bIsRemoved ) + SAL_WARN_IF( !pElement->m_bIsRemoved, "package.xstor", "Try to insert an element instead of existing one!" ); + if ( pElement->m_bIsRemoved ) { - SAL_WARN_IF( (*pElementIter)->m_bIsInserted, "package.xstor", "Inserted elements must be deleted immediately!" ); - pDeletedElm = *pElementIter; + SAL_WARN_IF( pElement->m_bIsInserted, "package.xstor", "Inserted elements must be deleted immediately!" ); + pDeletedElm = pElement; break; } } @@ -1500,11 +1491,10 @@ uno::Sequence< OUString > OStorage_Impl::GetElementNames() uno::Sequence< OUString > aElementNames( nSize ); sal_uInt32 nInd = 0; - for ( SotElementVector_Impl::iterator pElementIter = m_aChildrenVector.begin(); - pElementIter != m_aChildrenVector.end(); ++pElementIter ) + for ( const auto& pElement : m_aChildrenVector ) { - if ( !(*pElementIter)->m_bIsRemoved ) - aElementNames[nInd++] = (*pElementIter)->m_aName; + if ( !pElement->m_bIsRemoved ) + aElementNames[nInd++] = pElement->m_aName; } aElementNames.realloc( nInd ); @@ -1847,10 +1837,9 @@ void OStorage::InternalDispose( bool bNotifyImpl ) // deregister m_pData->m_pSubElDispListener and dispose all of them if ( !m_pData->m_aOpenSubComponentsVector.empty() ) { - for ( WeakComponentVector::iterator pCompIter = m_pData->m_aOpenSubComponentsVector.begin(); - pCompIter != m_pData->m_aOpenSubComponentsVector.end(); ++pCompIter ) + for ( auto& pComp : m_pData->m_aOpenSubComponentsVector ) { - uno::Reference< lang::XComponent > xTmp = *pCompIter; + uno::Reference< lang::XComponent > xTmp = pComp; if ( xTmp.is() ) { xTmp->removeEventListener( uno::Reference< lang::XEventListener >( @@ -1898,17 +1887,12 @@ void OStorage::ChildIsDisposed( const uno::Reference< uno::XInterface >& xChild // this method must not contain any locking // the locking is done in the listener - for ( WeakComponentVector::iterator pCompIter = m_pData->m_aOpenSubComponentsVector.begin(); - pCompIter != m_pData->m_aOpenSubComponentsVector.end(); ) - { - uno::Reference< lang::XComponent > xTmp = *pCompIter; - if ( !xTmp.is() || xTmp == xChild ) - { - pCompIter = m_pData->m_aOpenSubComponentsVector.erase(pCompIter); - } - else - ++pCompIter; - } + auto& rVec = m_pData->m_aOpenSubComponentsVector; + rVec.erase(std::remove_if(rVec.begin(), rVec.end(), + [&xChild](const uno::Reference<lang::XComponent>& xTmp) { + return !xTmp.is() || xTmp == xChild; + }), + rVec.end()); } void OStorage::BroadcastModifiedIfNecessary() @@ -2399,12 +2383,8 @@ uno::Reference< embed::XStorage > SAL_CALL OStorage::openStorageElement( if ( nStorageMode & embed::ElementModes::TRUNCATE ) { - for ( SotElementVector_Impl::iterator pElementIter = pElement->m_xStorage->m_aChildrenVector.begin(); - pElementIter != pElement->m_xStorage->m_aChildrenVector.end(); ) + for ( SotElement_Impl* pElementToDel : pElement->m_xStorage->m_aChildrenVector ) { - SotElement_Impl* pElementToDel = *pElementIter; - ++pElementIter; - m_pImpl->RemoveElement( pElementToDel ); } } @@ -3616,15 +3596,13 @@ void SAL_CALL OStorage::revert() throw lang::DisposedException( THROW_WHERE ); } - for ( SotElementVector_Impl::iterator pElementIter = m_pImpl->m_aChildrenVector.begin(); - pElementIter != m_pImpl->m_aChildrenVector.end(); ++pElementIter ) - { - if ( ((*pElementIter)->m_xStorage - && ( (*pElementIter)->m_xStorage->m_pAntiImpl || !(*pElementIter)->m_xStorage->m_aReadOnlyWrapVector.empty() )) - || ((*pElementIter)->m_xStream - && ( (*pElementIter)->m_xStream->m_pAntiImpl || !(*pElementIter)->m_xStream->m_aInputStreamsVector.empty()) ) ) - throw io::IOException( THROW_WHERE ); // TODO: access denied - } + bool bThrow = std::any_of(m_pImpl->m_aChildrenVector.begin(), m_pImpl->m_aChildrenVector.end(), [](const SotElement_Impl* pElement) { + return (pElement->m_xStorage + && (pElement->m_xStorage->m_pAntiImpl || !pElement->m_xStorage->m_aReadOnlyWrapVector.empty())) + || (pElement->m_xStream + && (pElement->m_xStream->m_pAntiImpl || !pElement->m_xStream->m_aInputStreamsVector.empty())); }); + if (bThrow) + throw io::IOException( THROW_WHERE ); // TODO: access denied if ( m_pData->m_bReadOnlyWrap || !m_pImpl->m_bListCreated ) return; // nothing to do diff --git a/package/source/zipapi/ZipFile.cxx b/package/source/zipapi/ZipFile.cxx index 4f3092e56755..24bcab959960 100644 --- a/package/source/zipapi/ZipFile.cxx +++ b/package/source/zipapi/ZipFile.cxx @@ -1086,18 +1086,18 @@ void ZipFile::recover() nCompressedSize = nCompressedSize32; nSize = nSize32; - for( EntryHash::iterator aIter = aEntries.begin(); aIter != aEntries.end(); ++aIter ) + for( auto& rEntry : aEntries ) { - ZipEntry aTmp = (*aIter).second; + ZipEntry aTmp = rEntry.second; // this is a broken package, accept this block not only for DEFLATED streams - if( (*aIter).second.nFlag & 8 ) + if( rEntry.second.nFlag & 8 ) { sal_Int64 nStreamOffset = nGenPos + nPos - nCompressedSize; - if ( nStreamOffset == (*aIter).second.nOffset && nCompressedSize > (*aIter).second.nCompressedSize ) + if ( nStreamOffset == rEntry.second.nOffset && nCompressedSize > rEntry.second.nCompressedSize ) { // only DEFLATED blocks need to be checked - bool bAcceptBlock = ( (*aIter).second.nMethod == STORED && nCompressedSize == nSize ); + bool bAcceptBlock = ( rEntry.second.nMethod == STORED && nCompressedSize == nSize ); if ( !bAcceptBlock ) { @@ -1109,19 +1109,19 @@ void ZipFile::recover() if ( bAcceptBlock ) { - (*aIter).second.nCrc = nCRC32; - (*aIter).second.nCompressedSize = nCompressedSize; - (*aIter).second.nSize = nSize; + rEntry.second.nCrc = nCRC32; + rEntry.second.nCompressedSize = nCompressedSize; + rEntry.second.nSize = nSize; } } #if 0 // for now ignore clearly broken streams - else if( !(*aIter).second.nCompressedSize ) + else if( !rEntry.second.nCompressedSize ) { - (*aIter).second.nCrc = nCRC32; - sal_Int32 nRealStreamSize = nGenPos + nPos - (*aIter).second.nOffset; - (*aIter).second.nCompressedSize = nGenPos + nPos - (*aIter).second.nOffset; - (*aIter).second.nSize = nSize; + rEntry.second.nCrc = nCRC32; + sal_Int32 nRealStreamSize = nGenPos + nPos - rEntry.second.nOffset; + rEntry.second.nCompressedSize = nRealStreamSize; + rEntry.second.nSize = nSize; } #endif } diff --git a/package/source/zippackage/ZipPackage.cxx b/package/source/zippackage/ZipPackage.cxx index b22b83ec7be0..42c78532a2db 100644 --- a/package/source/zippackage/ZipPackage.cxx +++ b/package/source/zippackage/ZipPackage.cxx @@ -1103,20 +1103,17 @@ void ZipPackage::WriteContentTypes( ZipOutputStream& aZipOut, const vector< uno: uno::Sequence< beans::StringPair > aOverridesSequence(aManList.size()); sal_Int32 nOverSeqLength = 0; - for ( vector< uno::Sequence< beans::PropertyValue > >::const_iterator aIter = aManList.begin(), - aEnd = aManList.end(); - aIter != aEnd; - ++aIter) + for (const auto& rMan : aManList) { OUString aPath; OUString aType; - OSL_ENSURE( ( *aIter )[PKG_MNFST_MEDIATYPE].Name == "MediaType" && ( *aIter )[PKG_MNFST_FULLPATH].Name == "FullPath", + OSL_ENSURE( rMan[PKG_MNFST_MEDIATYPE].Name == "MediaType" && rMan[PKG_MNFST_FULLPATH].Name == "FullPath", "The mediatype sequence format is wrong!" ); - ( *aIter )[PKG_MNFST_MEDIATYPE].Value >>= aType; + rMan[PKG_MNFST_MEDIATYPE].Value >>= aType; if ( !aType.isEmpty() ) { // only nonempty type makes sense here - ( *aIter )[PKG_MNFST_FULLPATH].Value >>= aPath; + rMan[PKG_MNFST_FULLPATH].Value >>= aPath; //FIXME: For now we have no way of differentiating defaults from others. aOverridesSequence[nOverSeqLength].First = "/" + aPath; aOverridesSequence[nOverSeqLength].Second = aType; diff --git a/package/source/zippackage/ZipPackageFolder.cxx b/package/source/zippackage/ZipPackageFolder.cxx index 54ec4e40bbee..c42fdef45ac8 100644 --- a/package/source/zippackage/ZipPackageFolder.cxx +++ b/package/source/zippackage/ZipPackageFolder.cxx @@ -27,6 +27,7 @@ #include "ZipPackageFolderEnumeration.hxx" #include <com/sun/star/packages/zip/ZipConstants.hpp> #include <com/sun/star/embed/StorageFormats.hpp> +#include <comphelper/sequence.hxx> #include <cppuhelper/supportsservice.hxx> #include <cppuhelper/typeprovider.hxx> #include <osl/diagnose.h> @@ -81,12 +82,9 @@ bool ZipPackageFolder::LookForUnexpectedODF12Streams( const OUString& aPath ) { bool bHasUnexpected = false; - for ( ContentHash::const_iterator aCI = maContents.begin(), aEnd = maContents.end(); - !bHasUnexpected && aCI != aEnd; - ++aCI) + for (const auto& [rShortName, rxInfo] : maContents) { - const OUString &rShortName = (*aCI).first; - const ZipContentInfo &rInfo = *(*aCI).second; + const ZipContentInfo &rInfo = *rxInfo; if ( rInfo.bFolder ) { @@ -125,6 +123,9 @@ bool ZipPackageFolder::LookForUnexpectedODF12Streams( const OUString& aPath ) } } } + + if (bHasUnexpected) + break; } return bHasUnexpected; @@ -138,12 +139,9 @@ void ZipPackageFolder::setChildStreamsTypeByExtension( const beans::StringPair& else aExt = "." + aPair.First; - for ( ContentHash::const_iterator aCI = maContents.begin(), aEnd = maContents.end(); - aCI != aEnd; - ++aCI) + for (const auto& [rShortName, rxInfo] : maContents) { - const OUString &rShortName = (*aCI).first; - const ZipContentInfo &rInfo = *(*aCI).second; + const ZipContentInfo &rInfo = *rxInfo; if ( rInfo.bFolder ) rInfo.pFolder->setChildStreamsTypeByExtension( aPair ); @@ -229,13 +227,7 @@ uno::Any SAL_CALL ZipPackageFolder::getByName( const OUString& aName ) } uno::Sequence< OUString > SAL_CALL ZipPackageFolder::getElementNames( ) { - sal_uInt32 i=0, nSize = maContents.size(); - uno::Sequence < OUString > aSequence ( nSize ); - for ( ContentHash::const_iterator aIterator = maContents.begin(), aEnd = maContents.end(); - aIterator != aEnd; - ++i, ++aIterator) - aSequence[i] = (*aIterator).first; - return aSequence; + return comphelper::mapKeysToSequence(maContents); } sal_Bool SAL_CALL ZipPackageFolder::hasByName( const OUString& aName ) { @@ -335,12 +327,9 @@ void ZipPackageFolder::saveContents( } } - for ( ContentHash::const_iterator aCI = maContents.begin(), aEnd = maContents.end(); - aCI != aEnd; - ++aCI) + for (const auto& [rShortName, rxInfo] : maContents) { - const OUString &rShortName = (*aCI).first; - const ZipContentInfo &rInfo = *(*aCI).second; + const ZipContentInfo &rInfo = *rxInfo; if ( !bMimeTypeStreamStored || rShortName != aMimeTypeStreamName ) { diff --git a/package/source/zippackage/zipfileaccess.cxx b/package/source/zippackage/zipfileaccess.cxx index b9167a9f3a2e..d6cd52849735 100644 --- a/package/source/zippackage/zipfileaccess.cxx +++ b/package/source/zippackage/zipfileaccess.cxx @@ -309,7 +309,7 @@ uno::Sequence< OUString > SAL_CALL OZipFileAccess::getElementNames() uno::Sequence< OUString > aNames( m_pZipFile->GetEntryHash().size() ); sal_Int32 nLen = 0; - for ( EntryHash::iterator aIter = m_pZipFile->GetEntryHash().begin(); aIter != m_pZipFile->GetEntryHash().end(); ++aIter ) + for ( const auto& rEntry : m_pZipFile->GetEntryHash() ) { if ( aNames.getLength() < ++nLen ) { @@ -317,7 +317,7 @@ uno::Sequence< OUString > SAL_CALL OZipFileAccess::getElementNames() aNames.realloc( nLen ); } - aNames[nLen-1] = (*aIter).second.sPath; + aNames[nLen-1] = rEntry.second.sPath; } if ( aNames.getLength() != nLen ) @@ -384,19 +384,18 @@ uno::Reference< io::XInputStream > SAL_CALL OZipFileAccess::getStreamByPattern( // Code to compare strings by patterns uno::Sequence< OUString > aPattern = GetPatternsFromString_Impl( aPatternString ); - for ( EntryHash::iterator aIter = m_pZipFile->GetEntryHash().begin(); aIter != m_pZipFile->GetEntryHash().end(); ++aIter ) + auto aIter = std::find_if(m_pZipFile->GetEntryHash().begin(), m_pZipFile->GetEntryHash().end(), + [&aPattern](const EntryHash::value_type& rEntry) { return StringGoodForPattern_Impl(rEntry.second.sPath, aPattern); }); + if (aIter != m_pZipFile->GetEntryHash().end()) { - if ( StringGoodForPattern_Impl( (*aIter).second.sPath, aPattern ) ) - { - uno::Reference< io::XInputStream > xEntryStream( m_pZipFile->getDataStream( (*aIter).second, - ::rtl::Reference< EncryptionData >(), - false, - m_aMutexHolder ) ); - - if ( !xEntryStream.is() ) - throw uno::RuntimeException(THROW_WHERE ); - return xEntryStream; - } + uno::Reference< io::XInputStream > xEntryStream( m_pZipFile->getDataStream( (*aIter).second, + ::rtl::Reference< EncryptionData >(), + false, + m_aMutexHolder ) ); + + if ( !xEntryStream.is() ) + throw uno::RuntimeException(THROW_WHERE ); + return xEntryStream; } throw container::NoSuchElementException(THROW_WHERE ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits