[Libreoffice-commits] core.git: unotools/source

Arkadiy Illarionov (via logerrit) logerrit at kemper.freedesktop.org
Fri Jun 28 15:34:30 UTC 2019


 unotools/source/config/cmdoptions.cxx             |    8 -
 unotools/source/config/compatibility.cxx          |   10 -
 unotools/source/config/configitem.cxx             |  125 +++++++---------------
 unotools/source/config/confignode.cxx             |    5 
 unotools/source/config/dynamicmenuoptions.cxx     |    3 
 unotools/source/config/eventcfg.cxx               |   17 +-
 unotools/source/config/fontcfg.cxx                |   25 +---
 unotools/source/config/historyoptions.cxx         |    9 -
 unotools/source/config/lingucfg.cxx               |   21 +--
 unotools/source/config/moduleoptions.cxx          |   54 +++------
 unotools/source/config/optionsdlg.cxx             |   14 --
 unotools/source/config/pathoptions.cxx            |    3 
 unotools/source/config/securityoptions.cxx        |   24 +---
 unotools/source/config/viewoptions.cxx            |   21 +--
 unotools/source/i18n/localedatawrapper.cxx        |   90 +++++----------
 unotools/source/ucbhelper/progresshandlerwrap.cxx |    8 -
 unotools/source/ucbhelper/ucbhelper.cxx           |    8 -
 unotools/source/ucbhelper/ucblockbytes.cxx        |    9 -
 18 files changed, 172 insertions(+), 282 deletions(-)

New commits:
commit 1e084caf573255a93ce86053d584976f317074df
Author:     Arkadiy Illarionov <qarkai at gmail.com>
AuthorDate: Thu Jun 27 23:29:01 2019 +0300
Commit:     Arkadiy Illarionov <qarkai at gmail.com>
CommitDate: Fri Jun 28 17:33:40 2019 +0200

    Simplify Sequence iterations in unotools
    
    Use range-based loops or replace with STL functions
    
    Change-Id: I220c5cd5dcc19fc35e1ad729ae69246f4a79ce2d
    Reviewed-on: https://gerrit.libreoffice.org/74825
    Tested-by: Jenkins
    Reviewed-by: Arkadiy Illarionov <qarkai at gmail.com>

diff --git a/unotools/source/config/cmdoptions.cxx b/unotools/source/config/cmdoptions.cxx
index 2c8f18e76aea..56b61ad2704a 100644
--- a/unotools/source/config/cmdoptions.cxx
+++ b/unotools/source/config/cmdoptions.cxx
@@ -277,11 +277,9 @@ Sequence< OUString > SvtCommandOptions_Impl::impl_GetPropertyNames()
     Sequence< OUString > lDisabledItems      = GetNodeNames( SETNODE_DISABLED, utl::ConfigNameFormat::LocalPath );
 
     // Expand all keys
-    for (sal_Int32 i=0; i<lDisabledItems.getLength(); ++i )
-    {
-        lDisabledItems[i] = SETNODE_DISABLED PATHDELIMITER + lDisabledItems[i]
-            + PATHDELIMITER PROPERTYNAME_CMD;
-    }
+    std::transform(lDisabledItems.begin(), lDisabledItems.end(), lDisabledItems.begin(),
+        [](const OUString& rItem) -> OUString {
+            return SETNODE_DISABLED PATHDELIMITER + rItem + PATHDELIMITER PROPERTYNAME_CMD; });
 
     // Return result.
     return lDisabledItems;
