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

Noel Grandin noelgrandin at gmail.com
Mon Apr 4 09:15:53 UTC 2016


 sfx2/source/doc/doctemplates.cxx      |   34 +++++++++++++-------------
 sfx2/source/doc/doctemplateslocal.cxx |   43 +++++++++++++---------------------
 sfx2/source/doc/doctemplateslocal.hxx |   13 +++++-----
 sfx2/source/doc/sfxbasemodel.cxx      |   35 +++++++--------------------
 4 files changed, 51 insertions(+), 74 deletions(-)

New commits:
commit 3efd7a07cbccd03ecb289e95fb9343460ace4a7f
Author: Noel Grandin <noelgrandin at gmail.com>
Date:   Thu Mar 31 20:29:21 2016 +0200

    sequence->vector in sfx2
    
    Change-Id: I31c3075db663253b37f0a8dc64338ec6f6172801
    Reviewed-on: https://gerrit.libreoffice.org/23755
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noelgrandin at gmail.com>

diff --git a/sfx2/source/doc/doctemplates.cxx b/sfx2/source/doc/doctemplates.cxx
index cfe527e..175354c1 100644
--- a/sfx2/source/doc/doctemplates.cxx
+++ b/sfx2/source/doc/doctemplates.cxx
@@ -218,7 +218,7 @@ class SfxDocTplService_Impl
                                                                 const OUString& aPrefix,
                                                                 const OUString& aExt );
 
-    uno::Sequence< beans::StringPair > ReadUINamesForTemplateDir_Impl( const OUString& aUserPath );
+    std::vector< beans::StringPair > ReadUINamesForTemplateDir_Impl( const OUString& aUserPath );
     bool                    UpdateUINamesForTemplateDir_Impl( const OUString& aUserPath,
                                                                   const OUString& aGroupName,
                                                                   const OUString& aNewFolderName );
@@ -229,7 +229,7 @@ class SfxDocTplService_Impl
     void                    RemoveUINamesForTemplateDir_Impl( const OUString& aUserPath,
                                                                   const OUString& aGroupName );
     bool                    WriteUINamesForTemplateDir_Impl( const OUString& aUserPath,
-                                                                const uno::Sequence< beans::StringPair >& aUINames );
+                                                                const std::vector< beans::StringPair >& aUINames );
 
     OUString                CreateNewGroupFsys( const OUString& rGroupName, Content& aGroup );
 
@@ -1215,7 +1215,7 @@ void SfxDocTplService_Impl::doUpdate()
 }
 
 
