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

Arkadiy Illarionov (via logerrit) logerrit at kemper.freedesktop.org
Sun Jun 30 10:41:32 UTC 2019


 ucb/source/cacher/dynamicresultsetwrapper.cxx    |    6 
 ucb/source/core/FileAccess.cxx                   |   12 -
 ucb/source/core/ucb.cxx                          |   17 -
 ucb/source/core/ucbcmds.cxx                      |  198 +++++++++--------------
 ucb/source/core/ucbprops.cxx                     |   14 -
 ucb/source/core/ucbstore.cxx                     |   15 -
 ucb/source/sorter/sortdynres.cxx                 |    3 
 ucb/source/ucp/cmis/cmis_content.cxx             |   75 +++-----
 ucb/source/ucp/cmis/cmis_repo_content.cxx        |   10 -
 ucb/source/ucp/ext/ucpext_content.cxx            |   15 -
 ucb/source/ucp/file/bc.cxx                       |   26 +--
 ucb/source/ucp/file/filcmd.cxx                   |   28 +--
 ucb/source/ucp/file/filnot.cxx                   |   23 +-
 ucb/source/ucp/file/filprp.cxx                   |   13 -
 ucb/source/ucp/file/filrset.cxx                  |   30 +--
 ucb/source/ucp/file/filtask.cxx                  |   78 ++++-----
 ucb/source/ucp/file/prov.cxx                     |   13 -
 ucb/source/ucp/ftp/ftpcontent.cxx                |   45 ++---
 ucb/source/ucp/ftp/ftpresultsetI.cxx             |   22 +-
 ucb/source/ucp/ftp/ftpresultsetbase.cxx          |   13 -
 ucb/source/ucp/gio/gio_content.cxx               |   10 -
 ucb/source/ucp/hierarchy/hierarchycontent.cxx    |   19 --
 ucb/source/ucp/package/pkgcontent.cxx            |   17 -
 ucb/source/ucp/tdoc/tdoc_content.cxx             |   17 -
 ucb/source/ucp/webdav-neon/ContentProperties.cxx |   15 -
 ucb/source/ucp/webdav-neon/DAVResourceAccess.cxx |    6 
 ucb/source/ucp/webdav-neon/LinkSequence.cxx      |   19 --
 ucb/source/ucp/webdav-neon/NeonSession.cxx       |   22 --
 ucb/source/ucp/webdav-neon/webdavcontent.cxx     |   53 ++----
 29 files changed, 326 insertions(+), 508 deletions(-)

New commits:
commit 02872ceafb8adca47cce856d0e44107494ba2e21
Author:     Arkadiy Illarionov <qarkai at gmail.com>
AuthorDate: Sat Jun 29 22:24:22 2019 +0300
Commit:     Arkadiy Illarionov <qarkai at gmail.com>
CommitDate: Sun Jun 30 12:40:20 2019 +0200

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