diff --git a/unotools/source/config/compatibility.cxx b/unotools/source/config/compatibility.cxx
index a1523d3aae41..f0d211de6957 100644
--- a/unotools/source/config/compatibility.cxx
+++ b/unotools/source/config/compatibility.cxx
@@ -159,7 +159,6 @@ SvtCompatibilityOptions_Impl::SvtCompatibilityOptions_Impl() : ConfigItem( ROOTN
     // See impl_GetPropertyNames() for further information.
     Sequence< OUString > lNodes;
     Sequence< OUString > lNames  = impl_GetPropertyNames( lNodes );
-    sal_uInt32           nCount  = lNodes.getLength();
     Sequence< Any >      lValues = GetProperties( lNames );
 
     // Safe impossible cases.
@@ -171,11 +170,11 @@ SvtCompatibilityOptions_Impl::SvtCompatibilityOptions_Impl() : ConfigItem( ROOTN
     // 4 subkeys for every item!
     bool bDefaultFound = false;
     sal_Int32 nDestStep    = 0;
-    for ( sal_uInt32 nItem = 0; nItem < nCount; ++nItem )
+    for ( const auto& rNode : lNodes )
     {
         SvtCompatibilityEntry aItem;
 
-        aItem.setValue<OUString>( SvtCompatibilityEntry::Index::Name, lNodes[ nItem ] );
+        aItem.setValue<OUString>( SvtCompatibilityEntry::Index::Name, rNode );
 
         for ( int i = static_cast<int>(SvtCompatibilityEntry::Index::Module); i < static_cast<int>(SvtCompatibilityEntry::Index::INVALID); ++i )
         {
@@ -292,14 +291,13 @@ Sequence< OUString > SvtCompatibilityOptions_Impl::impl_GetPropertyNames( Sequen
     // expand list to result list ...
     Sequence< OUString > lProperties( rItems.getLength() * ( SvtCompatibilityEntry::getElementCount() - 1 ) );
 
-    sal_Int32 nSourceCount = rItems.getLength();
     sal_Int32 nDestStep    = 0;
     // Copy entries to destination and expand every item with 2 supported sub properties.
-    for ( sal_Int32 nSourceStep = 0; nSourceStep < nSourceCount; ++nSourceStep )
+    for ( const auto& rItem : rItems )
     {
         OUString sFixPath = SETNODE_ALLFILEFORMATS;
         sFixPath += PATHDELIMITER;
-        sFixPath += rItems[ nSourceStep ];
+        sFixPath += rItem;
         sFixPath += PATHDELIMITER;
         for ( int i = static_cast<int>(SvtCompatibilityEntry::Index::Module); i < static_cast<int>(SvtCompatibilityEntry::Index::INVALID); ++i )
         {
diff --git a/unotools/source/config/configitem.cxx b/unotools/source/config/configitem.cxx
index 6f5e99940703..4af2eb3bc977 100644
--- a/unotools/source/config/configitem.cxx
+++ b/unotools/source/config/configitem.cxx
@@ -35,6 +35,7 @@
 #include <com/sun/star/beans/PropertyAttribute.hpp>
 #include <com/sun/star/util/XChangesBatch.hpp>
 #include <osl/diagnose.h>
+#include <comphelper/sequence.hxx>
 #include <comphelper/solarmutex.hxx>
 #include <rtl/ref.hxx>
 #include <tools/diagnose_ex.h>
@@ -98,34 +99,21 @@ ConfigChangeListener_Impl::ConfigChangeListener_Impl(
 {
 }
 
-static bool lcl_Find(
-        const OUString& rTemp,
-        const OUString* pCheckPropertyNames,
-        sal_Int32 nLength)
-{
-    //return true if the path is completely correct or if it is longer
-    //i.e ...Print/Content/Graphic and .../Print
-    for(sal_Int32 nIndex = 0; nIndex < nLength; nIndex++)
-        if( isPrefixOfConfigurationPath(rTemp, pCheckPropertyNames[nIndex]) )
-            return true;
-    return false;
-}
-
 void ConfigChangeListener_Impl::changesOccurred( const ChangesEvent& rEvent )
 {
-    const ElementChange* pElementChanges = rEvent.Changes.getConstArray();
-
     Sequence<OUString>  aChangedNames(rEvent.Changes.getLength());
     OUString* pNames = aChangedNames.getArray();
 
-    const OUString* pCheckPropertyNames = aPropertyNames.getConstArray();
-
     sal_Int32 nNotify = 0;
-    for(int i = 0; i < aChangedNames.getLength(); i++)
+    for(const auto& rElementChange : rEvent.Changes)
     {
         OUString sTemp;
-        pElementChanges[i].Accessor >>= sTemp;
-        if(lcl_Find(sTemp, pCheckPropertyNames, aPropertyNames.getLength()))
+        rElementChange.Accessor >>= sTemp;
+        //true if the path is completely correct or if it is longer
+        //i.e ...Print/Content/Graphic and .../Print
+        bool bFound = std::any_of(aPropertyNames.begin(), aPropertyNames.end(),
+            [&sTemp](const OUString& rCheckPropertyName) { return isPrefixOfConfigurationPath(sTemp, rCheckPropertyName); });
+        if(bFound)
             pNames[nNotify++] = sTemp;
     }
     if( nNotify )
@@ -252,10 +240,8 @@ void ConfigItem::impl_unpackLocalizedProperties(    const   Sequence< OUString >
     // This method should be called for special ConfigItem-mode only!
     OSL_ENSURE( ((m_nMode & ConfigItemMode::AllLocales ) == ConfigItemMode::AllLocales), "ConfigItem::impl_unpackLocalizedProperties() Wrong call of this method detected!" );
 
-    sal_Int32                   nSourceCounter;      // used to step during input lists
     sal_Int32                   nSourceSize;         // marks end of loop over input lists
     sal_Int32                   nDestinationCounter; // actual position in output lists
-    sal_Int32                   nPropertyCounter;    // counter of inner loop for Sequence< PropertyValue >
     sal_Int32                   nPropertiesSize;     // marks end of inner loop
     OUString                    sNodeName;           // base name of node ( e.g. "UIName/" ) ... expand to locale ( e.g. "UIName/de" )
     Sequence< PropertyValue >   lProperties;         // localized values of an configuration entry gotten from lInValues-Any
@@ -279,7 +265,7 @@ void ConfigItem::impl_unpackLocalizedProperties(    const   Sequence< OUString >
     // Split it ... insert PropertyValue.Name to lOutNames and PropertyValue.Value to lOutValues.
 
     nDestinationCounter = 0;
-    for( nSourceCounter=0; nSourceCounter<nSourceSize; ++nSourceCounter )
+    for( sal_Int32 nSourceCounter=0; nSourceCounter<nSourceSize; ++nSourceCounter )
     {
         // If item a special localized one ... split it and insert his parts to output lists ...
         if( lInValues[nSourceCounter].getValueType() == cppu::UnoType<Sequence<PropertyValue>>::get() )
@@ -295,10 +281,10 @@ void ConfigItem::impl_unpackLocalizedProperties(    const   Sequence< OUString >
                 lOutValues.realloc  ( nDestinationCounter+nPropertiesSize );
             }
 
-            for( nPropertyCounter=0; nPropertyCounter<nPropertiesSize; ++nPropertyCounter )
+            for( const auto& rProperty : lProperties )
             {
-                lOutNames [nDestinationCounter] = sNodeName + lProperties[nPropertyCounter].Name;
-                lOutValues[nDestinationCounter] = lProperties[nPropertyCounter].Value;
+                lOutNames [nDestinationCounter] = sNodeName + rProperty.Name;
+                lOutValues[nDestinationCounter] = rProperty.Value;
                 ++nDestinationCounter;
             }
         }
@@ -329,8 +315,7 @@ Sequence< sal_Bool > ConfigItem::GetReadOnlyStates(const css::uno::Sequence< OUS
 
     // We must be sure to return a valid information every time!
     // Set default to non readonly... similar to the configuration handling of this property.
-    for ( i=0; i<nCount; ++i)
-        lStates[i] = false;
+    std::fill(lStates.begin(), lStates.end(), false);
 
     // no access - no information...
     Reference< XHierarchicalNameAccess > xHierarchyAccess = GetTree();
@@ -577,22 +562,16 @@ static void lcl_normalizeLocalNames(Sequence< OUString >& _rNames, ConfigNameFor
                 OUString sTypeName = xTypeContainer->getElementTemplateName();
                 sTypeName = sTypeName.copy(sTypeName.lastIndexOf('/')+1);
 
-                OUString * pNames = _rNames.getArray();
-                for(int i = 0; i<_rNames.getLength(); ++i)
-                {
-                    pNames[i] = wrapConfigurationElementName(pNames[i],sTypeName);
-                }
+                std::transform(_rNames.begin(), _rNames.end(), _rNames.begin(),
+                    [&sTypeName](const OUString& rName) -> OUString { return wrapConfigurationElementName(rName,sTypeName); });
             }
             else
             {
                 Reference<XServiceInfo> xSVI(_xParentNode, UNO_QUERY);
                 if (xSVI.is() && xSVI->supportsService("com.sun.star.configuration.SetAccess"))
                 {
-                    OUString * pNames = _rNames.getArray();
-                    for(int i = 0; i<_rNames.getLength(); ++i)
-                    {
-                        pNames[i] = wrapConfigurationElementName(pNames[i]);
-                    }
+                    std::transform(_rNames.begin(), _rNames.end(), _rNames.begin(),
+                        [](const OUString& rName) -> OUString { return wrapConfigurationElementName(rName); });
                 }
             }
         }
@@ -659,13 +638,12 @@ bool ConfigItem::ClearNodeSet(const OUString& rNode)
             if(!xCont.is())
                 return false;
             Sequence< OUString > aNames = xCont->getElementNames();
-            const OUString* pNames = aNames.getConstArray();
             Reference<XChangesBatch> xBatch(xHierarchyAccess, UNO_QUERY);
-            for(sal_Int32 i = 0; i < aNames.getLength(); i++)
+            for(const OUString& rName : aNames)
             {
                 try
                 {
-                    xCont->removeByName(pNames[i]);
+                    xCont->removeByName(rName);
                 }
                 catch (css::uno::Exception &)
                 {
@@ -690,7 +668,6 @@ bool ConfigItem::ClearNodeElements(const OUString& rNode, Sequence< OUString > c
     Reference<XHierarchicalNameAccess> xHierarchyAccess = GetTree();
     if(xHierarchyAccess.is())
     {
-        const OUString* pElements = rElements.getConstArray();
         try
         {
             Reference<XNameContainer> xCont;
@@ -705,9 +682,9 @@ bool ConfigItem::ClearNodeElements(const OUString& rNode, Sequence< OUString > c
                 return false;
             try
             {
-                for(sal_Int32 nElement = 0; nElement < rElements.getLength(); nElement++)
+                for(const OUString& rElement : rElements)
                 {
-                    xCont->removeByName(pElements[nElement]);
+                    xCont->removeByName(rElement);
                 }
                 Reference<XChangesBatch> xBatch(xHierarchyAccess, UNO_QUERY);
                 xBatch->commitChanges();
@@ -735,17 +712,15 @@ static OUString lcl_extractSetPropertyName( const OUString& rInPath, const OUStr
 static
 Sequence< OUString > lcl_extractSetPropertyNames( const Sequence< PropertyValue >& rValues, const OUString& rPrefix )
 {
-    const PropertyValue* pProperties = rValues.getConstArray();
-
     Sequence< OUString > aSubNodeNames(rValues.getLength());
     OUString* pSubNodeNames = aSubNodeNames.getArray();
 
     OUString sLastSubNode;
     sal_Int32 nSubIndex = 0;
 
-    for(sal_Int32 i = 0; i < rValues.getLength(); i++)
+    for(const PropertyValue& rProperty : rValues)
     {
-        OUString const sSubPath = dropPrefixFromConfigurationPath( pProperties[i].Name, rPrefix);
+        OUString const sSubPath = dropPrefixFromConfigurationPath( rProperty.Name, rPrefix);
         OUString const sSubNode = extractFirstFromConfigurationPath( sSubPath );
 
         if(sLastSubNode != sSubNode)
@@ -789,15 +764,13 @@ bool ConfigItem::SetSetProperties(
             {
                 const Sequence< OUString > aSubNodeNames = lcl_extractSetPropertyNames(rValues, rNode);
 
-                const sal_Int32 nSubNodeCount = aSubNodeNames.getLength();
-
-                for(sal_Int32 j = 0; j <nSubNodeCount; j++)
+                for(const auto& rSubNodeName : aSubNodeNames)
                 {
-                    if(!xCont->hasByName(aSubNodeNames[j]))
+                    if(!xCont->hasByName(rSubNodeName))
                     {
                         Reference<XInterface> xInst = xFac->createInstance();
                         Any aVal; aVal <<= xInst;
-                        xCont->insertByName(aSubNodeNames[j], aVal);
+                        xCont->insertByName(rSubNodeName, aVal);
                     }
                     //set values
                 }
@@ -829,19 +802,18 @@ bool ConfigItem::SetSetProperties(
             else
             {
                 //if no factory is available then the node contains basic data elements
-                const PropertyValue* pValues = rValues.getConstArray();
-                for(int nValue = 0; nValue < rValues.getLength();nValue++)
+                for(const PropertyValue& rValue : rValues)
                 {
                     try
                     {
-                        OUString sSubNode = lcl_extractSetPropertyName( pValues[nValue].Name, rNode );
+                        OUString sSubNode = lcl_extractSetPropertyName( rValue.Name, rNode );
 
                         if(xCont->hasByName(sSubNode))
-                            xCont->replaceByName(sSubNode, pValues[nValue].Value);
+                            xCont->replaceByName(sSubNode, rValue.Value);
                         else
-                            xCont->insertByName(sSubNode, pValues[nValue].Value);
+                            xCont->insertByName(sSubNode, rValue.Value);
 
-                        OSL_ENSURE( xHierarchyAccess->hasByHierarchicalName(pValues[nValue].Name),
+                        OSL_ENSURE( xHierarchyAccess->hasByHierarchicalName(rValue.Name),
                             "Invalid config path" );
                     }
                     catch (css::uno::Exception &)
@@ -885,8 +857,6 @@ bool ConfigItem::ReplaceSetProperties(
 
             // JB: Change: now the same name handling for sets of simple values
             const Sequence< OUString > aSubNodeNames = lcl_extractSetPropertyNames(rValues, rNode);
-            const OUString* pSubNodeNames = aSubNodeNames.getConstArray();
-            const sal_Int32 nSubNodeCount = aSubNodeNames.getLength();
 
             Reference<XSingleServiceFactory> xFac(xCont, UNO_QUERY);
             const bool isSimpleValueSet = !xFac.is();
@@ -894,23 +864,14 @@ bool ConfigItem::ReplaceSetProperties(
             //remove unknown members first
             {
                 const Sequence<OUString> aContainerSubNodes = xCont->getElementNames();
-                const OUString* pContainerSubNodes = aContainerSubNodes.getConstArray();
 
-                for(sal_Int32 nContSub = 0; nContSub < aContainerSubNodes.getLength(); nContSub++)
+                for(const OUString& rContainerSubNode : aContainerSubNodes)
                 {
-                    bool bFound = false;
-                    for(sal_Int32 j = 0; j < nSubNodeCount; j++)
-                    {
-                        if(pSubNodeNames[j] == pContainerSubNodes[nContSub])
-                        {
-                            bFound = true;
-                            break;
-                        }
-                    }
+                    bool bFound = comphelper::findValue(aSubNodeNames, rContainerSubNode) != -1;
                     if(!bFound)
                     try
                     {
-                        xCont->removeByName(pContainerSubNodes[nContSub]);
+                        xCont->removeByName(rContainerSubNode);
                     }
                     catch (const Exception&)
                     {
@@ -919,7 +880,7 @@ bool ConfigItem::ReplaceSetProperties(
                             try
                             {
                                 // #i37322#: fallback action: replace with <void/>
-                                xCont->replaceByName(pContainerSubNodes[nContSub], Any());
+                                xCont->replaceByName(rContainerSubNode, Any());
                                 // fallback successful: continue looping
                                 continue;
                             }
@@ -938,14 +899,14 @@ bool ConfigItem::ReplaceSetProperties(
 
             if(xFac.is()) // !isSimpleValueSet
             {
-                for(sal_Int32 j = 0; j < nSubNodeCount; j++)
+                for(const OUString& rSubNodeName : aSubNodeNames)
                 {
-                    if(!xCont->hasByName(pSubNodeNames[j]))
+                    if(!xCont->hasByName(rSubNodeName))
                     {
                         //create if not available
                         Reference<XInterface> xInst = xFac->createInstance();
                         Any aVal; aVal <<= xInst;
-                        xCont->insertByName(pSubNodeNames[j], aVal);
+                        xCont->insertByName(rSubNodeName, aVal);
                     }
                 }
                 try { xBatch->commitChanges(); }
@@ -972,19 +933,17 @@ bool ConfigItem::ReplaceSetProperties(
             }
             else
             {
-                const PropertyValue* pValues = rValues.getConstArray();
-
                 //if no factory is available then the node contains basic data elements
-                for(int nValue = 0; nValue < rValues.getLength();nValue++)
+                for(const PropertyValue& rValue : rValues)
                 {
                     try
                     {
-                        OUString sSubNode = lcl_extractSetPropertyName( pValues[nValue].Name, rNode );
+                        OUString sSubNode = lcl_extractSetPropertyName( rValue.Name, rNode );
 
                         if(xCont->hasByName(sSubNode))
-                            xCont->replaceByName(sSubNode, pValues[nValue].Value);
+                            xCont->replaceByName(sSubNode, rValue.Value);
                         else
-                            xCont->insertByName(sSubNode, pValues[nValue].Value);
+                            xCont->insertByName(sSubNode, rValue.Value);
                     }
                     catch (css::uno::Exception &)
                     {
diff --git a/unotools/source/config/confignode.cxx b/unotools/source/config/confignode.cxx
index 64ea55ced8c5..bb5760ccfbbd 100644
--- a/unotools/source/config/confignode.cxx
+++ b/unotools/source/config/confignode.cxx
@@ -192,9 +192,8 @@ namespace utl
             {
                 aReturn = m_xDirectAccess->getElementNames();
                 // normalize the names
-                OUString* pNames = aReturn.getArray();
-                for (sal_Int32 i=0; i<aReturn.getLength(); ++i, ++pNames)
-                    *pNames = normalizeName(*pNames, NO_CONFIGURATION);
+                std::transform(aReturn.begin(), aReturn.end(), aReturn.begin(),
+                    [this](const OUString& rName) -> OUString { return normalizeName(rName, NO_CONFIGURATION); });
             }
             catch(Exception&)
             {
diff --git a/unotools/source/config/dynamicmenuoptions.cxx b/unotools/source/config/dynamicmenuoptions.cxx
index 6109fb4666d5..fe7f31d6b96a 100644
--- a/unotools/source/config/dynamicmenuoptions.cxx
+++ b/unotools/source/config/dynamicmenuoptions.cxx
@@ -481,8 +481,7 @@ void SvtDynamicMenuOptions_Impl::impl_SortAndExpandPropertyNames( const Sequence
 
     // Copy all items to temp. vector to use fast sort operations :-)
     lTemp.reserve(nSourceCount);
-    for (sal_Int32 nSourceStep = 0; nSourceStep < nSourceCount; ++nSourceStep)
-        lTemp.push_back( lSource[nSourceStep] );
+    std::copy(lSource.begin(), lSource.end(), std::back_inserter(lTemp));
 
     // Sort all entries by number ...
     stable_sort( lTemp.begin(), lTemp.end(), CountWithPrefixSort() );
diff --git a/unotools/source/config/eventcfg.cxx b/unotools/source/config/eventcfg.cxx
index e8cd76bd9d32..4c09402e2bcd 100644
--- a/unotools/source/config/eventcfg.cxx
+++ b/unotools/source/config/eventcfg.cxx
@@ -195,11 +195,11 @@ void GlobalEventConfig_Impl::initBindingInfo()
 
     // Expand all keys
     Sequence< OUString > lMacros(1);
-    for (sal_Int32 i=0; i<lEventNames.getLength(); ++i )
+    for (const auto& rEventName : lEventNames )
     {
         OUStringBuffer aBuffer( 32 );
         aBuffer.append( aSetNode );
-        aBuffer.append( lEventNames[i] );
+        aBuffer.append( rEventName );
         aBuffer.append( aCommandKey );
         lMacros[0] = aBuffer.makeStringAndClear();
         SAL_INFO("unotools", "reading binding for: " << lMacros[0]);
@@ -208,12 +208,12 @@ void GlobalEventConfig_Impl::initBindingInfo()
         if( lValues.hasElements() )
         {
             lValues[0] >>= sMacroURL;
-            sal_Int32 startIndex = lEventNames[i].indexOf('\'');
-            sal_Int32 endIndex =  lEventNames[i].lastIndexOf('\'');
+            sal_Int32 startIndex = rEventName.indexOf('\'');
+            sal_Int32 endIndex =  rEventName.lastIndexOf('\'');
             if( startIndex >=0 && endIndex > 0 )
             {
                 startIndex++;
-                OUString eventName = lEventNames[i].copy(startIndex,endIndex-startIndex);
+                OUString eventName = rEventName.copy(startIndex,endIndex-startIndex);
                 m_eventBindingHash[ eventName ] = sMacroURL;
             }
         }
@@ -230,11 +230,10 @@ void GlobalEventConfig_Impl::replaceByName( const OUString& aName, const Any& aE
                 Reference< XInterface > (), 2);
     }
     OUString macroURL;
-    sal_Int32 nPropCount = props.getLength();
-    for( sal_Int32 index = 0; index < nPropCount; ++index )
+    for( const auto& rProp : props )
     {
-        if ( props[ index ].Name == "Script" )
-            props[ index ].Value >>= macroURL;
+        if ( rProp.Name == "Script" )
+            rProp.Value >>= macroURL;
     }
     m_eventBindingHash[ aName ] = macroURL;
     SetModified();
diff --git a/unotools/source/config/fontcfg.cxx b/unotools/source/config/fontcfg.cxx
index 92b72799bcbb..50c45600d24b 100644
--- a/unotools/source/config/fontcfg.cxx
+++ b/unotools/source/config/fontcfg.cxx
@@ -119,14 +119,12 @@ DefaultFontConfiguration::DefaultFontConfiguration()
         {
             Sequence< OUString > aLocales = m_xConfigAccess->getElementNames();
             // fill config hash with empty interfaces
-            int nLocales = aLocales.getLength();
-            const OUString* pLocaleStrings = aLocales.getConstArray();
-            for( int i = 0; i < nLocales; i++ )
+            for( const OUString& rLocaleString : aLocales )
             {
                 // Feed through LanguageTag for casing.
-                OUString aLoc( LanguageTag( pLocaleStrings[i], true).getBcp47( false));
+                OUString aLoc( LanguageTag( rLocaleString, true).getBcp47( false));
                 m_aConfig[ aLoc ] = LocaleAccess();
-                m_aConfig[ aLoc ].aConfigLocaleString = pLocaleStrings[i];
+                m_aConfig[ aLoc ].aConfigLocaleString = rLocaleString;
             }
         }
     }
@@ -335,14 +333,12 @@ FontSubstConfiguration::FontSubstConfiguration() :
         {
             Sequence< OUString > aLocales = m_xConfigAccess->getElementNames();
             // fill config hash with empty interfaces
-            int nLocales = aLocales.getLength();
-            const OUString* pLocaleStrings = aLocales.getConstArray();
-            for( int i = 0; i < nLocales; i++ )
+            for( const OUString& rLocaleString : aLocales )
             {
                 // Feed through LanguageTag for casing.
-                OUString aLoc( LanguageTag( pLocaleStrings[i], true).getBcp47( false));
+                OUString aLoc( LanguageTag( rLocaleString, true).getBcp47( false));
                 m_aSubst[ aLoc ] = LocaleSubst();
-                m_aSubst[ aLoc ].aConfigLocaleString = pLocaleStrings[i];
+                m_aSubst[ aLoc ].aConfigLocaleString = rLocaleString;
             }
         }
     }
@@ -979,7 +975,6 @@ void FontSubstConfiguration::readLocaleSubst( const OUString& rBcp47 ) const
             {
                 Sequence< OUString > aFonts = xNode->getElementNames();
                 int nFonts = aFonts.getLength();
-                const OUString* pFontNames = aFonts.getConstArray();
                 // improve performance, heap fragmentation
                 it->second.aSubstAttributes.reserve( nFonts );
 
@@ -989,12 +984,12 @@ void FontSubstConfiguration::readLocaleSubst( const OUString& rBcp47 ) const
                 OUString const aSubstWeightStr    ( "FontWeight" );
                 OUString const aSubstWidthStr     ( "FontWidth" );
                 OUString const aSubstTypeStr      ( "FontType" );
-                for( int i = 0; i < nFonts; i++ )
+                for( const OUString& rFontName : aFonts )
                 {
                     Reference< XNameAccess > xFont;
                     try
                     {
-                        Any aAny = xNode->getByName( pFontNames[i] );
+                        Any aAny = xNode->getByName( rFontName );
                         aAny >>= xFont;
                     }
                     catch (const NoSuchElementException&)
@@ -1005,13 +1000,13 @@ void FontSubstConfiguration::readLocaleSubst( const OUString& rBcp47 ) const
                     }
                     if( ! xFont.is() )
                     {
-                        SAL_WARN("unotools.config", "did not get font attributes for " << pFontNames[i]);
+                        SAL_WARN("unotools.config", "did not get font attributes for " << rFontName);
                         continue;
                     }
 
                     FontNameAttr aAttr;
                     // read subst attributes from config
-                    aAttr.Name = pFontNames[i];
+                    aAttr.Name = rFontName;
                     fillSubstVector( xFont, aSubstFontsStr, aAttr.Substitutions );
                     fillSubstVector( xFont, aSubstFontsMSStr, aAttr.MSSubstitutions );
                     aAttr.Weight = getSubstWeight( xFont, aSubstWeightStr );
diff --git a/unotools/source/config/historyoptions.cxx b/unotools/source/config/historyoptions.cxx
index 5fad79cfbb96..ec2233ff32ec 100644
--- a/unotools/source/config/historyoptions.cxx
+++ b/unotools/source/config/historyoptions.cxx
@@ -231,16 +231,15 @@ void SvtHistoryOptions_Impl::Clear( EHistoryType eHistory )
         xListAccess->getByName(s_sItemList) >>= xNode;
         Sequence<OUString> aStrings(xNode->getElementNames());
 
-        const sal_Int32 nLength = aStrings.getLength();
-        for (sal_Int32 i = 0; i < nLength; ++i)
-            xNode->removeByName(aStrings[i]);
+        for (const auto& rString : aStrings)
+            xNode->removeByName(rString);
 
         // clear OrderList
         xListAccess->getByName(s_sOrderList) >>= xNode;
         aStrings = xNode->getElementNames();
 
-        for (sal_Int32 j = 0; j < nLength; ++j)
-            xNode->removeByName(aStrings[j]);
+        for (const auto& rString : aStrings)
+            xNode->removeByName(rString);
 
         ::comphelper::ConfigurationHelper::flush(m_xCfg);
     }
diff --git a/unotools/source/config/lingucfg.cxx b/unotools/source/config/lingucfg.cxx
index a1c07d61489c..1d62a2f3013e 100644
--- a/unotools/source/config/lingucfg.cxx
+++ b/unotools/source/config/lingucfg.cxx
@@ -970,9 +970,8 @@ bool SvtLinguConfig::GetDictionaryEntry(
         if (bSuccess)
         {
             // get file URL's for the locations
-            for (sal_Int32 i = 0;  i < aLocations.getLength();  ++i)
+            for (OUString& rLocation : aLocations)
             {
-                OUString &rLocation = aLocations[i];
                 if (!lcl_GetFileUrlFromOrigin( rLocation, rLocation ))
                     bSuccess = false;
             }
@@ -1018,33 +1017,27 @@ std::vector< SvtLinguConfigDictionaryEntry > SvtLinguConfig::GetActiveDictionari
     {
         uno::Sequence< OUString > aElementNames;
         GetElementNamesFor( aG_Dictionaries, aElementNames );
-        sal_Int32 nLen = aElementNames.getLength();
-        const OUString *pElementNames = aElementNames.getConstArray();
 
         const uno::Sequence< OUString > aDisabledDics( GetDisabledDictionaries() );
 
         SvtLinguConfigDictionaryEntry aDicEntry;
-        for (sal_Int32 i = 0;  i < nLen;  ++i)
+        for (const OUString& rElementName : aElementNames)
         {
             // does dictionary match the format we are looking for?
-            if (GetDictionaryEntry( pElementNames[i], aDicEntry ) &&
+            if (GetDictionaryEntry( rElementName, aDicEntry ) &&
                 aDicEntry.aFormatName == rFormatName)
             {
                 // check if it is active or not
-                bool bDicIsActive = true;
-                for (sal_Int32 k = 0;  bDicIsActive && k < aDisabledDics.getLength();  ++k)
-                {
-                    if (aDisabledDics[k] == pElementNames[i])
-                        bDicIsActive = false;
-                }
+                bool bDicIsActive = std::none_of(aDisabledDics.begin(), aDisabledDics.end(),
+                    [&rElementName](const OUString& rDic) { return rDic == rElementName; });
 
                 if (bDicIsActive)
                 {
                     DBG_ASSERT( !aDicEntry.aFormatName.isEmpty(),
                             "FormatName not set" );
-                    DBG_ASSERT( aDicEntry.aLocations.getLength(),
+                    DBG_ASSERT( aDicEntry.aLocations.hasElements(),
                             "Locations not set" );
-                    DBG_ASSERT( aDicEntry.aLocaleNames.getLength(),
+                    DBG_ASSERT( aDicEntry.aLocaleNames.hasElements(),
                             "Locales not set" );
                     aRes.push_back( aDicEntry );
                 }
diff --git a/unotools/source/config/moduleoptions.cxx b/unotools/source/config/moduleoptions.cxx
index 7d6fa71fe4ec..b877c0b90d27 100644
--- a/unotools/source/config/moduleoptions.cxx
+++ b/unotools/source/config/moduleoptions.cxx
@@ -354,13 +354,8 @@ void SvtModuleOptions_Impl::ImplCommit()
         sBasePath  = PATHSEPARATOR + rInfo.getFactory() + PATHSEPARATOR;
 
         const css::uno::Sequence< css::beans::PropertyValue > lChangedProperties = rInfo.getChangedProperties ( sBasePath );
-        const css::beans::PropertyValue*                      pChangedProperties = lChangedProperties.getConstArray();
-        sal_Int32                                             nPropertyCount     = lChangedProperties.getLength();
-        for( sal_Int32 nProperty=0; nProperty<nPropertyCount; ++nProperty )
-        {
-            lCommitProperties[nRealCount] = pChangedProperties[nProperty];
-            ++nRealCount;
-        }
+        std::copy(lChangedProperties.begin(), lChangedProperties.end(), std::next(lCommitProperties.begin(), nRealCount));
+        nRealCount += lChangedProperties.getLength();
     }
     // Resize commit list to real size.
     // If nothing to do - suppress calling of configuration ...
@@ -561,14 +556,14 @@ css::uno::Sequence< OUString > SvtModuleOptions_Impl::impl_ExpandSetNames( const
     OUString* pPropNames = lPropNames.getArray();
     sal_Int32 nPropStart = 0;
 
-    for( sal_Int32 nName=0; nName<nCount; ++nName )
+    for( const auto& rSetName : lSetNames )
     {
-        pPropNames[nPropStart+PROPERTYHANDLE_SHORTNAME       ] = lSetNames[nName] + PATHSEPARATOR PROPERTYNAME_SHORTNAME;
-        pPropNames[nPropStart+PROPERTYHANDLE_TEMPLATEFILE    ] = lSetNames[nName] + PATHSEPARATOR PROPERTYNAME_TEMPLATEFILE;
-        pPropNames[nPropStart+PROPERTYHANDLE_WINDOWATTRIBUTES] = lSetNames[nName] + PATHSEPARATOR PROPERTYNAME_WINDOWATTRIBUTES;
-        pPropNames[nPropStart+PROPERTYHANDLE_EMPTYDOCUMENTURL] = lSetNames[nName] + PATHSEPARATOR PROPERTYNAME_EMPTYDOCUMENTURL;
-        pPropNames[nPropStart+PROPERTYHANDLE_DEFAULTFILTER   ] = lSetNames[nName] + PATHSEPARATOR PROPERTYNAME_DEFAULTFILTER;
-        pPropNames[nPropStart+PROPERTYHANDLE_ICON            ] = lSetNames[nName] + PATHSEPARATOR PROPERTYNAME_ICON;
+        pPropNames[nPropStart+PROPERTYHANDLE_SHORTNAME       ] = rSetName + PATHSEPARATOR PROPERTYNAME_SHORTNAME;
+        pPropNames[nPropStart+PROPERTYHANDLE_TEMPLATEFILE    ] = rSetName + PATHSEPARATOR PROPERTYNAME_TEMPLATEFILE;
+        pPropNames[nPropStart+PROPERTYHANDLE_WINDOWATTRIBUTES] = rSetName + PATHSEPARATOR PROPERTYNAME_WINDOWATTRIBUTES;
+        pPropNames[nPropStart+PROPERTYHANDLE_EMPTYDOCUMENTURL] = rSetName + PATHSEPARATOR PROPERTYNAME_EMPTYDOCUMENTURL;
+        pPropNames[nPropStart+PROPERTYHANDLE_DEFAULTFILTER   ] = rSetName + PATHSEPARATOR PROPERTYNAME_DEFAULTFILTER;
+        pPropNames[nPropStart+PROPERTYHANDLE_ICON            ] = rSetName + PATHSEPARATOR PROPERTYNAME_ICON;
         nPropStart += PROPERTYCOUNT;
     }
 
@@ -698,13 +693,11 @@ void SvtModuleOptions_Impl::impl_Read( const css::uno::Sequence< OUString >& lFa
     //              see "nPropertyStart += PROPERTYCOUNT" ...
 
     sal_Int32                   nPropertyStart  = 0;
-    sal_Int32                   nNodeCount      = lFactories.getLength();
     FactoryInfo*                pInfo           = nullptr;
     SvtModuleOptions::EFactory  eFactory;
 
-    for( sal_Int32 nSetNode=0; nSetNode<nNodeCount; ++nSetNode )
+    for( const OUString& sFactoryName : lFactories )
     {
-        const OUString& sFactoryName = lFactories[nSetNode];
         if( ClassifyFactoryByName( sFactoryName, eFactory ) )
         {
             OUString sTemp;
@@ -733,20 +726,18 @@ void SvtModuleOptions_Impl::MakeReadonlyStatesAvailable()
         return;
 
     css::uno::Sequence< OUString > lFactories = GetNodeNames(OUString());
-    sal_Int32 c = lFactories.getLength();
-    sal_Int32 i = 0;
-    for (i=0; i<c; ++i)
-    {
-        OUStringBuffer sPath(256);
-        sPath.append(lFactories[i]             );
-        sPath.append(PATHSEPARATOR             );
-        sPath.append(PROPERTYNAME_DEFAULTFILTER);
-
-        lFactories[i] = sPath.makeStringAndClear();
-    }
+    std::transform(lFactories.begin(), lFactories.end(), lFactories.begin(),
+        [](const OUString& rFactory) -> OUString {
+            OUStringBuffer sPath(256);
+            sPath.append(rFactory                  );
+            sPath.append(PATHSEPARATOR             );
+            sPath.append(PROPERTYNAME_DEFAULTFILTER);
+            return sPath.makeStringAndClear();
+        });
 
     css::uno::Sequence< sal_Bool > lReadonlyStates = GetReadOnlyStates(lFactories);
-    for (i=0; i<c; ++i)
+    sal_Int32 c = lFactories.getLength();
+    for (sal_Int32 i=0; i<c; ++i)
     {
         OUString&            rFactoryName = lFactories[i];
         SvtModuleOptions::EFactory  eFactory;
@@ -1085,11 +1076,10 @@ SvtModuleOptions::EFactory SvtModuleOptions::ClassifyFactoryByModel(const css::u
         return EFactory::UNKNOWN_FACTORY;
 
     const css::uno::Sequence< OUString > lServices = xInfo->getSupportedServiceNames();
-    const OUString*                      pServices = lServices.getConstArray();
 
-    for (sal_Int32 i=0; i<lServices.getLength(); ++i)
+    for (const OUString& rService : lServices)
     {
-        SvtModuleOptions::EFactory eApp = SvtModuleOptions::ClassifyFactoryByServiceName(pServices[i]);
+        SvtModuleOptions::EFactory eApp = SvtModuleOptions::ClassifyFactoryByServiceName(rService);
         if (eApp != EFactory::UNKNOWN_FACTORY)
             return eApp;
     }
diff --git a/unotools/source/config/optionsdlg.cxx b/unotools/source/config/optionsdlg.cxx
index 8efc6e2dc56e..988ef98f3857 100644
--- a/unotools/source/config/optionsdlg.cxx
+++ b/unotools/source/config/optionsdlg.cxx
@@ -85,10 +85,9 @@ SvtOptionsDlgOptions_Impl::SvtOptionsDlgOptions_Impl()
     OUString sRootNode( ROOT_NODE );
     Sequence< OUString > aNodeSeq = GetNodeNames( sRootNode );
     OUString sNode( sRootNode + g_sPathDelimiter );
-    sal_uInt32 nCount = aNodeSeq.getLength();
-    for ( sal_uInt32 n = 0; n < nCount; n++ )
+    for ( const auto& rNode : aNodeSeq )
     {
-        OUString sSubNode( sNode + aNodeSeq[n] );
+        OUString sSubNode( sNode + rNode );
         ReadNode( sSubNode, NT_Group );
     }
 }
@@ -145,13 +144,10 @@ void SvtOptionsDlgOptions_Impl::ReadNode( const OUString& _rNode, NodeType _eTyp
     {
         OUString sNodes( sNode + sSet );
         Sequence< OUString > aNodes = GetNodeNames( sNodes );
-        if ( aNodes.hasElements() )
+        for ( const auto& rNode : aNodes )
         {
-            for ( sal_uInt32 n = 0; n < static_cast<sal_uInt32>(aNodes.getLength()); ++n )
-            {
-                OUString sSubNodeName( sNodes + g_sPathDelimiter + aNodes[n] );
-                ReadNode( sSubNodeName, _eType == NT_Group ? NT_Page : NT_Option );
-            }
+            OUString sSubNodeName( sNodes + g_sPathDelimiter + rNode );
+            ReadNode( sSubNodeName, _eType == NT_Group ? NT_Page : NT_Option );
         }
     }
 }
diff --git a/unotools/source/config/pathoptions.cxx b/unotools/source/config/pathoptions.cxx
index df102637118e..bbd01f1a40e6 100644
--- a/unotools/source/config/pathoptions.cxx
+++ b/unotools/source/config/pathoptions.cxx
@@ -407,9 +407,8 @@ SvtPathOptions_Impl::SvtPathOptions_Impl() :
     Sequence< Property > aPathPropSeq = xPropSetInfo->getProperties();
 
     NameToHandleMap aTempHashMap;
-    for ( sal_Int32 n = 0; n < aPathPropSeq.getLength(); n++ )
+    for ( const css::beans::Property& aProperty : aPathPropSeq )
     {
-        const css::beans::Property& aProperty = aPathPropSeq[n];
         aTempHashMap.emplace(aProperty.Name, aProperty.Handle);
     }
 
diff --git a/unotools/source/config/securityoptions.cxx b/unotools/source/config/securityoptions.cxx
index 25e70207da1d..33a87d8ffb6c 100644
--- a/unotools/source/config/securityoptions.cxx
+++ b/unotools/source/config/securityoptions.cxx
@@ -287,9 +287,8 @@ void SvtSecurityOptions_Impl::SetProperty( sal_Int32 nProperty, const Any& rValu
             if (!utl::ConfigManager::IsFuzzing())
             {
                 SvtPathOptions  aOpt;
-                sal_uInt32      nCount = m_seqSecureURLs.getLength();
-                for( sal_uInt32 nItem = 0; nItem < nCount; ++nItem )
-                    m_seqSecureURLs[ nItem ] = aOpt.SubstituteVariable( m_seqSecureURLs[ nItem ] );
+                std::transform(m_seqSecureURLs.begin(), m_seqSecureURLs.end(), m_seqSecureURLs.begin(),
+                    [&aOpt](const OUString& rUrl) -> OUString { return aOpt.SubstituteVariable( rUrl ); });
             }
             m_bROSecureURLs = bRO;
         }
@@ -418,16 +417,15 @@ void SvtSecurityOptions_Impl::LoadAuthors()
         sal_Int32               c2 = c1 * 3;                // 3 Properties inside Struct TrustedAuthor
         Sequence< OUString >    lAllAuthors( c2 );
 
-        sal_Int32               i1;
-        sal_Int32               i2;
+        sal_Int32               i2 = 0;
         OUString                aSep( "/" );
-        for( i1 = 0, i2 = 0; i1 < c1; ++i1 )
+        for( const auto& rAuthor : lAuthors )
         {
-            lAllAuthors[ i2 ] = PROPERTYNAME_MACRO_TRUSTEDAUTHORS + aSep + lAuthors[ i1 ] + aSep + PROPERTYNAME_TRUSTEDAUTHOR_SUBJECTNAME;
+            lAllAuthors[ i2 ] = PROPERTYNAME_MACRO_TRUSTEDAUTHORS + aSep + rAuthor + aSep + PROPERTYNAME_TRUSTEDAUTHOR_SUBJECTNAME;
             ++i2;
-            lAllAuthors[ i2 ] = PROPERTYNAME_MACRO_TRUSTEDAUTHORS + aSep + lAuthors[ i1 ] + aSep + PROPERTYNAME_TRUSTEDAUTHOR_SERIALNUMBER;
+            lAllAuthors[ i2 ] = PROPERTYNAME_MACRO_TRUSTEDAUTHORS + aSep + rAuthor + aSep + PROPERTYNAME_TRUSTEDAUTHOR_SERIALNUMBER;
             ++i2;
-            lAllAuthors[ i2 ] = PROPERTYNAME_MACRO_TRUSTEDAUTHORS + aSep + lAuthors[ i1 ] + aSep + PROPERTYNAME_TRUSTEDAUTHOR_RAWDATA;
+            lAllAuthors[ i2 ] = PROPERTYNAME_MACRO_TRUSTEDAUTHORS + aSep + rAuthor + aSep + PROPERTYNAME_TRUSTEDAUTHOR_RAWDATA;
             ++i2;
         }
 
@@ -436,7 +434,8 @@ void SvtSecurityOptions_Impl::LoadAuthors()
         {
             std::vector< SvtSecurityOptions::Certificate > v;
             SvtSecurityOptions::Certificate aCert( 3 );
-            for( i1 = 0, i2 = 0; i1 < c1; ++i1 )
+            i2 = 0;
+            for( sal_Int32 i1 = 0; i1 < c1; ++i1 )
             {
                 lValues[ i2 ] >>= aCert[ 0 ];
                 ++i2;
@@ -590,9 +589,8 @@ void SvtSecurityOptions_Impl::ImplCommit()
                 {
                     Sequence< OUString >    lURLs( m_seqSecureURLs );
                     SvtPathOptions          aOpt;
-                    sal_Int32               nURLsCnt = lURLs.getLength();
-                    for( sal_Int32 nItem = 0; nItem < nURLsCnt; ++nItem )
-                        lURLs[ nItem ] = aOpt.UseVariable( lURLs[ nItem ] );
+                    std::transform(lURLs.begin(), lURLs.end(), lURLs.begin(),
+                        [&aOpt](const OUString& rUrl) -> OUString { return aOpt.UseVariable( rUrl ); });
                     lValues[ nRealCount ] <<= lURLs;
                 }
             }
diff --git a/unotools/source/config/viewoptions.cxx b/unotools/source/config/viewoptions.cxx
index 85708df745a9..b88fddf630d3 100644
--- a/unotools/source/config/viewoptions.cxx
+++ b/unotools/source/config/viewoptions.cxx
@@ -319,16 +319,12 @@ css::uno::Sequence< css::beans::NamedValue > SvtViewOptionsBase_Impl::GetUserDat
         if (xUserData.is())
         {
             const css::uno::Sequence<OUString> lNames = xUserData->getElementNames();
-            const OUString* pNames = lNames.getConstArray();
             sal_Int32 c = lNames.getLength();
-            sal_Int32 i = 0;
             css::uno::Sequence< css::beans::NamedValue > lUserData(c);
 
-            for (i=0; i<c; ++i)
-            {
-                lUserData[i].Name  = pNames[i];
-                lUserData[i].Value = xUserData->getByName(pNames[i]);
-            }
+            std::transform(lNames.begin(), lNames.end(), lUserData.begin(),
+                [&xUserData](const OUString& rName) -> css::beans::NamedValue {
+                    return { rName, xUserData->getByName(rName) }; });
 
             return lUserData;
         }
@@ -358,15 +354,12 @@ void SvtViewOptionsBase_Impl::SetUserData( const OUString&
         xNode->getByName(PROPERTY_USERDATA) >>= xUserData;
         if (xUserData.is())
         {
-            const css::beans::NamedValue* pData = lData.getConstArray();
-            sal_Int32               c     = lData.getLength();
-            sal_Int32               i     = 0;
-            for (i=0; i<c; ++i)
+            for (const css::beans::NamedValue& rData : lData)
             {
-                if (xUserData->hasByName(pData[i].Name))
-                    xUserData->replaceByName(pData[i].Name, pData[i].Value);
+                if (xUserData->hasByName(rData.Name))
+                    xUserData->replaceByName(rData.Name, rData.Value);
                 else
-                    xUserData->insertByName(pData[i].Name, pData[i].Value);
+                    xUserData->insertByName(rData.Name, rData.Value);
             }
         }
         ::comphelper::ConfigurationHelper::flush(m_xRoot);
diff --git a/unotools/source/i18n/localedatawrapper.cxx b/unotools/source/i18n/localedatawrapper.cxx
index 0374f1548faf..ead8a1ac53bb 100644
--- a/unotools/source/i18n/localedatawrapper.cxx
+++ b/unotools/source/i18n/localedatawrapper.cxx
@@ -299,9 +299,9 @@ std::vector< LanguageType > LocaleDataWrapper::getInstalledLanguageTypes()
     sal_Int32 nCount = xLoc.getLength();
     std::vector< LanguageType > xLang;
     xLang.reserve(nCount);
-    for ( sal_Int32 i=0; i<nCount; i++ )
+    for ( const auto& rLoc : xLoc )
     {
-        LanguageTag aLanguageTag( xLoc[i] );
+        LanguageTag aLanguageTag( rLoc );
         OUString aDebugLocale;
         if (areChecksEnabled())
         {
@@ -477,21 +477,12 @@ void LocaleDataWrapper::getSecondaryCalendarImpl()
     if (!xSecondaryCalendar && !bSecondaryCalendarValid)
     {
         Sequence< Calendar2 > xCals = getAllCalendars();
-        sal_Int32 nCount = xCals.getLength();
-        if (nCount > 1)
+        if (xCals.getLength() > 1)
         {
-            sal_Int32 nNonDef = -1;
-            const Calendar2* pArr = xCals.getArray();
-            for (sal_Int32 i=0; i<nCount; ++i)
-            {
-                if (!pArr[i].Default)
-                {
-                    nNonDef = i;
-                    break;
-                }
-            }
-            if (nNonDef >= 0)
-                xSecondaryCalendar.reset( new Calendar2( xCals[nNonDef]));
+            auto pCal = std::find_if(xCals.begin(), xCals.end(),
+                [](const Calendar2& rCal) { return !rCal.Default; });
+            if (pCal != xCals.end())
+                xSecondaryCalendar.reset( new Calendar2( *pCal));
         }
         bSecondaryCalendarValid = true;
     }
@@ -532,21 +523,15 @@ void LocaleDataWrapper::getDefaultCalendarImpl()
     if (!xDefaultCalendar)
     {
         Sequence< Calendar2 > xCals = getAllCalendars();
-        sal_Int32 nCount = xCals.getLength();
-        sal_Int32 nDef = 0;
-        if (nCount > 1)
+        auto pCal = xCals.begin();
+        if (xCals.getLength() > 1)
         {
-            const Calendar2* pArr = xCals.getArray();
-            for (sal_Int32 i=0; i<nCount; ++i)
-            {
-                if (pArr[i].Default)
-                {
-                    nDef = i;
-                    break;
-                }
-            }
+            pCal = std::find_if(xCals.begin(), xCals.end(),
+                [](const Calendar2& rCal) { return rCal.Default; });
+            if (pCal == xCals.end())
+                pCal = xCals.begin();
         }
-        xDefaultCalendar.reset( new Calendar2( xCals[nDef]));
+        xDefaultCalendar.reset( new Calendar2( *pCal));
     }
 }
 
@@ -631,35 +616,29 @@ sal_uInt16 LocaleDataWrapper::getCurrDigits() const
 void LocaleDataWrapper::getCurrSymbolsImpl()
 {
     Sequence< Currency2 > aCurrSeq = getAllCurrencies();
-    sal_Int32 nCnt = aCurrSeq.getLength();
-    Currency2 const * const pCurrArr = aCurrSeq.getArray();
-    sal_Int32 nElem;
-    for ( nElem = 0; nElem < nCnt; nElem++ )
+    if ( !aCurrSeq.hasElements() )
     {
-        if ( pCurrArr[nElem].Default )
-            break;
+        if (areChecksEnabled())
+            outputCheckMessage(OUString("LocaleDataWrapper::getCurrSymbolsImpl: no currency at all, using ShellsAndPebbles"));
+        aCurrSymbol = "ShellsAndPebbles";
+        aCurrBankSymbol = aCurrSymbol;
+        nCurrPositiveFormat = nCurrNegativeFormat = nCurrFormatDefault;
+        nCurrDigits = 2;
+        return;
     }
-    if ( nElem >= nCnt )
+    auto pCurr = std::find_if(aCurrSeq.begin(), aCurrSeq.end(),
+        [](const Currency2& rCurr) { return rCurr.Default; });
+    if ( pCurr == aCurrSeq.end() )
     {
         if (areChecksEnabled())
         {
             outputCheckMessage( appendLocaleInfo( "LocaleDataWrapper::getCurrSymbolsImpl: no default currency" ) );
         }
-        nElem = 0;
-        if ( nElem >= nCnt )
-        {
-            if (areChecksEnabled())
-                outputCheckMessage(OUString("LocaleDataWrapper::getCurrSymbolsImpl: no currency at all, using ShellsAndPebbles"));
-            aCurrSymbol = "ShellsAndPebbles";
-            aCurrBankSymbol = aCurrSymbol;
-            nCurrPositiveFormat = nCurrNegativeFormat = nCurrFormatDefault;
-            nCurrDigits = 2;
-            return;
-        }
+        pCurr = aCurrSeq.begin();
     }
-    aCurrSymbol = pCurrArr[nElem].Symbol;
-    aCurrBankSymbol = pCurrArr[nElem].BankSymbol;
-    nCurrDigits = pCurrArr[nElem].DecimalPlaces;
+    aCurrSymbol = pCurr->Symbol;
+    aCurrBankSymbol = pCurr->BankSymbol;
+    nCurrDigits = pCurr->DecimalPlaces;
 }
 
 void LocaleDataWrapper::scanCurrFormatImpl( const OUString& rCode,
@@ -999,9 +978,9 @@ void LocaleDataWrapper::getDateOrdersImpl()
     // find the edit (21), a default (medium preferred),
     // a medium (default preferred), and a long (default preferred)
     NumberFormatCode const * const pFormatArr = aFormatSeq.getArray();
-    sal_Int32 nElem, nEdit, nDef, nMedium, nLong;
+    sal_Int32 nEdit, nDef, nMedium, nLong;
     nEdit = nDef = nMedium = nLong = -1;
-    for ( nElem = 0; nElem < nCnt; nElem++ )
+    for ( sal_Int32 nElem = 0; nElem < nCnt; nElem++ )
     {
         if ( nEdit == -1 && pFormatArr[nElem].Index == NumberFormatIndex::DATE_SYS_DDMMYYYY )
             nEdit = nElem;
@@ -1838,11 +1817,8 @@ void LocaleDataWrapper::setDateAcceptancePatterns(
         // Copy existing full date pattern and append the sequence passed.
         /* TODO: could check for duplicates and shrink target sequence */
         Sequence< OUString > aTmp( rPatterns.getLength() + 1 );
-        OUString* pArray1 = aTmp.getArray();
-        const OUString* pArray2 = rPatterns.getConstArray();
-        pArray1[0] = aDateAcceptancePatterns[0];
-        for (sal_Int32 i=0; i < rPatterns.getLength(); ++i)
-            pArray1[i+1] = pArray2[i];
+        aTmp[0] = aDateAcceptancePatterns[0];
+        std::copy(rPatterns.begin(), rPatterns.end(), std::next(aTmp.begin()));
         aDateAcceptancePatterns = aTmp;
     }
 }
diff --git a/unotools/source/ucbhelper/progresshandlerwrap.cxx b/unotools/source/ucbhelper/progresshandlerwrap.cxx
index 9c50cf834ffc..2d085970bd53 100644
--- a/unotools/source/ucbhelper/progresshandlerwrap.cxx
+++ b/unotools/source/ucbhelper/progresshandlerwrap.cxx
@@ -37,13 +37,13 @@ static bool getStatusFromAny_Impl( const Any& aAny, OUString& aText, sal_Int32&
     bool bNumIsSet = false;
 
     Sequence< Any > aSetList;
-    if( ( aAny >>= aSetList ) && aSetList.hasElements() )
-        for( int ind = 0; ind < aSetList.getLength(); ind++ )
+    if( aAny >>= aSetList )
+        for( const auto& rSet : aSetList )
         {
-            if( !bNumIsSet && ( aSetList[ind] >>= nNum ) )
+            if( !bNumIsSet && ( rSet >>= nNum ) )
                 bNumIsSet = true;
             else
-                aText.isEmpty() && ( aSetList[ind] >>= aText );
+                aText.isEmpty() && ( rSet >>= aText );
         }
 
     return bNumIsSet;
diff --git a/unotools/source/ucbhelper/ucbhelper.cxx b/unotools/source/ucbhelper/ucbhelper.cxx
index ca7708b1c863..c2b25cd4f594 100644
--- a/unotools/source/ucbhelper/ucbhelper.cxx
+++ b/unotools/source/ucbhelper/ucbhelper.cxx
@@ -241,21 +241,21 @@ bool utl::UCBContentHelper::MakeFolder(
     try {
         css::uno::Sequence<css::ucb::ContentInfo> info(
             parent.queryCreatableContentsInfo());
-        for (sal_Int32 i = 0; i < info.getLength(); ++i) {
+        for (const auto& rInfo : info) {
             // Simply look for the first KIND_FOLDER:
-            if ((info[i].Attributes
+            if ((rInfo.Attributes
                  & css::ucb::ContentInfoAttribute::KIND_FOLDER)
                 != 0)
             {
                 // Make sure the only required bootstrap property is "Title":
-                if ( info[i].Properties.getLength() != 1 || info[i].Properties[0].Name != "Title" )
+                if ( rInfo.Properties.getLength() != 1 || rInfo.Properties[0].Name != "Title" )
                 {
                     continue;
                 }
                 css::uno::Sequence<OUString> keys { "Title" };
                 css::uno::Sequence<css::uno::Any> values(1);
                 values[0] <<= title;
-                if (parent.insertNewContent(info[i].Type, keys, values, result))
+                if (parent.insertNewContent(rInfo.Type, keys, values, result))
                 {
                     return true;
                 }
diff --git a/unotools/source/ucbhelper/ucblockbytes.cxx b/unotools/source/ucbhelper/ucblockbytes.cxx
index bff6ad67a390..a1e96fb3a338 100644
--- a/unotools/source/ucbhelper/ucblockbytes.cxx
+++ b/unotools/source/ucbhelper/ucblockbytes.cxx
@@ -161,10 +161,9 @@ public:
 
 void SAL_CALL UcbPropertiesChangeListener_Impl::propertiesChange ( const Sequence<PropertyChangeEvent> &rEvent)
 {
-    sal_Int32 i, n = rEvent.getLength();
-    for (i = 0; i < n; i++)
+    for (const auto& rPropChangeEvent : rEvent)
     {
-        if (rEvent[i].PropertyName == "DocumentHeader")
+        if (rPropChangeEvent.PropertyName == "DocumentHeader")
         {
             m_xLockBytes->SetStreamValid_Impl();
         }
@@ -508,8 +507,8 @@ void Moderator::handle( const Reference<XInteractionRequest >& Request )
         if(aReplyType == EXIT) {
             Sequence<Reference<XInteractionContinuation> > aSeq(
                 Request->getContinuations());
-            for(sal_Int32 i = 0; i < aSeq.getLength(); ++i) {
-                Reference<XInteractionAbort> aRef(aSeq[i],UNO_QUERY);
+            for(const auto& rContinuation : aSeq) {
+                Reference<XInteractionAbort> aRef(rContinuation,UNO_QUERY);
                 if(aRef.is()) {
                     aRef->select();
                 }


More information about the Libreoffice-commits mailing list