[Libreoffice-commits] core.git: scripting/source sd/source sfx2/source stoc/source svl/source svtools/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Nov 22 11:47:22 UTC 2018


 scripting/source/vbaevents/eventhelper.cxx            |   11 +-
 sd/source/core/stlsheet.cxx                           |    4 
 sd/source/ui/framework/factories/BasicViewFactory.cxx |   11 +-
 sd/source/ui/unoidl/facreg.cxx                        |   20 ++--
 sfx2/source/appl/sfxhelp.cxx                          |   48 ++++-------
 sfx2/source/view/classificationhelper.cxx             |   11 +-
 sfx2/source/view/sfxbasecontroller.cxx                |   74 +++++++-----------
 stoc/source/javaloader/javaloader.cxx                 |   12 --
 svl/source/misc/inettype.cxx                          |   18 ++--
 svtools/source/config/apearcfg.cxx                    |   15 ---
 svtools/source/config/htmlcfg.cxx                     |   13 ---
 11 files changed, 88 insertions(+), 149 deletions(-)

New commits:
commit 06ad764cfb36ece7f054ecb786cc0395346a6a68
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Thu Nov 22 08:56:15 2018 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Thu Nov 22 12:46:56 2018 +0100

    improve function-local statics in scripting..svtools
    
    Change-Id: Idf3785a1fbc6fc5b8efbdc4cd363047709f3af91
    Reviewed-on: https://gerrit.libreoffice.org/63782
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/scripting/source/vbaevents/eventhelper.cxx b/scripting/source/vbaevents/eventhelper.cxx
index 86d941df9e74..408539cb7038 100644
--- a/scripting/source/vbaevents/eventhelper.cxx
+++ b/scripting/source/vbaevents/eventhelper.cxx
@@ -256,10 +256,9 @@ static TranslatePropMap aTranslatePropMap_Impl[] =
 
 static EventInfoHash& getEventTransInfo()
 {
-    static bool initialised = false;
-    static EventInfoHash eventTransInfo;
-    if ( !initialised )
+    static EventInfoHash eventTransInfo = [&]()
     {
+        EventInfoHash tmp;
         OUString sEventInfo;
         TranslatePropMap* pTransProp = aTranslatePropMap_Impl;
         int nCount = SAL_N_ELEMENTS(aTranslatePropMap_Impl);
@@ -275,10 +274,10 @@ static EventInfoHash& getEventTransInfo()
                 pTransProp++;
                 i++;
             }while(i < nCount && sEventInfo == pTransProp->sEventInfo);
-            eventTransInfo[sEventInfo] = infoList;
+            tmp[sEventInfo] = infoList;
         }
-        initialised = true;
-    }
+        return tmp;
+    }();
     return eventTransInfo;
 }
 
diff --git a/sd/source/core/stlsheet.cxx b/sd/source/core/stlsheet.cxx
index 24f365b30936..3df37e99da6e 100644
--- a/sd/source/core/stlsheet.cxx
+++ b/sd/source/core/stlsheet.cxx
@@ -958,9 +958,7 @@ void SAL_CALL SdStyleSheet::setParentStyle( const OUString& rParentName  )
 Reference< XPropertySetInfo > SdStyleSheet::getPropertySetInfo()
 {
     throwIfDisposed();
-    static Reference< XPropertySetInfo > xInfo;
-    if( !xInfo.is() )
-        xInfo = GetStylePropertySet().getPropertySetInfo();
+    static Reference< XPropertySetInfo > xInfo = GetStylePropertySet().getPropertySetInfo();
     return xInfo;
 }
 