-uno::Sequence< beans::StringPair > SfxDocTplService_Impl::ReadUINamesForTemplateDir_Impl( const OUString& aUserPath )
+std::vector< beans::StringPair > SfxDocTplService_Impl::ReadUINamesForTemplateDir_Impl( const OUString& aUserPath )
 {
     INetURLObject aLocObj( aUserPath );
     aLocObj.insertName( "groupuinames.xml", false,
@@ -1224,7 +1224,7 @@ uno::Sequence< beans::StringPair > SfxDocTplService_Impl::ReadUINamesForTemplate
     Content aLocContent;
 
     // TODO/LATER: Use hashmap in future
-    uno::Sequence< beans::StringPair > aUINames;
+    std::vector< beans::StringPair > aUINames;
     if ( Content::create( aLocObj.GetMainURL( INetURLObject::NO_DECODE ), uno::Reference < ucb::XCommandEnvironment >(), comphelper::getProcessComponentContext(), aLocContent ) )
     {
         try
@@ -1245,15 +1245,15 @@ bool SfxDocTplService_Impl::UpdateUINamesForTemplateDir_Impl( const OUString& aU
                                                                   const OUString& aGroupName,
                                                                   const OUString& aNewFolderName )
 {
-    uno::Sequence< beans::StringPair > aUINames = ReadUINamesForTemplateDir_Impl( aUserPath );
-    sal_Int32 nLen = aUINames.getLength();
+    std::vector< beans::StringPair > aUINames = ReadUINamesForTemplateDir_Impl( aUserPath );
+    sal_Int32 nLen = aUINames.size();
 
     // it is possible that the name is used already, but it should be checked before
     for ( sal_Int32 nInd = 0; nInd < nLen; nInd++ )
         if ( aUINames[nInd].First.equals( aNewFolderName ) )
             return false;
 
-    aUINames.realloc( ++nLen );
+    aUINames.resize( ++nLen );
     aUINames[nLen-1].First = aNewFolderName;
     aUINames[nLen-1].Second = aGroupName;
 
@@ -1266,8 +1266,8 @@ bool SfxDocTplService_Impl::ReplaceUINamesForTemplateDir_Impl( const OUString& a
                                                                   const OUString& aOldGroupName,
                                                                   const OUString& aNewGroupName )
 {
-    uno::Sequence< beans::StringPair > aUINames = ReadUINamesForTemplateDir_Impl( aUserPath );
-    sal_Int32 nLen = aUINames.getLength();
+    std::vector< beans::StringPair > aUINames = ReadUINamesForTemplateDir_Impl( aUserPath );
+    sal_Int32 nLen = aUINames.size();
 
     bool bChanged = false;
     for ( sal_Int32 nInd = 0; nInd < nLen; nInd++ )
@@ -1279,7 +1279,7 @@ bool SfxDocTplService_Impl::ReplaceUINamesForTemplateDir_Impl( const OUString& a
 
     if ( !bChanged )
     {
-        aUINames.realloc( ++nLen );
+        aUINames.resize( ++nLen );
         aUINames[nLen-1].First = aDefaultFsysGroupName;
         aUINames[nLen-1].Second = aNewGroupName;
     }
@@ -1290,9 +1290,9 @@ bool SfxDocTplService_Impl::ReplaceUINamesForTemplateDir_Impl( const OUString& a
 void SfxDocTplService_Impl::RemoveUINamesForTemplateDir_Impl( const OUString& aUserPath,
                                                                   const OUString& aGroupName )
 {
-    uno::Sequence< beans::StringPair > aUINames = ReadUINamesForTemplateDir_Impl( aUserPath );
-    sal_Int32 nLen = aUINames.getLength();
-    uno::Sequence< beans::StringPair > aNewUINames( nLen );
+    std::vector< beans::StringPair > aUINames = ReadUINamesForTemplateDir_Impl( aUserPath );
+    sal_Int32 nLen = aUINames.size();
+    std::vector< beans::StringPair > aNewUINames( nLen );
     sal_Int32 nNewLen = 0;
 
     bool bChanged = false;
@@ -1306,14 +1306,14 @@ void SfxDocTplService_Impl::RemoveUINamesForTemplateDir_Impl( const OUString& aU
             aNewUINames[nNewLen-1].Second = aUINames[nInd].Second;
         }
 
-    aNewUINames.realloc( nNewLen );
+    aNewUINames.resize( nNewLen );
 
     !bChanged || WriteUINamesForTemplateDir_Impl( aUserPath, aNewUINames );
 }
 
 
 bool SfxDocTplService_Impl::WriteUINamesForTemplateDir_Impl( const OUString& aUserPath,
-                                                                const uno::Sequence< beans::StringPair >& aUINames )
+                                                             const std::vector< beans::StringPair >& aUINames )
 {
     bool bResult = false;
     try {
@@ -2564,7 +2564,7 @@ void SfxDocTplService_Impl::createFromContent( GroupList_Impl& rList,
     INetURLObject aLayerObj( aTargetURL );
 
     // TODO/LATER: Use hashmap in future
-    uno::Sequence< beans::StringPair > aUINames;
+    std::vector< beans::StringPair > aUINames;
     if ( !bHierarchy )
         aUINames = ReadUINamesForTemplateDir_Impl( aLayerObj.GetMainURL( INetURLObject::NO_DECODE ) );
 
@@ -2596,7 +2596,7 @@ void SfxDocTplService_Impl::createFromContent( GroupList_Impl& rList,
                 else
                 {
                     OUString aUITitle;
-                    for ( sal_Int32 nInd = 0; nInd < aUINames.getLength(); nInd++ )
+                    for ( size_t nInd = 0; nInd < aUINames.size(); nInd++ )
                         if ( aUINames[nInd].First.equals( aTitle ) )
                         {
                             aUITitle = aUINames[nInd].Second;
diff --git a/sfx2/source/doc/doctemplateslocal.cxx b/sfx2/source/doc/doctemplateslocal.cxx
index d65d970..63017bb 100644
--- a/sfx2/source/doc/doctemplateslocal.cxx
+++ b/sfx2/source/doc/doctemplateslocal.cxx
@@ -33,7 +33,7 @@
 using namespace ::com::sun::star;
 
 
-uno::Sequence< beans::StringPair > DocTemplLocaleHelper::ReadGroupLocalizationSequence( const uno::Reference< io::XInputStream >& xInStream, const uno::Reference< uno::XComponentContext > xContext )
+std::vector< beans::StringPair > DocTemplLocaleHelper::ReadGroupLocalizationSequence( const uno::Reference< io::XInputStream >& xInStream, const uno::Reference< uno::XComponentContext > xContext )
     throw( uno::Exception )
 {
     OUString aStringID = "groupuinames.xml";
@@ -41,7 +41,7 @@ uno::Sequence< beans::StringPair > DocTemplLocaleHelper::ReadGroupLocalizationSe
 }
 
 
-void SAL_CALL DocTemplLocaleHelper::WriteGroupLocalizationSequence( const uno::Reference< io::XOutputStream >& xOutStream, const uno::Sequence< beans::StringPair >& aSequence, const uno::Reference< uno::XComponentContext > xContext )
+void SAL_CALL DocTemplLocaleHelper::WriteGroupLocalizationSequence( const uno::Reference< io::XOutputStream >& xOutStream, const std::vector< beans::StringPair >& aSequence, const uno::Reference< uno::XComponentContext > xContext )
     throw( uno::Exception )
 {
     if ( !xOutStream.is() )
@@ -70,7 +70,7 @@ void SAL_CALL DocTemplLocaleHelper::WriteGroupLocalizationSequence( const uno::R
     xWriterHandler->startDocument();
     xWriterHandler->startElement( aGroupListElement, xRootAttrList );
 
-    for ( sal_Int32 nInd = 0; nInd < aSequence.getLength(); nInd++ )
+    for ( size_t nInd = 0; nInd < aSequence.size(); nInd++ )
     {
         ::comphelper::AttributeList *pAttrList = new ::comphelper::AttributeList;
         uno::Reference< xml::sax::XAttributeList > xAttrList( pAttrList );
@@ -88,7 +88,7 @@ void SAL_CALL DocTemplLocaleHelper::WriteGroupLocalizationSequence( const uno::R
 }
 
 
-uno::Sequence< beans::StringPair > SAL_CALL DocTemplLocaleHelper::ReadLocalizationSequence_Impl( const uno::Reference< io::XInputStream >& xInStream, const OUString& aStringID, const uno::Reference< uno::XComponentContext > xContext )
+std::vector< beans::StringPair > SAL_CALL DocTemplLocaleHelper::ReadLocalizationSequence_Impl( const uno::Reference< io::XInputStream >& xInStream, const OUString& aStringID, const uno::Reference< uno::XComponentContext > xContext )
     throw( uno::Exception )
 {
     if ( !xContext.is() || !xInStream.is() )
@@ -123,9 +123,9 @@ DocTemplLocaleHelper::~DocTemplLocaleHelper()
 }
 
 
-uno::Sequence< beans::StringPair > DocTemplLocaleHelper::GetParsingResult()
+std::vector< beans::StringPair > DocTemplLocaleHelper::GetParsingResult()
 {
-    if ( m_aElementsSeq.getLength() )
+    if ( !m_aElementsSeq.empty() )
         throw uno::RuntimeException(); // the parsing has still not finished!
 
     return m_aResultSeq;
@@ -149,27 +149,22 @@ void SAL_CALL DocTemplLocaleHelper::startElement( const OUString& aName, const u
 {
     if ( aName == m_aGroupListElement )
     {
-        sal_Int32 nNewLength = m_aElementsSeq.getLength() + 1;
-
-        if ( nNewLength != 1 )
+        if ( m_aElementsSeq.size() != 0 )
             throw xml::sax::SAXException(); // TODO: this element must be the first level element
 
-        m_aElementsSeq.realloc( nNewLength );
-        m_aElementsSeq[nNewLength-1] = aName;
+        m_aElementsSeq.push_back( aName );
 
         return; // nothing to do
     }
     else if ( aName == m_aGroupElement )
     {
-        sal_Int32 nNewLength = m_aElementsSeq.getLength() + 1;
-        if ( nNewLength != 2 )
+        if ( m_aElementsSeq.size() != 1 )
             throw xml::sax::SAXException(); // TODO: this element must be the second level element
 
-        m_aElementsSeq.realloc( nNewLength );
-        m_aElementsSeq[nNewLength-1] = aName;
+        m_aElementsSeq.push_back( aName );
 
-        sal_Int32 nNewEntryNum = m_aResultSeq.getLength() + 1;
-        m_aResultSeq.realloc( nNewEntryNum );
+        sal_Int32 nNewEntryNum = m_aResultSeq.size() + 1;
+        m_aResultSeq.resize( nNewEntryNum );
 
         OUString aNameValue = xAttribs->getValueByName( m_aNameAttr );
         if ( aNameValue.isEmpty() )
@@ -185,13 +180,10 @@ void SAL_CALL DocTemplLocaleHelper::startElement( const OUString& aName, const u
     else
     {
         // accept future extensions
-        sal_Int32 nNewLength = m_aElementsSeq.getLength() + 1;
-
-        if ( !nNewLength )
+        if ( m_aElementsSeq.empty() )
             throw xml::sax::SAXException(); // TODO: the extension element must not be the first level element
 
-        m_aElementsSeq.realloc( nNewLength );
-        m_aElementsSeq[nNewLength-1] = aName;
+        m_aElementsSeq.push_back( aName );
     }
 }
 
@@ -199,14 +191,13 @@ void SAL_CALL DocTemplLocaleHelper::startElement( const OUString& aName, const u
 void SAL_CALL DocTemplLocaleHelper::endElement( const OUString& aName )
     throw( xml::sax::SAXException, uno::RuntimeException, std::exception )
 {
-    sal_Int32 nLength = m_aElementsSeq.getLength();
-    if ( nLength <= 0 )
+    if ( m_aElementsSeq.empty() )
         throw xml::sax::SAXException(); // TODO: no other end elements expected!
 
-    if ( !m_aElementsSeq[nLength-1].equals( aName ) )
+    if ( m_aElementsSeq.back() != aName )
         throw xml::sax::SAXException(); // TODO: unexpected element ended
 
-    m_aElementsSeq.realloc( nLength - 1 );
+    m_aElementsSeq.pop_back();
 }
 
 
diff --git a/sfx2/source/doc/doctemplateslocal.hxx b/sfx2/source/doc/doctemplateslocal.hxx
index a0a0748..53a9814 100644
--- a/sfx2/source/doc/doctemplateslocal.hxx
+++ b/sfx2/source/doc/doctemplateslocal.hxx
@@ -25,6 +25,7 @@
 #include <com/sun/star/io/XInputStream.hpp>
 #include <com/sun/star/io/XOutputStream.hpp>
 #include <cppuhelper/implbase.hxx>
+#include <vector>
 
 
 class DocTemplLocaleHelper : public cppu::WeakImplHelper < css::xml::sax::XDocumentHandler >
@@ -35,13 +36,13 @@ class DocTemplLocaleHelper : public cppu::WeakImplHelper < css::xml::sax::XDocum
     OUString m_aNameAttr;
     OUString m_aUINameAttr;
 
-    css::uno::Sequence< css::beans::StringPair > m_aResultSeq;
-    css::uno::Sequence< OUString > m_aElementsSeq; // stack of elements being parsed
+    std::vector< css::beans::StringPair > m_aResultSeq;
+    std::vector< OUString > m_aElementsSeq; // stack of elements being parsed
 
     DocTemplLocaleHelper();
-    css::uno::Sequence< css::beans::StringPair > GetParsingResult();
+    std::vector< css::beans::StringPair > GetParsingResult();
 
-    static css::uno::Sequence< css::beans::StringPair > SAL_CALL ReadLocalizationSequence_Impl( const css::uno::Reference< css::io::XInputStream >& xInStream, const OUString& aStringID, const css::uno::Reference< css::uno::XComponentContext > xContext )
+    static std::vector< css::beans::StringPair > SAL_CALL ReadLocalizationSequence_Impl( const css::uno::Reference< css::io::XInputStream >& xInStream, const OUString& aStringID, const css::uno::Reference< css::uno::XComponentContext > xContext )
     throw( css::uno::Exception );
 
 public:
@@ -49,7 +50,7 @@ public:
 
     // returns sequence of pairs ( GroupName, GroupUIName )
     static
-    css::uno::Sequence< css::beans::StringPair >
+    std::vector< css::beans::StringPair >
     ReadGroupLocalizationSequence(
         const css::uno::Reference< css::io::XInputStream >& xInStream,
         const css::uno::Reference< css::uno::XComponentContext > xContext )
@@ -59,7 +60,7 @@ public:
     static
     void SAL_CALL WriteGroupLocalizationSequence(
         const css::uno::Reference< css::io::XOutputStream >& xOutStream,
-        const css::uno::Sequence< css::beans::StringPair >& aSequence,
+        const std::vector< css::beans::StringPair >& aSequence,
         const css::uno::Reference< css::uno::XComponentContext > xContext )
             throw( css::uno::Exception );
 
diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx
index 8bb5c08..1d5b4e8 100644
--- a/sfx2/source/doc/sfxbasemodel.cxx
+++ b/sfx2/source/doc/sfxbasemodel.cxx
@@ -196,7 +196,7 @@ struct IMPL_SfxBaseModel_DataContainer : public ::sfx2::IModifiableDocument
     Reference< script::XStarBasicAccess >                      m_xStarBasicAccess       ;
     Reference< container::XNameReplace >                       m_xEvents                ;
     Sequence< beans::PropertyValue>                            m_seqArguments           ;
-    Sequence< Reference< frame::XController > >                m_seqControllers         ;
+    std::vector< Reference< frame::XController > >             m_seqControllers         ;
     Reference< container::XIndexAccess >                       m_contViewData           ;
     sal_uInt16                                                 m_nControllerLockCount   ;
     bool                                                       m_bClosed                ;
@@ -771,7 +771,7 @@ void SAL_CALL SfxBaseModel::dispose() throw(RuntimeException, std::exception)
     }
 
     m_pData->m_xCurrent.clear();
-    m_pData->m_seqControllers.realloc(0);
+    m_pData->m_seqControllers.clear();
 
     // m_pData member must be set to zero before 0delete is called to
     // force disposed exception whenever someone tries to access our
@@ -1063,14 +1063,9 @@ void SAL_CALL SfxBaseModel::connectController( const Reference< frame::XControll
     if ( !xController.is() )
         return;
 
-    sal_uInt32 nOldCount = m_pData->m_seqControllers.getLength();
-    Sequence< Reference< frame::XController > > aNewSeq( nOldCount + 1 );
-    for ( sal_uInt32 n = 0; n < nOldCount; n++ )
-        aNewSeq.getArray()[n] = m_pData->m_seqControllers.getConstArray()[n];
-    aNewSeq.getArray()[nOldCount] = xController;
-    m_pData->m_seqControllers = aNewSeq;
+    m_pData->m_seqControllers.push_back(xController);
 
-    if ( m_pData->m_seqControllers.getLength() == 1 )
+    if ( m_pData->m_seqControllers.size() == 1 )
     {
         SfxViewFrame* pViewFrame = SfxViewFrame::Get( xController, GetObjectShell() );
         ENSURE_OR_THROW( pViewFrame, "SFX document without SFX view!?" );
@@ -1089,21 +1084,11 @@ void SAL_CALL SfxBaseModel::disconnectController( const Reference< frame::XContr
 {
     SfxModelGuard aGuard( *this );
 
-    sal_uInt32 nOldCount = m_pData->m_seqControllers.getLength();
-    if ( !nOldCount )
+    if ( m_pData->m_seqControllers.empty() )
         return;
 
-    Sequence< Reference< frame::XController > > aNewSeq( nOldCount - 1 );
-    for ( sal_uInt32 nOld = 0, nNew = 0; nOld < nOldCount; ++nOld )
-    {
-        if ( xController != m_pData->m_seqControllers.getConstArray()[nOld] )
-        {
-            aNewSeq.getArray()[nNew] = m_pData->m_seqControllers.getConstArray()[nOld];
-            ++nNew;
-        }
-    }
-
-    m_pData->m_seqControllers = aNewSeq;
+    auto& vec = m_pData->m_seqControllers;
+    vec.erase(std::remove(vec.begin(), vec.end(), xController), vec.end());
 
     if ( xController == m_pData->m_xCurrent )
         m_pData->m_xCurrent.clear();
@@ -1215,7 +1200,7 @@ Reference< frame::XController > SAL_CALL SfxBaseModel::getCurrentController() th
         return m_pData->m_xCurrent;
 
     // get the first controller of this model
-    return m_pData->m_seqControllers.getLength() ? m_pData->m_seqControllers.getConstArray()[0] : m_pData->m_xCurrent;
+    return !m_pData->m_seqControllers.empty() ? m_pData->m_seqControllers.front() : m_pData->m_xCurrent;
 }
 
 
@@ -3391,7 +3376,7 @@ Sequence< OUString > SAL_CALL SfxBaseModel::getDocumentSubStoragesNames()
     if ( !bSuccess )
         throw io::IOException();
 
-       return aResult;
+    return aResult;
 }
 
 
@@ -4085,7 +4070,7 @@ Reference< container::XEnumeration > SAL_CALL SfxBaseModel::getControllers()
 {
     SfxModelGuard aGuard( *this );
 
-    sal_Int32 c = m_pData->m_seqControllers.getLength();
+    sal_Int32 c = m_pData->m_seqControllers.size();
     sal_Int32 i = 0;
     Sequence< Any > lEnum(c);
     for (i=0; i<c; ++i)


More information about the Libreoffice-commits mailing list