diff --git a/ucb/source/cacher/dynamicresultsetwrapper.cxx b/ucb/source/cacher/dynamicresultsetwrapper.cxx
index fc6d0dbf90de..042a63c57c55 100644
--- a/ucb/source/cacher/dynamicresultsetwrapper.cxx
+++ b/ucb/source/cacher/dynamicresultsetwrapper.cxx
@@ -223,9 +223,11 @@ void DynamicResultSetWrapper::impl_notify( const ListEvent& Changes )
 
     {
         osl::Guard< osl::Mutex > aGuard( m_aMutex );
-        for( long i=0; !m_bGotWelcome && i<Changes.Changes.getLength(); i++ )
+        for( ListAction& rAction : aNewEvent.Changes )
         {
-            ListAction& rAction = aNewEvent.Changes[i];
+            if (m_bGotWelcome)
+                break;
+
             switch( rAction.ListActionType )
             {
                 case ListActionType::WELCOME:
diff --git a/ucb/source/core/FileAccess.cxx b/ucb/source/core/FileAccess.cxx
index dcb37a713b68..34da0292938a 100644
--- a/ucb/source/core/FileAccess.cxx
+++ b/ucb/source/core/FileAccess.cxx
@@ -355,14 +355,10 @@ void OFileAccess::createFolder( const OUString& NewFolderURL )
     ucbhelper::Content aCnt( aURL.GetMainURL( INetURLObject::DecodeMechanism::NONE ), mxEnvironment.get(), comphelper::getProcessComponentContext() );
 
     Sequence< ContentInfo > aInfo = aCnt.queryCreatableContentsInfo();
-    sal_Int32 nCount = aInfo.getLength();
-    if ( nCount == 0 )
-        return;
 
-    for ( sal_Int32 i = 0; i < nCount; ++i )
+    for ( const ContentInfo & rCurr : aInfo )
     {
         // Simply look for the first KIND_FOLDER...
-        const ContentInfo & rCurr = aInfo[i];
         if ( rCurr.Attributes & ContentInfoAttribute::KIND_FOLDER )
         {
             // Make sure the only required bootstrap property is "Title",
@@ -591,13 +587,9 @@ bool OFileAccess::createNewFile( const OUString & rParentURL,
     ucbhelper::Content aParentCnt( rParentURL, mxEnvironment.get(), comphelper::getProcessComponentContext() );
 
     Sequence< ContentInfo > aInfo = aParentCnt.queryCreatableContentsInfo();
-    sal_Int32 nCount = aInfo.getLength();
-    if ( nCount == 0 )
-        return false;
 
-    for ( sal_Int32 i = 0; i < nCount; ++i )
+    for ( const ContentInfo & rCurr : aInfo )
     {
-        const ContentInfo & rCurr = aInfo[i];
         if ( ( rCurr.Attributes
                & ContentInfoAttribute::KIND_DOCUMENT ) &&
              ( rCurr.Attributes
diff --git a/ucb/source/core/ucb.cxx b/ucb/source/core/ucb.cxx
index 907cef806449..1246d6483051 100644
--- a/ucb/source/core/ucb.cxx
+++ b/ucb/source/core/ucb.cxx
@@ -710,21 +710,16 @@ void SAL_CALL UniversalContentBroker::abort( sal_Int32 )
 // virtual
 void SAL_CALL UniversalContentBroker::changesOccurred( const util::ChangesEvent& Event )
 {
-    sal_Int32 nCount = Event.Changes.getLength();
-    if ( nCount )
+    if ( Event.Changes.hasElements() )
     {
         uno::Reference< container::XHierarchicalNameAccess > xHierNameAccess;
         Event.Base >>= xHierNameAccess;
 
         OSL_ASSERT( xHierNameAccess.is() );
 
-        const util::ElementChange* pElementChanges
-            = Event.Changes.getConstArray();
-
         ContentProviderDataList aData;
-        for ( sal_Int32 n = 0; n < nCount; ++n )
+        for ( const util::ElementChange& rElem : Event.Changes )
         {
-            const util::ElementChange& rElem = pElementChanges[ n ];
             OUString aKey;
             rElem.Accessor >>= aKey;
 
@@ -870,16 +865,14 @@ bool UniversalContentBroker::getContentProviderData(
                                             xInterface, uno::UNO_QUERY_THROW );
 
         uno::Sequence< OUString > aElems = xNameAccess->getElementNames();
-        const OUString* pElems = aElems.getConstArray();
-        sal_Int32 nCount = aElems.getLength();
 
-        if ( nCount > 0 )
+        if ( aElems.hasElements() )
         {
             uno::Reference< container::XHierarchicalNameAccess >
                                 xHierNameAccess( xInterface, uno::UNO_QUERY_THROW );
 
             // Iterate over children.
-            for ( sal_Int32 n = 0; n < nCount; ++n )
+            for ( const auto& rElem : aElems )
             {
 
                 try
@@ -889,7 +882,7 @@ bool UniversalContentBroker::getContentProviderData(
 
                     OUStringBuffer aElemBuffer;
                     aElemBuffer.append( "['" );
-                    makeAndAppendXMLName( aElemBuffer, pElems[ n ] );
+                    makeAndAppendXMLName( aElemBuffer, rElem );
                     aElemBuffer.append( "']" );
 
                     OSL_VERIFY(
diff --git a/ucb/source/core/ucbcmds.cxx b/ucb/source/core/ucbcmds.cxx
index c7c62dfc374c..ebef83f92ae7 100644
--- a/ucb/source/core/ucbcmds.cxx
+++ b/ucb/source/core/ucbcmds.cxx
@@ -247,11 +247,10 @@ CommandProcessorInfo::getCommands()
 ucb::CommandInfo SAL_CALL
 CommandProcessorInfo::getCommandInfoByName( const OUString& Name )
 {
-    for ( sal_Int32 n = 0; n < m_pInfo->getLength(); ++n )
-    {
-        if ( (*m_pInfo)[ n ].Name == Name )
-            return (*m_pInfo)[ n ];
-    }
+    auto pInfo = std::find_if(m_pInfo->begin(), m_pInfo->end(),
+        [&Name](const ucb::CommandInfo& rInfo) { return rInfo.Name == Name; });
+    if (pInfo != m_pInfo->end())
+        return *pInfo;
 
     throw ucb::UnsupportedCommandException();
 }
@@ -261,11 +260,10 @@ CommandProcessorInfo::getCommandInfoByName( const OUString& Name )
 ucb::CommandInfo SAL_CALL
 CommandProcessorInfo::getCommandInfoByHandle( sal_Int32 Handle )
 {
-    for ( sal_Int32 n = 0; n < m_pInfo->getLength(); ++n )
-    {
-        if ( (*m_pInfo)[ n ].Handle == Handle )
-            return (*m_pInfo)[ n ];
-    }
+    auto pInfo = std::find_if(m_pInfo->begin(), m_pInfo->end(),
+        [&Handle](const ucb::CommandInfo& rInfo) { return rInfo.Handle == Handle; });
+    if (pInfo != m_pInfo->end())
+        return *pInfo;
 
     throw ucb::UnsupportedCommandException();
 }
@@ -275,26 +273,16 @@ CommandProcessorInfo::getCommandInfoByHandle( sal_Int32 Handle )
 sal_Bool SAL_CALL CommandProcessorInfo::hasCommandByName(
                                                 const OUString& Name )
 {
-    for ( sal_Int32 n = 0; n < m_pInfo->getLength(); ++n )
-    {
-        if ( (*m_pInfo)[ n ].Name == Name )
-            return true;
-    }
-
-    return false;
+    return std::any_of(m_pInfo->begin(), m_pInfo->end(),
+        [&Name](const ucb::CommandInfo& rInfo) { return rInfo.Name == Name; });
 }
 
 
 // virtual
 sal_Bool SAL_CALL CommandProcessorInfo::hasCommandByHandle( sal_Int32 Handle )
 {
-    for ( sal_Int32 n = 0; n < m_pInfo->getLength(); ++n )
-    {
-        if ( (*m_pInfo)[ n ].Handle == Handle )
-            return true;
-    }
-
-    return false;
+    return std::any_of(m_pInfo->begin(), m_pInfo->end(),
+        [&Handle](const ucb::CommandInfo& rInfo) { return rInfo.Handle == Handle; });
 }
 
 
@@ -565,8 +553,7 @@ uno::Reference< ucb::XContent > createNew(
         aTypesInfo  = xCreator->queryCreatableContentsInfo();
     }
 
-    sal_Int32 nCount = aTypesInfo.getLength();
-    if ( !nCount )
+    if ( !aTypesInfo.hasElements() )
     {
         uno::Sequence<uno::Any> aArgs(comphelper::InitAnyPropertySequence(
         {
@@ -581,116 +568,87 @@ uno::Reference< ucb::XContent > createNew(
         // Unreachable
     }
 
-
     // (2) Try to find a matching target type for the source object.
 
+    std::function<bool(const sal_Int32)> lCompare;
 
-    uno::Reference< ucb::XContent > xNew;
-    for ( sal_Int32 n = 0; n < nCount; ++n )
+    if ( rContext.aArg.Operation == ucb::TransferCommandOperation_LINK )
     {
-        sal_Int32 nAttribs = aTypesInfo[ n ].Attributes;
-        bool  bMatch   = false;
-
-        if ( rContext.aArg.Operation == ucb::TransferCommandOperation_LINK )
+        // Create link
+        lCompare = [](const sal_Int32 nAttribs) { return !!( nAttribs & ucb::ContentInfoAttribute::KIND_LINK ); };
+    }
+    else if ( ( rContext.aArg.Operation == ucb::TransferCommandOperation_COPY ) ||
+              ( rContext.aArg.Operation == ucb::TransferCommandOperation_MOVE ) )
+    {
+        // Copy / Move
+        // Is source a link? Create link in target folder then.
+        if ( bSourceIsLink )
         {
-            // Create link
-
-            if ( nAttribs & ucb::ContentInfoAttribute::KIND_LINK )
-            {
-                // Match!
-                bMatch = true;
-            }
+            lCompare = [](const sal_Int32 nAttribs) { return !!( nAttribs & ucb::ContentInfoAttribute::KIND_LINK ); };
         }
-        else if ( ( rContext.aArg.Operation
-                        == ucb::TransferCommandOperation_COPY ) ||
-                  ( rContext.aArg.Operation
-                        == ucb::TransferCommandOperation_MOVE ) )
+        else
         {
-            // Copy / Move
+            // (not a and not b) or (a and b)
+            // not( a or b) or (a and b)
+            lCompare = [bSourceIsFolder, bSourceIsDocument](const sal_Int32 nAttribs) {
+                return ( bSourceIsFolder == !!( nAttribs & ucb::ContentInfoAttribute::KIND_FOLDER ) )
+                    && ( bSourceIsDocument == !!( nAttribs & ucb::ContentInfoAttribute::KIND_DOCUMENT ) ) ;
+            };
+        }
+    }
+    else
+    {
+        ucbhelper::cancelCommandExecution(
+            uno::makeAny( lang::IllegalArgumentException(
+                                    "Unknown transfer operation!",
+                                    rContext.xProcessor,
+                                    -1 ) ),
+                          rContext.xOrigEnv );
+        // Unreachable
+    }
 
-            // Is source a link? Create link in target folder then.
-            if ( bSourceIsLink )
-            {
-                if ( nAttribs & ucb::ContentInfoAttribute::KIND_LINK )
-                {
-                    // Match!
-                    bMatch = true;
-                }
-            }
-            else
-            {
-                // (not a and not b) or (a and b)
-                // not( a or b) or (a and b)
-
-                if ( ( bSourceIsFolder ==
-                        !!( nAttribs
-                            & ucb::ContentInfoAttribute::KIND_FOLDER ) )
-                     &&
-                     ( bSourceIsDocument ==
-                        !!( nAttribs
-                            & ucb::ContentInfoAttribute::KIND_DOCUMENT ) )
-                   )
-                {
-                    // Match!
-                    bMatch = true;
-                }
-            }
+    uno::Reference< ucb::XContent > xNew;
+    auto pTypeInfo = std::find_if(aTypesInfo.begin(), aTypesInfo.end(),
+        [&lCompare](const ucb::ContentInfo& rTypeInfo) { return lCompare(rTypeInfo.Attributes); });
+    if (pTypeInfo != aTypesInfo.end())
+    {
+        // (3) Create a new, empty object of matched type.
+
+        if ( !xCreator.is() )
+        {
+            // First, try it using "CreatabeleContentsInfo" property and
+            // "createNewContent" command -> the "new" way.
+            ucb::Command aCreateNewCommand(
+               "createNewContent",
+               -1,
+               uno::makeAny( *pTypeInfo ) );
+
+            xCommandProcessorT->execute( aCreateNewCommand, 0, rContext.xEnv )
+                >>= xNew;
         }
         else
         {
-            ucbhelper::cancelCommandExecution(
-                uno::makeAny( lang::IllegalArgumentException(
-                                        "Unknown transfer operation!",
-                                        rContext.xProcessor,
-                                        -1 ) ),
-                              rContext.xOrigEnv );
-            // Unreachable
+            // Second, try it using XContentCreator interface -> the "old"
+            // way (not providing the chance to supply an XCommandEnvironment.
+
+            xNew = xCreator->createNewContent( *pTypeInfo );
         }
 
-        if ( bMatch )
+        if ( !xNew.is() )
         {
-
-
-            // (3) Create a new, empty object of matched type.
-
-
-            if ( !xCreator.is() )
-            {
-                // First, try it using "CreatabeleContentsInfo" property and
-                // "createNewContent" command -> the "new" way.
-                ucb::Command aCreateNewCommand(
-                   "createNewContent",
-                   -1,
-                   uno::makeAny( aTypesInfo[ n ] ) );
-
-                xCommandProcessorT->execute( aCreateNewCommand, 0, rContext.xEnv )
-                    >>= xNew;
-            }
-            else
-            {
-                // Second, try it using XContentCreator interface -> the "old"
-                // way (not providing the chance to supply an XCommandEnvironment.
-
-                xNew = xCreator->createNewContent( aTypesInfo[ n ] );
-            }
-
-            if ( !xNew.is() )
+            uno::Sequence<uno::Any> aArgs(comphelper::InitAnyPropertySequence(
             {
-                uno::Sequence<uno::Any> aArgs(comphelper::InitAnyPropertySequence(
-                {
-                    {"Folder", uno::Any(rContext.aArg.TargetURL)}
-                }));
-                ucbhelper::cancelCommandExecution(
-                    ucb::IOErrorCode_CANT_CREATE,
-                    aArgs,
-                    rContext.xOrigEnv,
-                    "createNewContent failed!",
-                    rContext.xProcessor );
-                // Unreachable
-            }
-            break; // escape from 'for' loop
+                {"Folder", uno::Any(rContext.aArg.TargetURL)}
+            }));
+            ucbhelper::cancelCommandExecution(
+                ucb::IOErrorCode_CANT_CREATE,
+                aArgs,
+                rContext.xOrigEnv,
+                "createNewContent failed!",
+                rContext.xProcessor );
+            // Unreachable
         }
-    } // for
+    }
 
     return xNew;
 }
diff --git a/ucb/source/core/ucbprops.cxx b/ucb/source/core/ucbprops.cxx
index 98f917621ed6..c5a4fb6113f0 100644
--- a/ucb/source/core/ucbprops.cxx
+++ b/ucb/source/core/ucbprops.cxx
@@ -249,16 +249,12 @@ sal_Bool SAL_CALL UcbPropertiesManager::hasPropertyByName( const OUString& Name
 bool UcbPropertiesManager::queryProperty(
                                 const OUString& rName, Property& rProp )
 {
-    const Property* pProps = m_pProps.getConstArray();
-    sal_Int32 nCount = m_pProps.getLength();
-    for ( sal_Int32 n = 0; n < nCount; ++n )
+    auto pProp = std::find_if(m_pProps.begin(), m_pProps.end(),
+        [&rName](const Property& rCurrProp) { return rCurrProp.Name == rName; });
+    if (pProp != m_pProps.end())
     {
-        const Property& rCurrProp = pProps[ n ];
-        if ( rCurrProp.Name == rName )
-        {
-            rProp = rCurrProp;
-            return true;
-        }
+        rProp = *pProp;
+        return true;
     }
 
     return false;
diff --git a/ucb/source/core/ucbstore.cxx b/ucb/source/core/ucbstore.cxx
index b746167807a4..13118c33c6ce 100644
--- a/ucb/source/core/ucbstore.cxx
+++ b/ucb/source/core/ucbstore.cxx
@@ -703,8 +703,7 @@ void PropertySetRegistry::renamePropertySet( const OUString& rOldKey,
                     // Obtain property names.
                     Sequence< OUString > aElems
                                     = xOldNameAccess->getElementNames();
-                    sal_Int32 nCount = aElems.getLength();
-                    if ( nCount )
+                    if ( aElems.hasElements() )
                     {
                         OUString aNewValuesKey
                             = makeHierarchalNameSegment( rNewKey );
@@ -737,10 +736,8 @@ void PropertySetRegistry::renamePropertySet( const OUString& rOldKey,
                         OUString const aStateKey("/State");
                         OUString const aAttrKey("/Attributes");
 
-                        for ( sal_Int32 n = 0; n < nCount; ++n )
+                        for ( const OUString& rPropName : aElems )
                         {
-                            const OUString& rPropName = aElems[ n ];
-
                             // Create new item.
                             Reference< XNameReplace > xNewPropNameReplace(
                                 xNewFac->createInstance(), UNO_QUERY );
@@ -1873,8 +1870,7 @@ Sequence< PropertyValue > SAL_CALL PersistentPropertySet::getPropertyValues()
 void SAL_CALL PersistentPropertySet::setPropertyValues(
                                  const Sequence< PropertyValue >& aProps )
 {
-    sal_Int32 nCount = aProps.getLength();
-    if ( !nCount )
+    if ( !aProps.hasElements() )
         return;
 
     osl::ClearableGuard< osl::Mutex > aCGuard( m_pImpl->m_aMutex );
@@ -1883,17 +1879,14 @@ void SAL_CALL PersistentPropertySet::setPropertyValues(
                 m_pImpl->m_pCreator->getRootConfigReadAccess(), UNO_QUERY );
     if ( xRootHierNameAccess.is() )
     {
-        const PropertyValue* pNewValues = aProps.getConstArray();
-
         std::vector< PropertyChangeEvent > aEvents;
 
         OUString aFullPropNamePrefix( getFullKey() );
         aFullPropNamePrefix += "/";
 
         // Iterate over given property value sequence.
-        for ( sal_Int32 n = 0; n < nCount; ++n )
+        for ( const PropertyValue& rNewValue : aProps )
         {
-            const PropertyValue& rNewValue = pNewValues[ n ];
             const OUString& rName = rNewValue.Name;
 
             OUString aFullPropName = aFullPropNamePrefix;
diff --git a/ucb/source/sorter/sortdynres.cxx b/ucb/source/sorter/sortdynres.cxx
index 06cd751eaf24..26e4e761e61f 100644
--- a/ucb/source/sorter/sortdynres.cxx
+++ b/ucb/source/sorter/sortdynres.cxx
@@ -287,9 +287,8 @@ void SortedDynamicResultSet::impl_notify( const ListEvent& Changes )
     aRet >>= bWasFinal;
 
     // handle the actions in the list
-    for ( long i=0; i<Changes.Changes.getLength(); i++ )
+    for ( const ListAction& aAction : Changes.Changes )
     {
-        const ListAction aAction = Changes.Changes[i];
         switch ( aAction.ListActionType )
         {
             case ListActionType::WELCOME:
diff --git a/ucb/source/ucp/cmis/cmis_content.cxx b/ucb/source/ucp/cmis/cmis_content.cxx
index 2f5dd71fc857..cf8cdacf05c2 100644
--- a/ucb/source/ucp/cmis/cmis_content.cxx
+++ b/ucb/source/ucp/cmis/cmis_content.cxx
@@ -182,57 +182,44 @@ namespace
         {
             uno::Sequence< OUString > seqValue;
             value >>= seqValue;
-            sal_Int32 nNumValue = seqValue.getLength( );
-            for ( sal_Int32 i = 0; i < nNumValue; ++i )
-            {
-                values.push_back( OUSTR_TO_STDSTR( seqValue[i] ) );
-            }
+            std::transform(seqValue.begin(), seqValue.end(), std::back_inserter(values),
+                [](const OUString& rValue) -> std::string { return OUSTR_TO_STDSTR( rValue ); });
             type = libcmis::PropertyType::String;
         }
         else if ( prop.Type == CMIS_TYPE_BOOL )
         {
             uno::Sequence< sal_Bool > seqValue;
             value >>= seqValue;
-            sal_Int32 nNumValue = seqValue.getLength( );
-            for ( sal_Int32 i = 0; i < nNumValue; ++i )
-            {
-                values.push_back( OUSTR_TO_STDSTR( OUString::boolean( seqValue[i] ) ) );
-            }
+            std::transform(seqValue.begin(), seqValue.end(), std::back_inserter(values),
+                [](const bool nValue) -> std::string { return OUSTR_TO_STDSTR( OUString::boolean( nValue ) ); });
             type = libcmis::PropertyType::Bool;
         }
         else if ( prop.Type == CMIS_TYPE_INTEGER )
         {
             uno::Sequence< sal_Int64 > seqValue;
             value >>= seqValue;
-            sal_Int32 nNumValue = seqValue.getLength( );
-            for ( sal_Int32 i = 0; i < nNumValue; ++i )
-            {
-                values.push_back( OUSTR_TO_STDSTR( OUString::number( seqValue[i] ) ) );
-            }
+            std::transform(seqValue.begin(), seqValue.end(), std::back_inserter(values),
+                [](const sal_Int64 nValue) -> std::string { return OUSTR_TO_STDSTR( OUString::number( nValue ) ); });
             type = libcmis::PropertyType::Integer;
         }
         else if ( prop.Type == CMIS_TYPE_DECIMAL )
         {
             uno::Sequence< double > seqValue;
             value >>= seqValue;
-            sal_Int32 nNumValue = seqValue.getLength( );
-            for ( sal_Int32 i = 0; i < nNumValue; ++i )
-            {
-                values.push_back( OUSTR_TO_STDSTR( OUString::number( seqValue[i] ) ) );
-            }
+            std::transform(seqValue.begin(), seqValue.end(), std::back_inserter(values),
+                [](const double fValue) -> std::string { return OUSTR_TO_STDSTR( OUString::number( fValue ) ); });
             type = libcmis::PropertyType::Decimal;
         }
         else if ( prop.Type == CMIS_TYPE_DATETIME )
         {
             uno::Sequence< util::DateTime > seqValue;
             value >>= seqValue;
-            sal_Int32 nNumValue = seqValue.getLength( );
-            for ( sal_Int32 i = 0; i < nNumValue; ++i )
-            {
-                OUStringBuffer aBuffer;
-                ::sax::Converter::convertDateTime( aBuffer, seqValue[i], nullptr );
-                values.push_back( OUSTR_TO_STDSTR( aBuffer.makeStringAndClear( )  ) );
-            }
+            std::transform(seqValue.begin(), seqValue.end(), std::back_inserter(values),
+                [](const util::DateTime& rValue) -> std::string {
+                    OUStringBuffer aBuffer;
+                    ::sax::Converter::convertDateTime( aBuffer, rValue, nullptr );
+                    return OUSTR_TO_STDSTR( aBuffer.makeStringAndClear( ) );
+                });
             type = libcmis::PropertyType::DateTime;
         }
 
@@ -602,11 +589,10 @@ namespace cmis
         iCmisProps >>= aPropsSeq;
         map< string, libcmis::PropertyPtr > aProperties;
 
-        sal_Int32 propsLen = aPropsSeq.getLength( );
-        for ( sal_Int32 i = 0; i< propsLen; i++ )
+        for ( const auto& rProp : aPropsSeq )
         {
-            std::string id = OUSTR_TO_STDSTR( aPropsSeq[i].Id );
-            libcmis::PropertyPtr prop = lcl_unoToCmisProperty( aPropsSeq[i] );
+            std::string id = OUSTR_TO_STDSTR( rProp.Id );
+            libcmis::PropertyPtr prop = lcl_unoToCmisProperty( rProp );
             aProperties.insert( std::pair<string, libcmis::PropertyPtr>( id, prop ) );
         }
         libcmis::ObjectPtr updateObj;
@@ -628,16 +614,8 @@ namespace cmis
     {
         rtl::Reference< ::ucbhelper::PropertyValueSet > xRow = new ::ucbhelper::PropertyValueSet( m_xContext );
 
-        sal_Int32 nProps;
-        const beans::Property* pProps;
-
-        nProps = rProperties.getLength();
-        pProps = rProperties.getConstArray();
-
-        for( sal_Int32 n = 0; n < nProps; ++n )
+        for( const beans::Property& rProp : rProperties )
         {
-            const beans::Property& rProp = pProps[ n ];
-
             try
             {
                 if ( rProp.Name == "IsDocument" )
@@ -840,14 +818,13 @@ namespace cmis
                         uno::Sequence< document::CmisProperty > aCmisProperties( aProperties.size( ) );
                         document::CmisProperty* pCmisProps = aCmisProperties.getArray( );
                         sal_Int32 i = 0;
-                        for ( const auto& rProperty : aProperties )
+                        for ( const auto& [sId, rProperty] : aProperties )
                         {
-                            string sId = rProperty.first;
-                            string sDisplayName = rProperty.second->getPropertyType()->getDisplayName( );
-                            bool bUpdatable = rProperty.second->getPropertyType()->isUpdatable( );
-                            bool bRequired = rProperty.second->getPropertyType()->isRequired( );
-                            bool bMultiValued = rProperty.second->getPropertyType()->isMultiValued();
-                            bool bOpenChoice = rProperty.second->getPropertyType()->isOpenChoice();
+                            string sDisplayName = rProperty->getPropertyType()->getDisplayName( );
+                            bool bUpdatable = rProperty->getPropertyType()->isUpdatable( );
+                            bool bRequired = rProperty->getPropertyType()->isRequired( );
+                            bool bMultiValued = rProperty->getPropertyType()->isMultiValued();
+                            bool bOpenChoice = rProperty->getPropertyType()->isOpenChoice();
 
                             pCmisProps[i].Id = STD_TO_OUSTR( sId );
                             pCmisProps[i].Name = STD_TO_OUSTR( sDisplayName );
@@ -855,8 +832,8 @@ namespace cmis
                             pCmisProps[i].Required = bRequired;
                             pCmisProps[i].MultiValued = bMultiValued;
                             pCmisProps[i].OpenChoice = bOpenChoice;
-                            pCmisProps[i].Value = lcl_cmisPropertyToUno( rProperty.second );
-                            switch ( rProperty.second->getPropertyType( )->getType( ) )
+                            pCmisProps[i].Value = lcl_cmisPropertyToUno( rProperty );
+                            switch ( rProperty->getPropertyType( )->getType( ) )
                             {
                                 default:
                                 case libcmis::PropertyType::String:
diff --git a/ucb/source/ucp/cmis/cmis_repo_content.cxx b/ucb/source/ucp/cmis/cmis_repo_content.cxx
index 0e6174831e6f..744c6ba84270 100644
--- a/ucb/source/ucp/cmis/cmis_repo_content.cxx
+++ b/ucb/source/ucp/cmis/cmis_repo_content.cxx
@@ -83,16 +83,8 @@ namespace cmis
     {
         rtl::Reference< ::ucbhelper::PropertyValueSet > xRow = new ::ucbhelper::PropertyValueSet( m_xContext );
 
-        sal_Int32 nProps;
-        const beans::Property* pProps;
-
-        nProps = rProperties.getLength();
-        pProps = rProperties.getConstArray();
-
-        for( sal_Int32 n = 0; n < nProps; ++n )
+        for( const beans::Property& rProp : rProperties )
         {
-            const beans::Property& rProp = pProps[ n ];
-
             try
             {
                 if ( rProp.Name == "IsDocument" )
diff --git a/ucb/source/ucp/ext/ucpext_content.cxx b/ucb/source/ucp/ext/ucpext_content.cxx
index f55c3418cc48..efb67d4fdfe2 100644
--- a/ucb/source/ucp/ext/ucpext_content.cxx
+++ b/ucb/source/ucp/ext/ucpext_content.cxx
@@ -381,14 +381,10 @@ namespace ucb { namespace ucp { namespace ext
         // note: empty sequence means "get values of all supported properties".
         ::rtl::Reference< ::ucbhelper::PropertyValueSet > xRow = new ::ucbhelper::PropertyValueSet( rxContext );
 
-        const sal_Int32 nCount = i_rProperties.getLength();
-        if ( nCount )
+        if ( i_rProperties.hasElements() )
         {
-            const Property* pProps = i_rProperties.getConstArray();
-            for ( sal_Int32 n = 0; n < nCount; ++n )
+            for ( const Property& rProp : i_rProperties )
             {
-                const Property& rProp = pProps[ n ];
-
                 // Process Core properties.
                 if ( rProp.Name == "ContentType" )
                 {
@@ -513,13 +509,10 @@ namespace ucb { namespace ucp { namespace ext
         aEvent.Further        = false;
         aEvent.PropertyHandle = -1;
 
-        const PropertyValue* pValues = i_rValues.getConstArray();
-        const sal_Int32 nCount = i_rValues.getLength();
-
-        for ( sal_Int32 n = 0; n < nCount; ++n, ++pValues )
+        for ( auto& rRet : aRet )
         {
             // all our properties are read-only ...
-            aRet[ n ] <<= IllegalAccessException("property is read-only.", *this );
+            rRet <<= IllegalAccessException("property is read-only.", *this );
         }
 
         return aRet;
diff --git a/ucb/source/ucp/file/bc.cxx b/ucb/source/ucp/file/bc.cxx
index 2e5538286f00..12ff24619303 100644
--- a/ucb/source/ucp/file/bc.cxx
+++ b/ucb/source/ucp/file/bc.cxx
@@ -404,9 +404,9 @@ BaseContent::addPropertiesChangeListener(
     else
     {
         Reference< beans::XPropertySetInfo > xProp = m_pMyShell->info_p( m_aUncPath );
-        for( sal_Int32 i = 0; i < PropertyNames.getLength(); ++i )
-            if( xProp->hasPropertyByName( PropertyNames[i] ) )
-                m_pPropertyListener->addInterface( PropertyNames[i],Listener );
+        for( const auto& rName : PropertyNames )
+            if( xProp->hasPropertyByName( rName ) )
+                m_pPropertyListener->addInterface( rName,Listener );
     }
 }
 
@@ -423,8 +423,8 @@ BaseContent::removePropertiesChangeListener( const Sequence< OUString >& Propert
     if( ! m_pPropertyListener )
         return;
 
-    for( sal_Int32 i = 0; i < PropertyNames.getLength(); ++i )
-        m_pPropertyListener->removeInterface( PropertyNames[i],Listener );
+    for( const auto& rName : PropertyNames )
+        m_pPropertyListener->removeInterface( rName,Listener );
 
     m_pPropertyListener->removeInterface( OUString(), Listener );
 }
@@ -762,12 +762,12 @@ BaseContent::setPropertyValues(
     // Special handling for files which have to be inserted
     if( m_nState & JustInserted )
     {
-        for( sal_Int32 i = 0; i < Values.getLength(); ++i )
+        for( const auto& rValue : Values )
         {
-            if( Values[i].Name == Title )
+            if( rValue.Name == Title )
             {
                 OUString NewTitle;
-                if( Values[i].Value >>= NewTitle )
+                if( rValue.Value >>= NewTitle )
                 {
                     if ( m_nState & NameForInsertionSet )
                     {
@@ -1247,17 +1247,15 @@ BaseContent::cPCL()
 
     std::unique_ptr<PropertyChangeNotifier> p;
 
-    sal_Int32 length = seqNames.getLength();
-
-    if( length )
+    if( seqNames.hasElements() )
     {
         std::unique_ptr<ListenerMap> listener(new ListenerMap);
-        for( sal_Int32 i = 0; i < length; ++i )
+        for( const auto& rName : seqNames )
         {
-            cppu::OInterfaceContainerHelper* pContainer = m_pPropertyListener->getContainer(seqNames[i]);
+            cppu::OInterfaceContainerHelper* pContainer = m_pPropertyListener->getContainer(rName);
             if (!pContainer)
                 continue;
-            (*listener)[seqNames[i]] = pContainer->getElements();
+            (*listener)[rName] = pContainer->getElements();
         }
 
         p.reset( new PropertyChangeNotifier( this, std::move(listener) ) );
diff --git a/ucb/source/ucp/file/filcmd.cxx b/ucb/source/ucp/file/filcmd.cxx
index 5ab934799df7..c046051bcecd 100644
--- a/ucb/source/ucp/file/filcmd.cxx
+++ b/ucb/source/ucp/file/filcmd.cxx
@@ -83,9 +83,10 @@ CommandInfo SAL_CALL
 XCommandInfo_impl::getCommandInfoByName(
     const OUString& aName )
 {
-    for( sal_Int32 i = 0; i < m_pMyShell->m_sCommandInfo.getLength(); i++ )
-        if( m_pMyShell->m_sCommandInfo[i].Name == aName )
-            return m_pMyShell->m_sCommandInfo[i];
+    auto pCommand = std::find_if(m_pMyShell->m_sCommandInfo.begin(), m_pMyShell->m_sCommandInfo.end(),
+            [&aName](const CommandInfo& rCommand) { return rCommand.Name == aName; });
+    if (pCommand != m_pMyShell->m_sCommandInfo.end())
+        return *pCommand;
 
     throw UnsupportedCommandException( THROW_WHERE );
 }
@@ -95,9 +96,10 @@ CommandInfo SAL_CALL
 XCommandInfo_impl::getCommandInfoByHandle(
     sal_Int32 Handle )
 {
-    for( sal_Int32 i = 0; i < m_pMyShell->m_sCommandInfo.getLength(); ++i )
-        if( m_pMyShell->m_sCommandInfo[i].Handle == Handle )
-            return m_pMyShell->m_sCommandInfo[i];
+    auto pCommand = std::find_if(m_pMyShell->m_sCommandInfo.begin(), m_pMyShell->m_sCommandInfo.end(),
+            [&Handle](const CommandInfo& rCommand) { return rCommand.Handle == Handle; });
+    if (pCommand != m_pMyShell->m_sCommandInfo.end())
+        return *pCommand;
 
     throw UnsupportedCommandException( THROW_WHERE );
 }
@@ -107,11 +109,8 @@ sal_Bool SAL_CALL
 XCommandInfo_impl::hasCommandByName(
     const OUString& aName )
 {
-    for( sal_Int32 i = 0; i < m_pMyShell->m_sCommandInfo.getLength(); ++i )
-        if( m_pMyShell->m_sCommandInfo[i].Name == aName )
-            return true;
-
-    return false;
+    return std::any_of(m_pMyShell->m_sCommandInfo.begin(), m_pMyShell->m_sCommandInfo.end(),
+        [&aName](const CommandInfo& rCommand) { return rCommand.Name == aName; });
 }
 
 
@@ -119,11 +118,8 @@ sal_Bool SAL_CALL
 XCommandInfo_impl::hasCommandByHandle(
     sal_Int32 Handle )
 {
-    for( sal_Int32 i = 0; i < m_pMyShell->m_sCommandInfo.getLength(); ++i )
-        if( m_pMyShell->m_sCommandInfo[i].Handle == Handle )
-            return true;
-
-    return false;
+    return std::any_of(m_pMyShell->m_sCommandInfo.begin(), m_pMyShell->m_sCommandInfo.end(),
+        [&Handle](const CommandInfo& rCommand) { return rCommand.Handle == Handle; });
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/ucb/source/ucp/file/filnot.cxx b/ucb/source/ucp/file/filnot.cxx
index ae659c4bceb3..6c199770e59b 100644
--- a/ucb/source/ucp/file/filnot.cxx
+++ b/ucb/source/ucp/file/filnot.cxx
@@ -210,20 +210,19 @@ PropertyChangeNotifier::~PropertyChangeNotifier()
 
 
 void PropertyChangeNotifier::notifyPropertyChanged(
-    const uno::Sequence< beans::PropertyChangeEvent >& Changes_ )
+    const uno::Sequence< beans::PropertyChangeEvent >& seqChanged )
 {
-    sal_Int32 j;
-    uno::Sequence< beans::PropertyChangeEvent > Changes  = Changes_;
+    uno::Sequence< beans::PropertyChangeEvent > Changes  = seqChanged;
 
-    for( j = 0; j < Changes.getLength(); ++j )
-        Changes[j].Source = m_xCreatorContent;
+    for( auto& rChange : Changes )
+        rChange.Source = m_xCreatorContent;
 
     // notify listeners for all Events
 
     uno::Sequence< uno::Reference< uno::XInterface > > seqList = (*m_pListeners)[ OUString() ];
-    for( j = 0; j < seqList.getLength(); ++j )
+    for( const auto& rListener : seqList )
     {
-        uno::Reference< beans::XPropertiesChangeListener > aListener( seqList[j],uno::UNO_QUERY );
+        uno::Reference< beans::XPropertiesChangeListener > aListener( rListener,uno::UNO_QUERY );
         if( aListener.is() )
         {
             aListener->propertiesChange( Changes );
@@ -231,14 +230,14 @@ void PropertyChangeNotifier::notifyPropertyChanged(
     }
 
     uno::Sequence< beans::PropertyChangeEvent > seq(1);
-    for( j = 0; j < Changes.getLength(); ++j )
+    for( const auto& rChange : Changes )
     {
-        seq[0] = Changes[j];
-        seqList = (*m_pListeners)[ seq[0].PropertyName ];
+        seq[0] = rChange;
+        seqList = (*m_pListeners)[ rChange.PropertyName ];
 
-        for( sal_Int32 i = 0; i < seqList.getLength(); ++i )
+        for( const auto& rListener : seqList )
         {
-            uno::Reference< beans::XPropertiesChangeListener > aListener( seqList[i],uno::UNO_QUERY );
+            uno::Reference< beans::XPropertiesChangeListener > aListener( rListener,uno::UNO_QUERY );
             if( aListener.is() )
             {
                 aListener->propertiesChange( seq );
diff --git a/ucb/source/ucp/file/filprp.cxx b/ucb/source/ucp/file/filprp.cxx
index 4226832e068f..400513035964 100644
--- a/ucb/source/ucp/file/filprp.cxx
+++ b/ucb/source/ucp/file/filprp.cxx
@@ -76,10 +76,12 @@ XPropertySetInfo_impl::~XPropertySetInfo_impl()
 beans::Property SAL_CALL
 XPropertySetInfo_impl::getPropertyByName( const OUString& aName )
 {
-  for( sal_Int32 i = 0; i < m_seq.getLength(); ++i )
-    if( m_seq[i].Name == aName ) return m_seq[i];
+    auto pProp = std::find_if(m_seq.begin(), m_seq.end(),
+        [&aName](const beans::Property& rProp) { return rProp.Name == aName; });
+    if (pProp != m_seq.end())
+        return *pProp;
 
-  throw beans::UnknownPropertyException( THROW_WHERE );
+    throw beans::UnknownPropertyException( THROW_WHERE );
 }
 
 
@@ -93,9 +95,8 @@ XPropertySetInfo_impl::getProperties()
 sal_Bool SAL_CALL
 XPropertySetInfo_impl::hasPropertyByName( const OUString& aName )
 {
-  for( sal_Int32 i = 0; i < m_seq.getLength(); ++i )
-    if( m_seq[i].Name == aName ) return true;
-  return false;
+    return std::any_of(m_seq.begin(), m_seq.end(),
+        [&aName](const beans::Property& rProp) { return rProp.Name == aName; });
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/ucb/source/ucp/file/filrset.cxx b/ucb/source/ucp/file/filrset.cxx
index db6b756fd67c..9c3916844c1a 100644
--- a/ucb/source/ucp/file/filrset.cxx
+++ b/ucb/source/ucp/file/filrset.cxx
@@ -594,22 +594,22 @@ XResultSet_impl::getCapabilities()
 uno::Reference< sdbc::XResultSetMetaData > SAL_CALL
 XResultSet_impl::getMetaData()
 {
-    for ( sal_Int32 n = 0; n < m_sProperty.getLength(); ++n )
+    auto pProp = std::find_if(m_sProperty.begin(), m_sProperty.end(),
+        [](const beans::Property& rProp) { return rProp.Name == "Title"; });
+    if (pProp != m_sProperty.end())
     {
-        if ( m_sProperty.getConstArray()[ n ].Name == "Title" )
-        {
-            std::vector< ::ucbhelper::ResultSetColumnData >
-                                    aColumnData( m_sProperty.getLength() );
-            // @@@ #82177# - Determine correct value!
-            aColumnData[ n ].isCaseSensitive = false;
-
-            ::ucbhelper::ResultSetMetaData* p =
-                new ::ucbhelper::ResultSetMetaData(
-                    m_pMyShell->m_xContext,
-                    m_sProperty,
-                    aColumnData );
-            return uno::Reference< sdbc::XResultSetMetaData >( p );
-        }
+        std::vector< ::ucbhelper::ResultSetColumnData >
+                                aColumnData( m_sProperty.getLength() );
+        auto n = std::distance(m_sProperty.begin(), pProp);
+        // @@@ #82177# - Determine correct value!
+        aColumnData[ n ].isCaseSensitive = false;
+
+        ::ucbhelper::ResultSetMetaData* p =
+            new ::ucbhelper::ResultSetMetaData(
+                m_pMyShell->m_xContext,
+                m_sProperty,
+                aColumnData );
+        return uno::Reference< sdbc::XResultSetMetaData >( p );
     }
 
     ::ucbhelper::ResultSetMetaData* p =
diff --git a/ucb/source/ucp/file/filtask.cxx b/ucb/source/ucp/file/filtask.cxx
index 656d84ca4e67..bb47d6e653ba 100644
--- a/ucb/source/ucp/file/filtask.cxx
+++ b/ucb/source/ucp/file/filtask.cxx
@@ -1099,18 +1099,16 @@ TaskManager::getv( sal_Int32 CommandId,
         TaskManager::ContentMap::iterator it = m_aContent.find( aUnqPath );
         commit( it,aFileStatus );
 
-        TaskManager::PropertySet::iterator it1;
         PropertySet& propset = it->second.properties;
 
-        for( sal_Int32 i = 0; i < seq.getLength(); ++i )
-        {
-            MyProperty readProp( properties[i].Name );
-            it1 = propset.find( readProp );
-            if( it1 == propset.end() )
-                seq[i] = uno::Any();
-            else
-                seq[i] = it1->getValue();
-        }
+        std::transform(properties.begin(), properties.end(), seq.begin(),
+            [&propset](const beans::Property& rProp) -> uno::Any {
+                MyProperty readProp( rProp.Name );
+                auto it1 = propset.find( readProp );
+                if( it1 == propset.end() )
+                    return uno::Any();
+                return it1->getValue();
+            });
     }
 
     XRow_impl* p = new XRow_impl( this,seq );
@@ -2154,28 +2152,28 @@ TaskManager::getMaskFromProperties(
     const uno::Sequence< beans::Property >& seq )
 {
     n_Mask = 0;
-    for(sal_Int32 j = 0; j < seq.getLength(); ++j) {
-        if(seq[j].Name == Title)
+    for(const auto& rProp : seq) {
+        if(rProp.Name == Title)
             n_Mask |= osl_FileStatus_Mask_FileName;
-        else if(seq[j].Name == CasePreservingURL)
+        else if(rProp.Name == CasePreservingURL)
             n_Mask |= osl_FileStatus_Mask_FileURL;
-        else if(seq[j].Name == IsDocument ||
-                seq[j].Name == IsFolder ||
-                seq[j].Name == IsVolume ||
-                seq[j].Name == IsRemoveable ||
-                seq[j].Name == IsRemote ||
-                seq[j].Name == IsCompactDisc ||
-                seq[j].Name == IsFloppy ||
-                seq[j].Name == ContentType)
+        else if(rProp.Name == IsDocument ||
+                rProp.Name == IsFolder ||
+                rProp.Name == IsVolume ||
+                rProp.Name == IsRemoveable ||
+                rProp.Name == IsRemote ||
+                rProp.Name == IsCompactDisc ||
+                rProp.Name == IsFloppy ||
+                rProp.Name == ContentType)
             n_Mask |= (osl_FileStatus_Mask_Type | osl_FileStatus_Mask_LinkTargetURL);
-        else if(seq[j].Name == Size)
+        else if(rProp.Name == Size)
             n_Mask |= (osl_FileStatus_Mask_FileSize |
                       osl_FileStatus_Mask_Type |
                       osl_FileStatus_Mask_LinkTargetURL);
-        else if(seq[j].Name == IsHidden ||
-                seq[j].Name == IsReadOnly)
+        else if(rProp.Name == IsHidden ||
+                rProp.Name == IsReadOnly)
             n_Mask |= osl_FileStatus_Mask_Attributes;
-        else if(seq[j].Name == DateModified)
+        else if(rProp.Name == DateModified)
             n_Mask |= osl_FileStatus_Mask_ModifyTime;
     }
 }
@@ -2215,15 +2213,15 @@ TaskManager::load( const ContentMap::iterator& it, bool create )
             PropertySet& properties = it->second.properties;
             uno::Sequence< beans::Property > seq = xS->getPropertySetInfo()->getProperties();
 
-            for( sal_Int32 i = 0; i < seq.getLength(); ++i )
+            for( const auto& rProp : seq )
             {
                 MyProperty readProp( false,
-                                     seq[i].Name,
-                                     seq[i].Handle,
-                                     seq[i].Type,
-                                     xS->getPropertyValue( seq[i].Name ),
+                                     rProp.Name,
+                                     rProp.Handle,
+                                     rProp.Type,
+                                     xS->getPropertyValue( rProp.Name ),
                                      beans::PropertyState_DIRECT_VALUE,
-                                     seq[i].Attributes );
+                                     rProp.Attributes );
                 properties.insert( readProp );
             }
         }
@@ -2524,18 +2522,16 @@ TaskManager::getv(
         TaskManager::ContentMap::iterator it = m_aContent.find( aUnqPath );
         commit( it,aFileStatus );
 
-        TaskManager::PropertySet::iterator it1;
         PropertySet& propset = it->second.properties;
 
-        for( sal_Int32 i = 0; i < seq.getLength(); ++i )
-        {
-            MyProperty readProp( properties[i].Name );
-            it1 = propset.find( readProp );
-            if( it1 == propset.end() )
-                seq[i] = uno::Any();
-            else
-                seq[i] = it1->getValue();
-        }
+        std::transform(properties.begin(), properties.end(), seq.begin(),
+            [&propset](const beans::Property& rProp) -> uno::Any {
+                MyProperty readProp( rProp.Name );
+                auto it1 = propset.find( readProp );
+                if( it1 == propset.end() )
+                    return uno::Any();
+                return it1->getValue();
+            });
     }
     deregisterNotifier( aUnqPath,pNotifier );
 
diff --git a/ucb/source/ucp/file/prov.cxx b/ucb/source/ucp/file/prov.cxx
index 368876d90540..c222655f4b73 100644
--- a/ucb/source/ucp/file/prov.cxx
+++ b/ucb/source/ucp/file/prov.cxx
@@ -346,9 +346,10 @@ XPropertySetInfoImpl2::queryInterface( const Type& rType )
 Property SAL_CALL
 XPropertySetInfoImpl2::getPropertyByName( const OUString& aName )
 {
-    for( sal_Int32 i = 0; i < m_seq.getLength(); ++i )
-        if( m_seq[i].Name == aName )
-            return m_seq[i];
+    auto pProp = std::find_if(m_seq.begin(), m_seq.end(),
+            [&aName](const Property& rProp) { return rProp.Name == aName; });
+    if (pProp != m_seq.end())
+        return *pProp;
 
     throw UnknownPropertyException( THROW_WHERE );
 }
@@ -365,10 +366,8 @@ sal_Bool SAL_CALL
 XPropertySetInfoImpl2::hasPropertyByName(
     const OUString& aName )
 {
-    for( sal_Int32 i = 0; i < m_seq.getLength(); ++i )
-        if( m_seq[i].Name == aName )
-            return true;
-    return false;
+    return std::any_of(m_seq.begin(), m_seq.end(),
+        [&aName](const Property& rProp) { return rProp.Name == aName; });
 }
 
 
diff --git a/ucb/source/ucp/ftp/ftpcontent.cxx b/ucb/source/ucp/ftp/ftpcontent.cxx
index 93cf2bf2b82f..937ebb7a3ce6 100644
--- a/ucb/source/ucp/ftp/ftpcontent.cxx
+++ b/ucb/source/ucp/ftp/ftpcontent.cxx
@@ -731,41 +731,41 @@ Reference< XRow > FTPContent::getPropertyValues(
 
     FTPDirentry aDirEntry = m_aFTPURL.direntry();
 
-    for(sal_Int32 i = 0; i < seqProp.getLength(); ++i) {
-        const OUString& Name = seqProp[i].Name;
+    for(const auto& rProp : seqProp) {
+        const OUString& Name = rProp.Name;
         if(Name == "Title")
-            xRow->appendString(seqProp[i],aDirEntry.m_aName);
+            xRow->appendString(rProp,aDirEntry.m_aName);
         else if(Name == "CreatableContentsInfo")
-            xRow->appendObject(seqProp[i],
+            xRow->appendObject(rProp,
                                makeAny(queryCreatableContentsInfo()));
         else if(aDirEntry.m_nMode != INETCOREFTP_FILEMODE_UNKNOWN) {
             if(Name == "ContentType")
-                xRow->appendString(seqProp[i],
+                xRow->appendString(rProp,
                                    (aDirEntry.m_nMode & INETCOREFTP_FILEMODE_ISDIR)
                                    ? OUString(FTP_FOLDER)
                                    : OUString(FTP_FILE) );
             else if(Name == "IsReadOnly")
-                xRow->appendBoolean(seqProp[i],
+                xRow->appendBoolean(rProp,
                                     (aDirEntry.m_nMode
                                      & INETCOREFTP_FILEMODE_WRITE) == 0 );
             else if(Name == "IsDocument")
-                xRow->appendBoolean(seqProp[i],
+                xRow->appendBoolean(rProp,
                                     (aDirEntry.m_nMode &
                                                INETCOREFTP_FILEMODE_ISDIR) != INETCOREFTP_FILEMODE_ISDIR);
             else if(Name == "IsFolder")
-                xRow->appendBoolean(seqProp[i],
+                xRow->appendBoolean(rProp,
                                     (aDirEntry.m_nMode &
                                              INETCOREFTP_FILEMODE_ISDIR) == INETCOREFTP_FILEMODE_ISDIR);
             else if(Name == "Size")
-                xRow->appendLong(seqProp[i],
+                xRow->appendLong(rProp,
                                  aDirEntry.m_nSize);
             else if(Name == "DateCreated")
-                xRow->appendTimestamp(seqProp[i],
+                xRow->appendTimestamp(rProp,
                                       aDirEntry.m_aDate);
             else
-                xRow->appendVoid(seqProp[i]);
+                xRow->appendVoid(rProp);
         } else
-            xRow->appendVoid(seqProp[i]);
+            xRow->appendVoid(rProp);
     }
 
     return Reference<XRow>(xRow.get());
@@ -817,16 +817,17 @@ Sequence<Any> FTPContent::setPropertyValues(
 
             // either unknown or read-only
             ret[i] <<= UnknownPropertyException();
-            for(sal_Int32 j = 0; j < props.getLength(); ++j)
-                if(props[j].Name == seqPropVal[i].Name) {
-                    ret[i] <<= IllegalAccessException(
-                        "Property is read-only!",
-                            //props[j].Attributes & PropertyAttribute::READONLY
-                            //    ? "Property is read-only!"
-                            //    : "Access denied!"),
-                        static_cast< cppu::OWeakObject * >( this ));
-                    break;
-                }
+            const auto& rName = seqPropVal[i].Name;
+            auto pProp = std::find_if(props.begin(), props.end(),
+                [&rName](const Property& rProp) { return rProp.Name == rName; });
+            if (pProp != props.end()) {
+                ret[i] <<= IllegalAccessException(
+                    "Property is read-only!",
+                        //props[j].Attributes & PropertyAttribute::READONLY
+                        //    ? "Property is read-only!"
+                        //    : "Access denied!"),
+                    static_cast< cppu::OWeakObject * >( this ));
+            }
         }
     }
 
diff --git a/ucb/source/ucp/ftp/ftpresultsetI.cxx b/ucb/source/ucp/ftp/ftpresultsetI.cxx
index a6163aaa4f2b..6ef79b786e04 100644
--- a/ucb/source/ucp/ftp/ftpresultsetI.cxx
+++ b/ucb/source/ucp/ftp/ftpresultsetI.cxx
@@ -55,37 +55,37 @@ ResultSetI::ResultSetI(const Reference<XComponentContext>&  rxContext,
         rtl::Reference<ucbhelper::PropertyValueSet> xRow =
             new ucbhelper::PropertyValueSet(rxContext);
 
-        for( int i = 0; i < seqProp.getLength(); ++i) {
-            const OUString& Name = seqProp[i].Name;
+        for( const auto& rProp : seqProp) {
+            const OUString& Name = rProp.Name;
             if(Name == "ContentType")
-                xRow->appendString(seqProp[i],
+                xRow->appendString(rProp,
                                    OUString( "application/ftp" ));
             else if(Name == "Title")
-                xRow->appendString(seqProp[i],dirvec[n].m_aName);
+                xRow->appendString(rProp,dirvec[n].m_aName);
             else if(Name == "IsReadOnly")
-                xRow->appendBoolean(seqProp[i],
+                xRow->appendBoolean(rProp,
                                     (dirvec[n].m_nMode &
                                              INETCOREFTP_FILEMODE_WRITE) == INETCOREFTP_FILEMODE_WRITE);
             else if(Name == "IsDocument")
-                xRow->appendBoolean(seqProp[i],
+                xRow->appendBoolean(rProp,
                                     (dirvec[n].m_nMode &
                                                INETCOREFTP_FILEMODE_ISDIR) != INETCOREFTP_FILEMODE_ISDIR);
             else if(Name == "IsFolder")
-                xRow->appendBoolean(seqProp[i],
+                xRow->appendBoolean(rProp,
                                     ( dirvec[n].m_nMode &
                                              INETCOREFTP_FILEMODE_ISDIR) == INETCOREFTP_FILEMODE_ISDIR);
             else if(Name == "Size")
-                xRow->appendLong(seqProp[i],
+                xRow->appendLong(rProp,
                                  dirvec[n].m_nSize);
             else if(Name == "DateCreated")
-                xRow->appendTimestamp(seqProp[i],
+                xRow->appendTimestamp(rProp,
                                       dirvec[n].m_aDate);
             else if(Name == "CreatableContentsInfo")
                 xRow->appendObject(
-                    seqProp[i],
+                    rProp,
                     makeAny(FTPContent::queryCreatableContentsInfo_Static()));
             else
-                xRow->appendVoid(seqProp[i]);
+                xRow->appendVoid(rProp);
         }
         m_aItems[n].set(xRow.get());
     }
diff --git a/ucb/source/ucp/ftp/ftpresultsetbase.cxx b/ucb/source/ucp/ftp/ftpresultsetbase.cxx
index 83aa79ea82e3..e18e14212103 100644
--- a/ucb/source/ucp/ftp/ftpresultsetbase.cxx
+++ b/ucb/source/ucp/ftp/ftpresultsetbase.cxx
@@ -376,18 +376,17 @@ public:
 
     beans::Property SAL_CALL getPropertyByName( const OUString& aName ) override
     {
-        for( int i = 0; i < m_aSeq.getLength(); ++i )
-            if( aName == m_aSeq[i].Name )
-                return m_aSeq[i];
+        auto pProp = std::find_if(m_aSeq.begin(), m_aSeq.end(),
+            [&aName](const beans::Property& rProp) { return aName == rProp.Name; });
+        if (pProp != m_aSeq.end())
+            return *pProp;
         throw beans::UnknownPropertyException();
     }
 
     sal_Bool SAL_CALL hasPropertyByName( const OUString& Name ) override
     {
-        for( int i = 0; i < m_aSeq.getLength(); ++i )
-            if( Name == m_aSeq[i].Name )
-                return true;
-        return false;
+        return std::any_of(m_aSeq.begin(), m_aSeq.end(),
+            [&Name](const beans::Property& rProp) { return Name == rProp.Name; });
     }
 
 private:
diff --git a/ucb/source/ucp/gio/gio_content.cxx b/ucb/source/ucp/gio/gio_content.cxx
index 841a19980824..f24fd29d132c 100644
--- a/ucb/source/ucp/gio/gio_content.cxx
+++ b/ucb/source/ucp/gio/gio_content.cxx
@@ -445,17 +445,9 @@ css::uno::Reference< css::sdbc::XRow > Content::getPropertyValues(
 {
     rtl::Reference< ::ucbhelper::PropertyValueSet > xRow = new ::ucbhelper::PropertyValueSet( m_xContext );
 
-    sal_Int32 nProps;
-    const css::beans::Property* pProps;
-
-    nProps = rProperties.getLength();
-    pProps = rProperties.getConstArray();
-
     GFileInfo *pInfo = nullptr;
-    for( sal_Int32 n = 0; n < nProps; ++n )
+    for( const css::beans::Property& rProp : rProperties )
     {
-        const css::beans::Property& rProp = pProps[ n ];
-
         if ( rProp.Name == "IsDocument" )
         {
             getFileInfo(xEnv, &pInfo, true);
diff --git a/ucb/source/ucp/hierarchy/hierarchycontent.cxx b/ucb/source/ucp/hierarchy/hierarchycontent.cxx
index 923225a1df90..65051e16c193 100644
--- a/ucb/source/ucp/hierarchy/hierarchycontent.cxx
+++ b/ucb/source/ucp/hierarchy/hierarchycontent.cxx
@@ -63,6 +63,7 @@
 #include <com/sun/star/uno/Any.hxx>
 #include <com/sun/star/uno/Sequence.hxx>
 #include <comphelper/propertysequence.hxx>
+#include <comphelper/sequence.hxx>
 #include <cppuhelper/queryinterface.hxx>
 #include <ucbhelper/contentidentifier.hxx>
 #include <ucbhelper/propertyvalueset.hxx>
@@ -685,15 +686,7 @@ bool HierarchyContent::isReadOnly()
             {
                 uno::Sequence< OUString > aNames
                     = xConfigProv->getAvailableServiceNames();
-                sal_Int32 nCount = aNames.getLength();
-                for ( sal_Int32 n = 0; n < nCount; ++n )
-                {
-                    if ( aNames[ n ] == "com.sun.star.ucb.HierarchyDataReadWriteAccess" )
-                    {
-                        m_bIsReadOnly = false;
-                        break;
-                    }
-                }
+                m_bIsReadOnly = comphelper::findValue(aNames, "com.sun.star.ucb.HierarchyDataReadWriteAccess") == -1;
             }
         }
     }
@@ -851,17 +844,13 @@ uno::Reference< sdbc::XRow > HierarchyContent::getPropertyValues(
     rtl::Reference< ::ucbhelper::PropertyValueSet > xRow
         = new ::ucbhelper::PropertyValueSet( rxContext );
 
-    sal_Int32 nCount = rProperties.getLength();
-    if ( nCount )
+    if ( rProperties.hasElements() )
     {
         uno::Reference< beans::XPropertySet > xAdditionalPropSet;
         bool bTriedToGetAdditionalPropSet = false;
 
-        const beans::Property* pProps = rProperties.getConstArray();
-        for ( sal_Int32 n = 0; n < nCount; ++n )
+        for ( const beans::Property& rProp : rProperties )
         {
-            const beans::Property& rProp = pProps[ n ];
-
             // Process Core properties.
 
             if ( rProp.Name == "ContentType" )
diff --git a/ucb/source/ucp/package/pkgcontent.cxx b/ucb/source/ucp/package/pkgcontent.cxx
index dba85a3a9d30..85cb0b16d3c8 100644
--- a/ucb/source/ucp/package/pkgcontent.cxx
+++ b/ucb/source/ucp/package/pkgcontent.cxx
@@ -714,13 +714,8 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
         rtl::Reference< ::ucbhelper::PropertyValueSet > xRow
             = new ::ucbhelper::PropertyValueSet( rxContext );
 
-        sal_Int32 nCount = rProperties.getLength();
-        if ( nCount )
-        {
-            const beans::Property* pProps = rProperties.getConstArray();
-            for ( sal_Int32 n = 0; n < nCount; ++n )
-                xRow->appendVoid( pProps[ n ] );
-        }
+        for ( const beans::Property& rProp : rProperties )
+            xRow->appendVoid( rProp );
 
         return uno::Reference< sdbc::XRow >( xRow.get() );
     }
@@ -741,17 +736,13 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
     rtl::Reference< ::ucbhelper::PropertyValueSet > xRow
         = new ::ucbhelper::PropertyValueSet( rxContext );
 
-    sal_Int32 nCount = rProperties.getLength();
-    if ( nCount )
+    if ( rProperties.hasElements() )
     {
         uno::Reference< beans::XPropertySet > xAdditionalPropSet;
         bool bTriedToGetAdditionalPropSet = false;
 
-        const beans::Property* pProps = rProperties.getConstArray();
-        for ( sal_Int32 n = 0; n < nCount; ++n )
+        for ( const beans::Property& rProp : rProperties )
         {
-            const beans::Property& rProp = pProps[ n ];
-
             // Process Core properties.
 
             if ( rProp.Name == "ContentType" )
diff --git a/ucb/source/ucp/tdoc/tdoc_content.cxx b/ucb/source/ucp/tdoc/tdoc_content.cxx
index 9dd5b6e6ae98..8a693fbe133b 100644
--- a/ucb/source/ucp/tdoc/tdoc_content.cxx
+++ b/ucb/source/ucp/tdoc/tdoc_content.cxx
@@ -844,13 +844,8 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
         rtl::Reference< ::ucbhelper::PropertyValueSet > xRow
             = new ::ucbhelper::PropertyValueSet( rxContext );
 
-        sal_Int32 nCount = rProperties.getLength();
-        if ( nCount )
-        {
-            const beans::Property* pProps = rProperties.getConstArray();
-            for ( sal_Int32 n = 0; n < nCount; ++n )
-                xRow->appendVoid( pProps[ n ] );
-        }
+        for ( const beans::Property& rProp : rProperties )
+            xRow->appendVoid( rProp );
 
         return uno::Reference< sdbc::XRow >( xRow.get() );
     }
@@ -870,17 +865,13 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
     rtl::Reference< ::ucbhelper::PropertyValueSet > xRow
         = new ::ucbhelper::PropertyValueSet( rxContext );
 
-    sal_Int32 nCount = rProperties.getLength();
-    if ( nCount )
+    if ( rProperties.hasElements() )
     {
         uno::Reference< beans::XPropertySet > xAdditionalPropSet;
         bool bTriedToGetAdditionalPropSet = false;
 
-        const beans::Property* pProps = rProperties.getConstArray();
-        for ( sal_Int32 n = 0; n < nCount; ++n )
+        for ( const beans::Property& rProp : rProperties )
         {
-            const beans::Property& rProp = pProps[ n ];
-
             // Process Core properties.
 
             if ( rProp.Name == "ContentType" )
diff --git a/ucb/source/ucp/webdav-neon/ContentProperties.cxx b/ucb/source/ucp/webdav-neon/ContentProperties.cxx
index c13f0ed0b550..12bbf4f740cd 100644
--- a/ucb/source/ucp/webdav-neon/ContentProperties.cxx
+++ b/ucb/source/ucp/webdav-neon/ContentProperties.cxx
@@ -222,11 +222,8 @@ void ContentProperties::UCBNamesToDAVNames(
     bool bContentLength = false;
     bool bResourceType  = false;
 
-    sal_Int32 nCount = rProps.getLength();
-    for ( sal_Int32 n = 0; n < nCount; ++n )
+    for ( const beans::Property & rProp : rProps )
     {
-        const beans::Property & rProp = rProps[ n ];
-
         if ( rProp.Name == "Title" )
         {
             // Title is always obtained from resource's URI.
@@ -295,11 +292,8 @@ void ContentProperties::UCBNamesToHTTPNames(
     // Content-Type   <- MediaType
     // Content-Length <- Size
 
-    sal_Int32 nCount = rProps.getLength();
-    for ( sal_Int32 n = 0; n < nCount; ++n )
+    for ( const beans::Property & rProp : rProps )
     {
-        const beans::Property & rProp = rProps[ n ];
-
         if ( rProp.Name == "DateModified" )
         {
             propertyNames.emplace_back("Last-Modified" );
@@ -326,10 +320,9 @@ bool ContentProperties::containsAllNames(
 {
     rNamesNotContained.clear();
 
-    sal_Int32 nCount = rProps.getLength();
-    for ( sal_Int32 n = 0; n < nCount; ++n )
+    for ( const auto& rProp : rProps )
     {
-        const OUString & rName = rProps[ n ].Name;
+        const OUString & rName = rProp.Name;
         if ( !contains( rName ) )
         {
             // Not found.
diff --git a/ucb/source/ucp/webdav-neon/DAVResourceAccess.cxx b/ucb/source/ucp/webdav-neon/DAVResourceAccess.cxx
index bf1004a9e411..905c78518a5f 100644
--- a/ucb/source/ucp/webdav-neon/DAVResourceAccess.cxx
+++ b/ucb/source/ucp/webdav-neon/DAVResourceAccess.cxx
@@ -1084,11 +1084,11 @@ void DAVResourceAccess::getUserRequestHeaders(
             uno::Sequence< beans::StringPair > aRequestHeaders
                 = xDAVEnv->getUserRequestHeaders( rURI, eMethod );
 
-            for ( sal_Int32 n = 0; n < aRequestHeaders.getLength(); ++n )
+            for ( const auto& rRequestHeader : aRequestHeaders )
             {
                 rRequestHeaders.emplace_back(
-                        aRequestHeaders[ n ].First,
-                        aRequestHeaders[ n ].Second );
+                        rRequestHeader.First,
+                        rRequestHeader.Second );
             }
         }
     }
diff --git a/ucb/source/ucp/webdav-neon/LinkSequence.cxx b/ucb/source/ucp/webdav-neon/LinkSequence.cxx
index da0bd63aebd1..fc9e29851be0 100644
--- a/ucb/source/ucp/webdav-neon/LinkSequence.cxx
+++ b/ucb/source/ucp/webdav-neon/LinkSequence.cxx
@@ -197,20 +197,15 @@ bool LinkSequence::toXML( const uno::Sequence< ucb::Link > & rInData,
 {
     // <link><src>value</src><dst>value</dst></link><link><src>....
 
-    sal_Int32 nCount = rInData.getLength();
-    if ( nCount )
+    for ( const auto& rLink : rInData )
     {
-        for ( sal_Int32 n = 0; n < nCount; ++n )
-        {
-                rOutData += "<link><src>";
-                rOutData += rInData[ n ].Source;
-                rOutData += "</src><dst>";
-                rOutData += rInData[ n ].Destination;
-                rOutData += "</dst></link>";
-        }
-        return true;
+        rOutData += "<link><src>";
+        rOutData += rLink.Source;
+        rOutData += "</src><dst>";
+        rOutData += rLink.Destination;
+        rOutData += "</dst></link>";
     }
-    return false;
+    return rInData.hasElements();
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/ucb/source/ucp/webdav-neon/NeonSession.cxx b/ucb/source/ucp/webdav-neon/NeonSession.cxx
index 667d24b05351..a075268806c8 100644
--- a/ucb/source/ucp/webdav-neon/NeonSession.cxx
+++ b/ucb/source/ucp/webdav-neon/NeonSession.cxx
@@ -146,12 +146,10 @@ static bool noKeepAlive( const uno::Sequence< beans::NamedValue >& rFlags )
         return false;
 
     // find "KeepAlive" property
-    const beans::NamedValue* pAry(rFlags.getConstArray());
-    const sal_Int32          nLen(rFlags.getLength());
     const beans::NamedValue* pValue(
-        std::find_if(pAry,pAry+nLen,
+        std::find_if(rFlags.begin(), rFlags.end(),
             [] (beans::NamedValue const& rNV) { return rNV.Name == "KeepAlive"; } ));
-    return pValue != pAry+nLen && !pValue->Value.get<bool>();
+    return pValue != rFlags.end() && !pValue->Value.get<bool>();
 }
 
 struct NeonRequestContext
@@ -1773,17 +1771,11 @@ namespace {
 bool containsLocktoken( const uno::Sequence< ucb::Lock > & rLocks,
                         const char * token )
 {
-    for ( sal_Int32 n = 0; n < rLocks.getLength(); ++n )
-    {
-        const uno::Sequence< OUString > & rTokens
-            = rLocks[ n ].LockTokens;
-        for ( sal_Int32 m = 0; m < rTokens.getLength(); ++m )
-        {
-            if ( rTokens[ m ].equalsAscii( token ) )
-                return true;
-        }
-    }
-    return false;
+    return std::any_of(rLocks.begin(), rLocks.end(), [&token](const ucb::Lock& rLock) {
+        const uno::Sequence< OUString > & rTokens = rLock.LockTokens;
+        return std::any_of(rTokens.begin(), rTokens.end(),
+            [&token](const OUString& rToken) { return rToken.equalsAscii( token ); });
+    });
 }
 
 } // namespace
diff --git a/ucb/source/ucp/webdav-neon/webdavcontent.cxx b/ucb/source/ucp/webdav-neon/webdavcontent.cxx
index bd05e53fd880..25941bce6c13 100644
--- a/ucb/source/ucp/webdav-neon/webdavcontent.cxx
+++ b/ucb/source/ucp/webdav-neon/webdavcontent.cxx
@@ -1195,17 +1195,13 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
     rtl::Reference< ::ucbhelper::PropertyValueSet > xRow
         = new ::ucbhelper::PropertyValueSet( rxContext );
 
-    sal_Int32 nCount = rProperties.getLength();
-    if ( nCount )
+    if ( rProperties.hasElements() )
     {
         uno::Reference< beans::XPropertySet > xAdditionalPropSet;
         bool bTriedToGetAdditionalPropSet = false;
 
-        const beans::Property* pProps = rProperties.getConstArray();
-        for ( sal_Int32 n = 0; n < nCount; ++n )
+        for ( const beans::Property& rProp : rProperties )
         {
-            const beans::Property& rProp = pProps[ n ];
-
             // Process standard UCB, DAV and HTTP properties.
             const uno::Any & rValue = rData.getValue( rProp.Name );
             if ( rValue.hasValue() )
@@ -1378,12 +1374,8 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
 
                 if ( !m_aFailedPropNames.empty() )
                 {
-                    sal_Int32 nProps = 0;
-                    sal_Int32 nCount = rProperties.getLength();
-                    for ( sal_Int32 n = 0; n < nCount; ++n, ++nProps )
-                    {
-                        aProperties[ nProps ] = rProperties[ n ];
-                    }
+                    sal_Int32 nProps = rProperties.getLength();
+                    std::copy(rProperties.begin(), rProperties.end(), aProperties.begin());
 
                     aProperties.realloc( nProps );
                 }
@@ -1659,10 +1651,9 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
         }
     }
 
-    sal_Int32 nCount = rProperties.getLength();
-    for ( sal_Int32 n = 0; n < nCount; ++n )
+    for ( const auto& rProperty : rProperties )
     {
-        const OUString rName = rProperties[ n ].Name;
+        const OUString rName = rProperty.Name;
         if ( rName == "BaseURI" )
         {
             // Add BaseURI property, if requested.
@@ -2969,11 +2960,11 @@ Content::ResourceType Content::resourceTypeForLocks(
             if ( m_xCachedProps->getValue( DAVProperties::SUPPORTEDLOCK )
                  >>= aSupportedLocks )            //get the cached value for supportedlock
             {
-                for ( sal_Int32 n = 0; n < aSupportedLocks.getLength(); ++n )
+                for ( const auto& rSupportedLock : aSupportedLocks )
                 {
-                    if ( aSupportedLocks[ n ].Scope
+                    if ( rSupportedLock.Scope
                          == ucb::LockScope_EXCLUSIVE &&
-                         aSupportedLocks[ n ].Type
+                         rSupportedLock.Type
                          == ucb::LockType_WRITE )
                         eResourceTypeForLocks = DAV;
                 }
@@ -3040,20 +3031,20 @@ Content::ResourceType Content::resourceTypeForLocks(
                                     uno::Sequence< ucb::LockEntry > aSupportedLocks;
                                     if ( rProp.Value >>= aSupportedLocks )
                                     {
-                                        for ( sal_Int32 n = 0; n < aSupportedLocks.getLength(); ++n )
+                                        bool isSupported = std::any_of(aSupportedLocks.begin(), aSupportedLocks.end(),
+                                            [](const ucb::LockEntry& rLock) {
+                                                // TODO: if the lock type is changed from 'exclusive write' to 'shared write'
+                                                // e.g. to implement 'Calc shared file feature', the ucb::LockScope_EXCLUSIVE
+                                                // value should be checked as well, adaptation the code may be needed
+                                                return rLock.Scope == ucb::LockScope_EXCLUSIVE
+                                                    && rLock.Type == ucb::LockType_WRITE;
+                                            });
+                                        if (isSupported)
                                         {
-                                            // TODO: if the lock type is changed from 'exclusive write' to 'shared write'
-                                            // e.g. to implement 'Calc shared file feature', the ucb::LockScope_EXCLUSIVE
-                                            // value should be checked as well, adaptation the code may be needed
-                                            if ( aSupportedLocks[ n ].Scope == ucb::LockScope_EXCLUSIVE &&
-                                                 aSupportedLocks[ n ].Type == ucb::LockType_WRITE )
-                                            {
-                                                // requested locking mode is supported
-                                                eResourceTypeForLocks = DAV;
-                                                SAL_INFO( "ucb.ucp.webdav", "resourceTypeForLocks - URL: <"
-                                                          << m_xIdentifier->getContentIdentifier() << ">, DAV lock/unlock supported");
-                                                break;
-                                            }
+                                            // requested locking mode is supported
+                                            eResourceTypeForLocks = DAV;
+                                            SAL_INFO( "ucb.ucp.webdav", "resourceTypeForLocks - URL: <"
+                                                      << m_xIdentifier->getContentIdentifier() << ">, DAV lock/unlock supported");
                                         }
                                         break;
                                     }


More information about the Libreoffice-commits mailing list