diff --git a/sd/source/ui/framework/factories/BasicViewFactory.cxx b/sd/source/ui/framework/factories/BasicViewFactory.cxx
index 864f305e6009..d76eccbde220 100644
--- a/sd/source/ui/framework/factories/BasicViewFactory.cxx
+++ b/sd/source/ui/framework/factories/BasicViewFactory.cxx
@@ -439,17 +439,18 @@ bool BasicViewFactory::IsCacheable (const std::shared_ptr<ViewDescriptor>& rpDes
     Reference<XRelocatableResource> xResource (rpDescriptor->mxView, UNO_QUERY);
     if (xResource.is())
     {
-        static ::std::vector<Reference<XResourceId> > s_aCacheableResources;
-        if (s_aCacheableResources.empty() )
+        static ::std::vector<Reference<XResourceId> > s_aCacheableResources = [&]()
         {
+            ::std::vector<Reference<XResourceId> > tmp;
             std::shared_ptr<FrameworkHelper> pHelper (FrameworkHelper::Instance(*mpBase));
 
             // The slide sorter and the task panel are cacheable and relocatable.
-            s_aCacheableResources.push_back(FrameworkHelper::CreateResourceId(
+            tmp.push_back(FrameworkHelper::CreateResourceId(
                 FrameworkHelper::msSlideSorterURL, FrameworkHelper::msLeftDrawPaneURL));
-            s_aCacheableResources.push_back(FrameworkHelper::CreateResourceId(
+            tmp.push_back(FrameworkHelper::CreateResourceId(
                 FrameworkHelper::msSlideSorterURL, FrameworkHelper::msLeftImpressPaneURL));
-        }
+            return tmp;
+        }();
 
         ::std::vector<Reference<XResourceId> >::const_iterator iId;
         for (iId=s_aCacheableResources.begin(); iId!=s_aCacheableResources.end(); ++iId)
diff --git a/sd/source/ui/unoidl/facreg.cxx b/sd/source/ui/unoidl/facreg.cxx
index 7b69d936ea9e..d4dc0533bfcf 100644
--- a/sd/source/ui/unoidl/facreg.cxx
+++ b/sd/source/ui/unoidl/facreg.cxx
@@ -44,16 +44,14 @@ enum FactoryId
 typedef std::unordered_map<OUString, FactoryId> FactoryMap;
 
 namespace {
-static std::shared_ptr<FactoryMap> spFactoryMap;
-std::shared_ptr<FactoryMap> const & GetFactoryMap()
+FactoryMap const & GetFactoryMap()
 {
-    if (spFactoryMap == nullptr)
+    static FactoryMap aFactoryMap
     {
-        spFactoryMap.reset(new FactoryMap);
-        (*spFactoryMap)[SdDrawingDocument_getImplementationName()] = SdDrawingDocumentFactoryId;
-        (*spFactoryMap)[SdPresentationDocument_getImplementationName()] = SdPresentationDocumentFactoryId;
-    }
-    return spFactoryMap;
+        { SdDrawingDocument_getImplementationName(), SdDrawingDocumentFactoryId },
+        { SdPresentationDocument_getImplementationName(), SdPresentationDocumentFactoryId }
+    };
+    return aFactoryMap;
 };
 } // end of anonymous namespace
 
@@ -74,10 +72,10 @@ SAL_DLLPUBLIC_EXPORT void * sd_component_getFactory(
         uno::Reference<lang::XSingleServiceFactory> xFactory;
         uno::Reference<lang::XSingleComponentFactory> xComponentFactory;
 
-        const std::shared_ptr<FactoryMap>& pFactoryMap (GetFactoryMap());
+        const FactoryMap& rFactoryMap (GetFactoryMap());
         OUString sImplementationName (OUString::createFromAscii(pImplName));
-        FactoryMap::const_iterator iFactory (pFactoryMap->find(sImplementationName));
-        if (iFactory != pFactoryMap->end())
+        FactoryMap::const_iterator iFactory (rFactoryMap.find(sImplementationName));
+        if (iFactory != rFactoryMap.end())
         {
             switch (iFactory->second)
             {
diff --git a/sfx2/source/appl/sfxhelp.cxx b/sfx2/source/appl/sfxhelp.cxx
index d52f74aa4a96..30aa68b840f4 100644
--- a/sfx2/source/appl/sfxhelp.cxx
+++ b/sfx2/source/appl/sfxhelp.cxx
@@ -117,25 +117,24 @@ namespace {
 /// Root path of the help.
 OUString const & getHelpRootURL()
 {
-    static OUString s_instURL;
-    if (!s_instURL.isEmpty())
-        return s_instURL;
-
-    s_instURL = officecfg::Office::Common::Path::Current::Help::get(comphelper::getProcessComponentContext());
-    if (s_instURL.isEmpty())
+    static OUString const s_instURL = [&]()
     {
-        // try to determine path from default
-        s_instURL = "$(instpath)/" LIBO_SHARE_HELP_FOLDER;
-    }
-
-    // replace anything like $(instpath);
-    SvtPathOptions aOptions;
-    s_instURL = aOptions.SubstituteVariable(s_instURL);
+        OUString tmp = officecfg::Office::Common::Path::Current::Help::get(comphelper::getProcessComponentContext());
+        if (tmp.isEmpty())
+        {
+            // try to determine path from default
+            tmp = "$(instpath)/" LIBO_SHARE_HELP_FOLDER;
+        }
 
-    OUString url;
-    if (osl::FileBase::getFileURLFromSystemPath(s_instURL, url) == osl::FileBase::E_None)
-        s_instURL = url;
+        // replace anything like $(instpath);
+        SvtPathOptions aOptions;
+        tmp = aOptions.SubstituteVariable(tmp);
 
+        OUString url;
+        if (osl::FileBase::getFileURLFromSystemPath(tmp, url) == osl::FileBase::E_None)
+            tmp = url;
+        return tmp;
+    }();
     return s_instURL;
 }
 
@@ -161,13 +160,8 @@ bool impl_hasHelpInstalled()
     if (comphelper::LibreOfficeKit::isActive())
         return false;
 
-    static OUString aLocaleStr;
-
-    if (aLocaleStr.isEmpty())
-    {
         // detect installed locale
-        aLocaleStr = HelpLocaleString();
-    }
+    static OUString const aLocaleStr = HelpLocaleString();
 
     OUString helpRootURL = getHelpRootURL() + "/" + aLocaleStr + "/err.html";
     bool bOK = false;
@@ -187,13 +181,8 @@ bool impl_hasHTMLHelpInstalled()
     if (comphelper::LibreOfficeKit::isActive())
         return false;
 
-    static OUString aLocaleStr;
-
-    if (aLocaleStr.isEmpty())
-    {
-        // detect installed locale
-        aLocaleStr = HelpLocaleString();
-    }
+    // detect installed locale
+    static OUString const aLocaleStr = HelpLocaleString();
 
     OUString helpRootURL = getHelpRootURL() + "/" + aLocaleStr + "/text";
     bool bOK = impl_checkHelpLocalePath( helpRootURL );
@@ -204,7 +193,6 @@ bool impl_hasHTMLHelpInstalled()
 } // namespace
 
 /// Return the locale we prefer for displaying help
-// static OUString const & HelpLocaleString()
 static OUString const & HelpLocaleString()
 {
     if (comphelper::LibreOfficeKit::isActive())
diff --git a/sfx2/source/view/classificationhelper.cxx b/sfx2/source/view/classificationhelper.cxx
index 049f8008c4e5..04b414d674c5 100644
--- a/sfx2/source/view/classificationhelper.cxx
+++ b/sfx2/source/view/classificationhelper.cxx
@@ -762,13 +762,12 @@ sal_Int32 SfxClassificationHelper::GetImpactLevel()
     }
     else if (aScale == "FIPS-199")
     {
-        static std::map<OUString, sal_Int32> aValues;
-        if (aValues.empty())
+        static std::map<OUString, sal_Int32> const aValues
         {
-            aValues["Low"] = 0;
-            aValues["Moderate"] = 1;
-            aValues["High"] = 2;
-        }
+            { "Low", 0 },
+            { "Moderate", 1 },
+            { "High", 2 }
+        };
         auto itValues = aValues.find(aLevel);
         if (itValues == aValues.end())
             return nRet;
diff --git a/sfx2/source/view/sfxbasecontroller.cxx b/sfx2/source/view/sfxbasecontroller.cxx
index a15f07f3831c..697a78450279 100644
--- a/sfx2/source/view/sfxbasecontroller.cxx
+++ b/sfx2/source/view/sfxbasecontroller.cxx
@@ -113,56 +113,40 @@ struct GroupIDToCommandGroup
     sal_Int16 const   nCommandGroup;
 };
 
-static bool                 bGroupIDMapInitialized = false;
-static const GroupIDToCommandGroup    GroupIDCommandGroupMap[] =
-{
-    { SfxGroupId::Intern        ,   frame::CommandGroup::INTERNAL       },
-    { SfxGroupId::Application   ,   frame::CommandGroup::APPLICATION    },
-    { SfxGroupId::Document      ,   frame::CommandGroup::DOCUMENT       },
-    { SfxGroupId::View          ,   frame::CommandGroup::VIEW           },
-    { SfxGroupId::Edit          ,   frame::CommandGroup::EDIT           },
-    { SfxGroupId::Macro         ,   frame::CommandGroup::MACRO          },
-    { SfxGroupId::Options       ,   frame::CommandGroup::OPTIONS        },
-    { SfxGroupId::Math          ,   frame::CommandGroup::MATH           },
-    { SfxGroupId::Navigator     ,   frame::CommandGroup::NAVIGATOR      },
-    { SfxGroupId::Insert        ,   frame::CommandGroup::INSERT         },
-    { SfxGroupId::Format        ,   frame::CommandGroup::FORMAT         },
-    { SfxGroupId::Template      ,   frame::CommandGroup::TEMPLATE       },
-    { SfxGroupId::Text          ,   frame::CommandGroup::TEXT           },
-    { SfxGroupId::Frame         ,   frame::CommandGroup::FRAME          },
-    { SfxGroupId::Graphic       ,   frame::CommandGroup::GRAPHIC        },
-    { SfxGroupId::Table         ,   frame::CommandGroup::TABLE          },
-    { SfxGroupId::Enumeration   ,   frame::CommandGroup::ENUMERATION    },
-    { SfxGroupId::Data          ,   frame::CommandGroup::DATA           },
-    { SfxGroupId::Special       ,   frame::CommandGroup::SPECIAL        },
-    { SfxGroupId::Image         ,   frame::CommandGroup::IMAGE          },
-    { SfxGroupId::Chart         ,   frame::CommandGroup::CHART          },
-    { SfxGroupId::Explorer      ,   frame::CommandGroup::EXPLORER       },
-    { SfxGroupId::Connector     ,   frame::CommandGroup::CONNECTOR      },
-    { SfxGroupId::Modify        ,   frame::CommandGroup::MODIFY         },
-    { SfxGroupId::Drawing       ,   frame::CommandGroup::DRAWING        },
-    { SfxGroupId::Controls      ,   frame::CommandGroup::CONTROLS       },
-    { SfxGroupId::NONE,   0                                             }
-};
-
 typedef std::unordered_map< SfxGroupId, sal_Int16 > GroupHashMap;
 
 sal_Int16 MapGroupIDToCommandGroup( SfxGroupId nGroupID )
 {
-    static GroupHashMap s_aHashMap;
-
-    if ( !bGroupIDMapInitialized )
+    static GroupHashMap s_aHashMap
     {
-        sal_Int32 i = 0;
-        while ( GroupIDCommandGroupMap[i].nGroupID != SfxGroupId::NONE )
-        {
-            s_aHashMap.emplace(
-                GroupIDCommandGroupMap[i].nGroupID,
-                GroupIDCommandGroupMap[i].nCommandGroup );
-            ++i;
-        }
-        bGroupIDMapInitialized = true;
-    }
+        { SfxGroupId::Intern        ,   frame::CommandGroup::INTERNAL       },
+        { SfxGroupId::Application   ,   frame::CommandGroup::APPLICATION    },
+        { SfxGroupId::Document      ,   frame::CommandGroup::DOCUMENT       },
+        { SfxGroupId::View          ,   frame::CommandGroup::VIEW           },
+        { SfxGroupId::Edit          ,   frame::CommandGroup::EDIT           },
+        { SfxGroupId::Macro         ,   frame::CommandGroup::MACRO          },
+        { SfxGroupId::Options       ,   frame::CommandGroup::OPTIONS        },
+        { SfxGroupId::Math          ,   frame::CommandGroup::MATH           },
+        { SfxGroupId::Navigator     ,   frame::CommandGroup::NAVIGATOR      },
+        { SfxGroupId::Insert        ,   frame::CommandGroup::INSERT         },
+        { SfxGroupId::Format        ,   frame::CommandGroup::FORMAT         },
+        { SfxGroupId::Template      ,   frame::CommandGroup::TEMPLATE       },
+        { SfxGroupId::Text          ,   frame::CommandGroup::TEXT           },
+        { SfxGroupId::Frame         ,   frame::CommandGroup::FRAME          },
+        { SfxGroupId::Graphic       ,   frame::CommandGroup::GRAPHIC        },
+        { SfxGroupId::Table         ,   frame::CommandGroup::TABLE          },
+        { SfxGroupId::Enumeration   ,   frame::CommandGroup::ENUMERATION    },
+        { SfxGroupId::Data          ,   frame::CommandGroup::DATA           },
+        { SfxGroupId::Special       ,   frame::CommandGroup::SPECIAL        },
+        { SfxGroupId::Image         ,   frame::CommandGroup::IMAGE          },
+        { SfxGroupId::Chart         ,   frame::CommandGroup::CHART          },
+        { SfxGroupId::Explorer      ,   frame::CommandGroup::EXPLORER       },
+        { SfxGroupId::Connector     ,   frame::CommandGroup::CONNECTOR      },
+        { SfxGroupId::Modify        ,   frame::CommandGroup::MODIFY         },
+        { SfxGroupId::Drawing       ,   frame::CommandGroup::DRAWING        },
+        { SfxGroupId::Controls      ,   frame::CommandGroup::CONTROLS       },
+    };
+
 
     GroupHashMap::const_iterator pIter = s_aHashMap.find( nGroupID );
     if ( pIter != s_aHashMap.end() )
diff --git a/stoc/source/javaloader/javaloader.cxx b/stoc/source/javaloader/javaloader.cxx
index 34d80b4f3b52..19dc5d875049 100644
--- a/stoc/source/javaloader/javaloader.cxx
+++ b/stoc/source/javaloader/javaloader.cxx
@@ -346,16 +346,8 @@ static css::uno::Reference<XInterface> JavaComponentLoader_CreateInstance(const
         MutexGuard guard( getInitMutex() );
         // The javaloader is never destroyed and there can be only one!
         // Note that the first context wins ....
-        static css::uno::Reference< XInterface > xStaticRef;
-        if( xStaticRef.is() )
-        {
-            xRet = xStaticRef;
-        }
-        else
-        {
-            xRet = *new JavaComponentLoader(xCtx);
-            xStaticRef = xRet;
-        }
+        static css::uno::Reference< XInterface > xStaticRef = *new JavaComponentLoader(xCtx);
+        xRet = xStaticRef;
     }
     catch(const RuntimeException & runtimeException) {
         SAL_INFO(
diff --git a/svl/source/misc/inettype.cxx b/svl/source/misc/inettype.cxx
index 3480a55741a3..2704d949a8d5 100644
--- a/svl/source/misc/inettype.cxx
+++ b/svl/source/misc/inettype.cxx
@@ -19,6 +19,7 @@
 
 #include <sal/config.h>
 
+#include <array>
 #include <utility>
 #include <map>
 
@@ -281,17 +282,16 @@ INetContentType INetContentTypes::GetContentType(OUString const & rTypeName)
 //static
 OUString INetContentTypes::GetContentType(INetContentType eTypeID)
 {
-    static sal_Char const * aMap[CONTENT_TYPE_LAST + 1];
-    static bool bInitialized = false;
-    if (!bInitialized)
+    static std::array<sal_Char const *, CONTENT_TYPE_LAST + 1> aMap = [&]()
     {
+        std::array<sal_Char const *, CONTENT_TYPE_LAST + 1> tmp;
         for (std::size_t i = 0; i <= CONTENT_TYPE_LAST; ++i)
-            aMap[aStaticTypeNameMap[i].m_eTypeID] = aStaticTypeNameMap[i].m_pTypeName;
-        aMap[CONTENT_TYPE_UNKNOWN] = CONTENT_TYPE_STR_APP_OCTSTREAM;
-        aMap[CONTENT_TYPE_TEXT_PLAIN] = CONTENT_TYPE_STR_TEXT_PLAIN
-                                            "; charset=iso-8859-1";
-        bInitialized = true;
-    }
+            tmp[aStaticTypeNameMap[i].m_eTypeID] = aStaticTypeNameMap[i].m_pTypeName;
+        tmp[CONTENT_TYPE_UNKNOWN] = CONTENT_TYPE_STR_APP_OCTSTREAM;
+        tmp[CONTENT_TYPE_TEXT_PLAIN] = CONTENT_TYPE_STR_TEXT_PLAIN
+                                        "; charset=iso-8859-1";
+        return tmp;
+    }();
 
     OUString aTypeName = eTypeID <= CONTENT_TYPE_LAST ? OUString::createFromAscii(aMap[eTypeID])
                                                       : OUString();
diff --git a/svtools/source/config/apearcfg.cxx b/svtools/source/config/apearcfg.cxx
index b98a8cbad17e..4bfe5595012c 100644
--- a/svtools/source/config/apearcfg.cxx
+++ b/svtools/source/config/apearcfg.cxx
@@ -94,11 +94,8 @@ SvtTabAppearanceCfg::~SvtTabAppearanceCfg( )
 
 const Sequence<OUString>& SvtTabAppearanceCfg::GetPropertyNames()
 {
-    static Sequence<OUString> aNames;
-    if(!aNames.getLength())
+    static Sequence<OUString> const aNames
     {
-        static const sal_Char* aPropNames[] =
-        {
              "Window/Drag"                       //  0
             ,"Menu/FollowMouse"                  //  1
             ,"Dialog/MousePositioning"           //  2
@@ -107,15 +104,7 @@ const Sequence<OUString>& SvtTabAppearanceCfg::GetPropertyNames()
             ,"FontAntiAliasing/Enabled"          //  4
             ,"FontAntiAliasing/MinPixelHeight"   //  5
 #endif
-        };
-        const int nCount = SAL_N_ELEMENTS( aPropNames );
-        aNames.realloc(nCount);
-
-        const sal_Char** pAsciiNames = aPropNames;
-        OUString* pNames = aNames.getArray();
-        for(int i = 0; i < nCount; ++i, ++pNames, ++pAsciiNames)
-            *pNames = OUString::createFromAscii( *pAsciiNames );
-    }
+    };
     return aNames;
 }
 
diff --git a/svtools/source/config/htmlcfg.cxx b/svtools/source/config/htmlcfg.cxx
index 5fd83ff7027d..7c78ebee4201 100644
--- a/svtools/source/config/htmlcfg.cxx
+++ b/svtools/source/config/htmlcfg.cxx
@@ -76,11 +76,8 @@ struct HtmlOptions_Impl
 
 const Sequence<OUString>& SvxHtmlOptions::GetPropertyNames()
 {
-    static Sequence<OUString> aNames;
-    if(!aNames.getLength())
+    static Sequence<OUString> const aNames
     {
-        static const char* aPropNames[] =
-        {
             "Import/UnknownTag",                    //  0
             "Import/FontSetting",                   //  1
             "Import/FontSize/Size_1",               //  2
@@ -97,13 +94,7 @@ const Sequence<OUString>& SvxHtmlOptions::GetPropertyNames()
             "Export/Warning",                       // 13
             "Export/Encoding",                      // 14
             "Import/NumbersEnglishUS"               // 15
-        };
-        const int nCount = SAL_N_ELEMENTS(aPropNames);
-        aNames.realloc(nCount);
-        OUString* pNames = aNames.getArray();
-        for(int i = 0; i < nCount; i++)
-            pNames[i] = OUString::createFromAscii(aPropNames[i]);
-    }
+    };
     return aNames;
 }
 


More information about the Libreoffice-commits mailing list