summaryrefslogtreecommitdiff
path: root/vbahelper
diff options
context:
space:
mode:
authorArkadiy Illarionov <qarkai@gmail.com>2019-06-18 23:43:16 +0300
committerNoel Grandin <noel.grandin@collabora.co.uk>2019-06-20 09:44:52 +0200
commit71a7e17dd7a6425a3df3c5dca25a3dac24ef6fa7 (patch)
treed72519bd691f3c117e49c97f256590e750fd9575 /vbahelper
parent2a06796fa6f6255314cf4c1271f62154f08bac4f (diff)
Simplify Sequence iterations in vbahelper
Use range-based loops or replace with comphelper or STL functions Change-Id: I7613057ba7063e04ca39a654f8a15c0354694783 Reviewed-on: https://gerrit.libreoffice.org/74309 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'vbahelper')
-rw-r--r--vbahelper/source/msforms/vbacombobox.cxx8
-rw-r--r--vbahelper/source/msforms/vbalistbox.cxx31
-rw-r--r--vbahelper/source/msforms/vbalistcontrolhelper.cxx27
-rw-r--r--vbahelper/source/msforms/vbauserform.cxx6
-rw-r--r--vbahelper/source/vbahelper/vbacommandbarhelper.cxx16
-rw-r--r--vbahelper/source/vbahelper/vbacommandbars.cxx13
-rw-r--r--vbahelper/source/vbahelper/vbaeventshelperbase.cxx3
-rw-r--r--vbahelper/source/vbahelper/vbaglobalbase.cxx20
-rw-r--r--vbahelper/source/vbahelper/vbahelper.cxx64
-rw-r--r--vbahelper/source/vbahelper/vbashapes.cxx9
10 files changed, 64 insertions, 133 deletions
diff --git a/vbahelper/source/msforms/vbacombobox.cxx b/vbahelper/source/msforms/vbacombobox.cxx
index 851cee0a4098..3f4468d7d07a 100644
--- a/vbahelper/source/msforms/vbacombobox.cxx
+++ b/vbahelper/source/msforms/vbacombobox.cxx
@@ -21,6 +21,7 @@
#include <filter/msfilter/msvbahelper.hxx>
#include <basic/sbstar.hxx>
#include <basic/sbmod.hxx>
+#include <comphelper/sequence.hxx>
#include "vbanewfont.hxx"
#include <ooo/vba/msforms/fmStyle.hpp>
#include <ooo/vba/msforms/fmDropButtonStyle.hpp>
@@ -96,15 +97,14 @@ ScVbaComboBox::getListIndex()
if ( sItems.hasElements() )
{
OUString sText = getText();
- sal_Int32 nLen = sItems.getLength();
- for ( sal_Int32 index = 0; !sText.isEmpty() && index < nLen; ++index )
+ if (!sText.isEmpty())
{
- if ( sItems[ index ] == sText )
+ sal_Int32 index = comphelper::findValue(sItems, sText);
+ if (index != -1)
{
SAL_INFO("vbahelper", "getListIndex returning " << index );
return uno::makeAny( index );
}
-
}
}
SAL_INFO("vbahelper", "getListIndex returning -1" );
diff --git a/vbahelper/source/msforms/vbalistbox.cxx b/vbahelper/source/msforms/vbalistbox.cxx
index 13c878440193..cb35e7b58b40 100644
--- a/vbahelper/source/msforms/vbalistbox.cxx
+++ b/vbahelper/source/msforms/vbalistbox.cxx
@@ -20,6 +20,7 @@
#include "vbalistbox.hxx"
#include "vbanewfont.hxx"
#include <com/sun/star/form/validation/XValidatableFormComponent.hpp>
+#include <comphelper/sequence.hxx>
#include <ooo/vba/msforms/fmMultiSelect.hpp>
using namespace com::sun::star;
@@ -77,17 +78,7 @@ ScVbaListBox::setValue( const uno::Any& _value )
OUString sValue = getAnyAsString( _value );
uno::Sequence< OUString > sList;
m_xProps->getPropertyValue( "StringItemList" ) >>= sList;
- sal_Int16 nLength = static_cast<sal_Int16>( sList.getLength() );
- sal_Int16 nValue = -1;
- sal_Int16 i = 0;
- for( i = 0; i < nLength; i++ )
- {
- if( sList[i] == sValue )
- {
- nValue = i;
- break;
- }
- }
+ sal_Int16 nValue = static_cast<sal_Int16>(comphelper::findValue(sList, sValue));
if( nValue == -1 )
throw uno::RuntimeException( "Attribute use invalid." );
@@ -164,7 +155,7 @@ void SAL_CALL
ScVbaListBox::AddItem( const uno::Any& pvargItem, const uno::Any& pvargIndex )
{
mpListHelper->AddItem( pvargItem, pvargIndex );
- }
+}
void SAL_CALL
ScVbaListBox::removeItem( const uno::Any& index )
@@ -196,9 +187,7 @@ ScVbaListBox::setValueEvent( const uno::Any& value )
{
if( nList[i] == nIndex )
{
- if( bValue )
- return;
- else
+ if( !bValue )
{
for( ; i < nLength - 1; i++ )
{
@@ -208,8 +197,8 @@ ScVbaListBox::setValueEvent( const uno::Any& value )
//m_xProps->setPropertyValue( sSourceName, uno::makeAny( nList ) );
fireClickEvent();
m_xProps->setPropertyValue( "SelectedItems", uno::makeAny( nList ) );
- return;
}
+ return;
}
}
if( bValue )
@@ -239,16 +228,10 @@ ScVbaListBox::getValueEvent()
{
uno::Sequence< sal_Int16 > nList;
m_xProps->getPropertyValue( "SelectedItems" ) >>= nList;
- sal_Int32 nLength = nList.getLength();
sal_Int32 nIndex = m_nIndex;
+ bool bRet = std::find(nList.begin(), nList.end(), nIndex) != nList.end();
- for( sal_Int32 i = 0; i < nLength; i++ )
- {
- if( nList[i] == nIndex )
- return uno::makeAny( true );
- }
-
- return uno::makeAny( false );
+ return uno::makeAny( bRet );
}
void SAL_CALL
diff --git a/vbahelper/source/msforms/vbalistcontrolhelper.cxx b/vbahelper/source/msforms/vbalistcontrolhelper.cxx
index 9f72bda981c1..dfbbb19a3bde 100644
--- a/vbahelper/source/msforms/vbalistcontrolhelper.cxx
+++ b/vbahelper/source/msforms/vbalistcontrolhelper.cxx
@@ -21,6 +21,7 @@
#include <vector>
#include <vbahelper/vbapropvalue.hxx>
#include <com/sun/star/beans/XPropertySet.hpp>
+#include <comphelper/sequence.hxx>
using namespace com::sun::star;
using namespace ooo::vba;
@@ -108,30 +109,21 @@ ListControlHelper::AddItem( const uno::Any& pvargItem, const uno::Any& pvargInde
// just copy those elements above the one to be inserted
std::vector< OUString > sVec;
// reserve just the amount we need to copy
- sVec.reserve( sList.getLength() - nIndex );
+ sVec.reserve( sList.getLength() - nIndex + 1);
- // point at first element to copy
- OUString* pString = sList.getArray() + nIndex;
- const OUString* pEndString = sList.getArray() + sList.getLength();
// insert the new element
sVec.push_back( sString );
- // copy elements
- for ( ; pString != pEndString; ++pString )
- sVec.push_back( *pString );
+
+ // point at first element to copy
+ std::copy(std::next(sList.begin(), nIndex), sList.end(), std::back_inserter(sVec));
sList.realloc( sList.getLength() + 1 );
// point at first element to be overwritten
- pString = sList.getArray() + nIndex;
- pEndString = sList.getArray() + sList.getLength();
- std::vector< OUString >::iterator it = sVec.begin();
- for ( ; pString != pEndString; ++pString, ++it)
- *pString = *it;
-
+ std::copy(sVec.begin(), sVec.end(), std::next(sList.begin(), nIndex));
}
m_xProps->setPropertyValue( "StringItemList", uno::makeAny( sList ) );
-
}
}
@@ -153,11 +145,8 @@ ListControlHelper::removeItem( const uno::Any& index )
Clear();
return;
}
- for( sal_Int32 i = nIndex; i < ( sList.getLength()-1 ); i++ )
- {
- sList[i] = sList[i+1];
- }
- sList.realloc( sList.getLength() - 1 );
+
+ comphelper::removeElementAt(sList, nIndex);
}
m_xProps->setPropertyValue( "StringItemList", uno::makeAny( sList ) );
diff --git a/vbahelper/source/msforms/vbauserform.cxx b/vbahelper/source/msforms/vbauserform.cxx
index 871630c9dd40..a22f15d41dae 100644
--- a/vbahelper/source/msforms/vbauserform.cxx
+++ b/vbahelper/source/msforms/vbauserform.cxx
@@ -234,12 +234,10 @@ ScVbaUserForm::nestedSearch( const OUString& aPropertyName, uno::Reference< awt:
if ( !xControl.is() )
{
uno::Sequence< uno::Reference< awt::XControl > > aControls = xContainer->getControls();
- const uno::Reference< awt::XControl >* pCtrl = aControls.getConstArray();
- const uno::Reference< awt::XControl >* pCtrlsEnd = pCtrl + aControls.getLength();
- for ( ; pCtrl < pCtrlsEnd; ++pCtrl )
+ for ( const auto& rCtrl : aControls )
{
- uno::Reference< awt::XControlContainer > xC( *pCtrl, uno::UNO_QUERY );
+ uno::Reference< awt::XControlContainer > xC( rCtrl, uno::UNO_QUERY );
if ( xC.is() )
{
xControl.set( nestedSearch( aPropertyName, xC ) );
diff --git a/vbahelper/source/vbahelper/vbacommandbarhelper.cxx b/vbahelper/source/vbahelper/vbacommandbarhelper.cxx
index e4237d356660..31dcb7d5667c 100644
--- a/vbahelper/source/vbahelper/vbacommandbarhelper.cxx
+++ b/vbahelper/source/vbahelper/vbacommandbarhelper.cxx
@@ -186,15 +186,13 @@ OUString VbaCommandBarHelper::findToolbarByName( const css::uno::Reference< css:
return sResourceUrl;
uno::Sequence< OUString > allNames = xNameAccess->getElementNames();
- for( sal_Int32 i = 0; i < allNames.getLength(); i++ )
- {
- sResourceUrl = allNames[i];
- if(sResourceUrl.startsWith( ITEM_TOOLBAR_URL ) )
- {
- if( hasToolbar( sResourceUrl, sName ) )
- return sResourceUrl;
- }
- }
+ auto pName = std::find_if(allNames.begin(), allNames.end(),
+ [this, &sName](const OUString& rName) {
+ return rName.startsWith( ITEM_TOOLBAR_URL )
+ && hasToolbar( rName, sName );
+ });
+ if (pName != allNames.end())
+ return *pName;
// the customize toolbars creating during importing, should found there.
sResourceUrl = "private:resource/toolbar/custom_" + sName;
diff --git a/vbahelper/source/vbahelper/vbacommandbars.cxx b/vbahelper/source/vbahelper/vbacommandbars.cxx
index 70772852f584..b771e3d541cf 100644
--- a/vbahelper/source/vbahelper/vbacommandbars.cxx
+++ b/vbahelper/source/vbahelper/vbacommandbars.cxx
@@ -48,9 +48,7 @@ public:
}
virtual sal_Bool SAL_CALL hasMoreElements() override
{
- if( m_nCurrentPosition < m_sNames.getLength() )
- return true;
- return false;
+ return m_nCurrentPosition < m_sNames.getLength();
}
virtual uno::Any SAL_CALL nextElement() override
{
@@ -188,13 +186,8 @@ ScVbaCommandBars::getCount()
// Filter out all toolbars from the window collection
sal_Int32 nCount = 1; // there is a Menubar in OOo
uno::Sequence< ::OUString > allNames = m_xNameAccess->getElementNames();
- for( sal_Int32 i = 0; i < allNames.getLength(); i++ )
- {
- if(allNames[i].indexOf( "private:resource/toolbar/" ) != -1 )
- {
- nCount++;
- }
- }
+ nCount += std::count_if(allNames.begin(), allNames.end(),
+ [](const OUString& rName) { return rName.indexOf( "private:resource/toolbar/" ) != -1; });
return nCount;
}
diff --git a/vbahelper/source/vbahelper/vbaeventshelperbase.cxx b/vbahelper/source/vbahelper/vbaeventshelperbase.cxx
index 99d49625c3e9..14c650f60de8 100644
--- a/vbahelper/source/vbahelper/vbaeventshelperbase.cxx
+++ b/vbahelper/source/vbahelper/vbaeventshelperbase.cxx
@@ -158,9 +158,8 @@ void SAL_CALL VbaEventsHelperBase::changesOccurred( const util::ChangesEvent& rE
return;
// process all changed modules
- for( sal_Int32 nIndex = 0, nLength = rEvent.Changes.getLength(); nIndex < nLength; ++nIndex )
+ for( const util::ElementChange& rChange : rEvent.Changes )
{
- const util::ElementChange& rChange = rEvent.Changes[ nIndex ];
OUString aModuleName;
if( (rChange.Accessor >>= aModuleName) && !aModuleName.isEmpty() ) try
{
diff --git a/vbahelper/source/vbahelper/vbaglobalbase.cxx b/vbahelper/source/vbahelper/vbaglobalbase.cxx
index 4c65e9d4d398..902c07d82ffb 100644
--- a/vbahelper/source/vbahelper/vbaglobalbase.cxx
+++ b/vbahelper/source/vbahelper/vbaglobalbase.cxx
@@ -19,6 +19,7 @@
#include <vbahelper/vbaglobalbase.hxx>
#include <sal/macros.h>
+#include <comphelper/sequence.hxx>
#include <cppuhelper/component_context.hxx>
#include <cppuhelper/exc_hlp.hxx>
#include <com/sun/star/beans/PropertyValue.hpp>
@@ -103,18 +104,17 @@ VbaGlobalsBase::~VbaGlobalsBase()
void
VbaGlobalsBase::init( const uno::Sequence< beans::PropertyValue >& aInitArgs )
{
- sal_Int32 nLen = aInitArgs.getLength();
- for ( sal_Int32 nIndex = 0; nIndex < nLen; ++nIndex )
+ for ( const auto& rInitArg : aInitArgs )
{
uno::Reference< container::XNameContainer > xNameContainer( mxContext, uno::UNO_QUERY_THROW );
- if ( aInitArgs[ nIndex ].Name == gsApplication )
+ if ( rInitArg.Name == gsApplication )
{
- xNameContainer->replaceByName( gsApplication, aInitArgs[ nIndex ].Value );
- uno::Reference< XHelperInterface > xParent( aInitArgs[ nIndex ].Value, uno::UNO_QUERY );
+ xNameContainer->replaceByName( gsApplication, rInitArg.Value );
+ uno::Reference< XHelperInterface > xParent( rInitArg.Value, uno::UNO_QUERY );
mxParent = xParent;
}
else
- xNameContainer->replaceByName( aInitArgs[ nIndex ].Name, aInitArgs[ nIndex ].Value );
+ xNameContainer->replaceByName( rInitArg.Name, rInitArg.Value );
}
}
@@ -160,13 +160,7 @@ bool
VbaGlobalsBase::hasServiceName( const OUString& serviceName )
{
uno::Sequence< OUString > sServiceNames( getAvailableServiceNames() );
- sal_Int32 nLen = sServiceNames.getLength();
- for ( sal_Int32 index = 0; index < nLen; ++index )
- {
- if ( sServiceNames[ index ] == serviceName )
- return true;
- }
- return false;
+ return comphelper::findValue(sServiceNames, serviceName) != -1;
}
diff --git a/vbahelper/source/vbahelper/vbahelper.cxx b/vbahelper/source/vbahelper/vbahelper.cxx
index 28459c87db78..b55ad65c4fae 100644
--- a/vbahelper/source/vbahelper/vbahelper.cxx
+++ b/vbahelper/source/vbahelper/vbahelper.cxx
@@ -41,6 +41,7 @@
#include <comphelper/automationinvokedzone.hxx>
#include <comphelper/processfactory.hxx>
+#include <comphelper/sequence.hxx>
#include <i18nlangtag/languagetag.hxx>
#include <sfx2/objsh.hxx>
@@ -164,11 +165,7 @@ dispatchRequests (const uno::Reference< frame::XModel>& xModel, const OUString &
if ( nProps )
{
dispatchProps.realloc( nProps + 1 );
- // need to acquire pDest after realloc
- beans::PropertyValue* pDest = dispatchProps.getArray();
- const beans::PropertyValue* pSrc = sProps.getConstArray();
- for ( sal_Int32 index=0; index<nProps; ++index, ++pSrc, ++pDest )
- *pDest = *pSrc;
+ std::copy(sProps.begin(), sProps.end(), dispatchProps.begin());
}
if ( xDispatcher.is() )
@@ -517,21 +514,17 @@ ContainerUtilities::getUniqueName( const uno::Sequence< OUString >& _slist, con
OUString
ContainerUtilities::getUniqueName( const uno::Sequence< OUString >& _slist, const OUString& _sElementName, const OUString& _sSuffixSeparator, sal_Int32 _nStartSuffix)
{
- sal_Int32 a = _nStartSuffix;
- OUString scompname = _sElementName;
- sal_Int32 nLen = _slist.getLength();
- if ( nLen == 0 )
+ if ( !_slist.hasElements() )
return _sElementName;
+ OUString scompname = _sElementName;
+ sal_Int32 a = _nStartSuffix;
+
for (;;)
{
- for (sal_Int32 i = 0; i < nLen; i++)
- {
- if (FieldInList(_slist, scompname) == -1)
- {
- return scompname;
- }
- }
+ if (FieldInList(_slist, scompname) == -1)
+ return scompname;
+
scompname = _sElementName + _sSuffixSeparator + OUString::number( a++ );
}
}
@@ -539,20 +532,9 @@ ContainerUtilities::getUniqueName( const uno::Sequence< OUString >& _slist, cons
sal_Int32
ContainerUtilities::FieldInList( const uno::Sequence< OUString >& SearchList, const OUString& SearchString )
{
- sal_Int32 FieldLen = SearchList.getLength();
- sal_Int32 retvalue = -1;
- for (sal_Int32 i = 0; i < FieldLen; i++)
- {
- // I wonder why comparing lexicographically is done
- // when it's a match, is it interesting?
- if ( SearchList[i] == SearchString )
- {
- retvalue = i;
- break;
- }
- }
- return retvalue;
-
+ // I wonder why comparing lexicographically is done
+ // when it's a match, is it interesting?
+ return comphelper::findValue(SearchList, SearchString);
}
static bool NeedEsc(sal_Unicode cCode)
@@ -757,25 +739,21 @@ void setDefaultPropByIntrospection( const uno::Any& aObj, const uno::Any& aValue
uno::Any getPropertyValue( const uno::Sequence< beans::PropertyValue >& aProp, const OUString& aName )
{
- for ( sal_Int32 i = 0; i < aProp.getLength(); i++ )
- {
- if ( aProp[i].Name == aName )
- {
- return aProp[i].Value;
- }
- }
+ auto pProp = std::find_if(aProp.begin(), aProp.end(),
+ [&aName](const beans::PropertyValue& rProp) { return rProp.Name == aName; });
+ if (pProp != aProp.end())
+ return pProp->Value;
return uno::Any();
}
bool setPropertyValue( uno::Sequence< beans::PropertyValue >& aProp, const OUString& aName, const uno::Any& aValue )
{
- for ( sal_Int32 i = 0; i < aProp.getLength(); i++ )
+ auto pProp = std::find_if(aProp.begin(), aProp.end(),
+ [&aName](const beans::PropertyValue& rProp) { return rProp.Name == aName; });
+ if (pProp != aProp.end())
{
- if ( aProp[i].Name == aName )
- {
- aProp[i].Value = aValue;
- return true;
- }
+ pProp->Value = aValue;
+ return true;
}
return false;
}
diff --git a/vbahelper/source/vbahelper/vbashapes.cxx b/vbahelper/source/vbahelper/vbashapes.cxx
index c3eeeaaa7f99..59e0d9df1fb5 100644
--- a/vbahelper/source/vbahelper/vbashapes.cxx
+++ b/vbahelper/source/vbahelper/vbashapes.cxx
@@ -144,20 +144,19 @@ ScVbaShapes::getShapesByArrayIndices( const uno::Any& Index )
uno::Sequence< uno::Any > sIndices;
aConverted >>= sIndices;
XNamedObjectCollectionHelper< drawing::XShape >::XNamedVec aShapes;
- sal_Int32 nElems = sIndices.getLength();
- for( sal_Int32 index = 0; index < nElems; ++index )
+ for( const auto& rIndex : sIndices )
{
uno::Reference< drawing::XShape > xShape;
- if ( sIndices[ index ].getValueTypeClass() == uno::TypeClass_STRING )
+ if ( rIndex.getValueTypeClass() == uno::TypeClass_STRING )
{
OUString sName;
- sIndices[ index ] >>= sName;
+ rIndex >>= sName;
xShape.set( m_xNameAccess->getByName( sName ), uno::UNO_QUERY );
}
else
{
sal_Int32 nIndex = 0;
- sIndices[ index ] >>= nIndex;
+ rIndex >>= nIndex;
// adjust for 1 based mso indexing
xShape.set( m_xIndexAccess->getByIndex( nIndex - 1 ), uno::UNO_QUERY );