chart2/source/model/main/Axis.cxx                 |  132 ++++++++--------------
 chart2/source/model/main/BaseCoordinateSystem.cxx |   71 +++--------
 chart2/source/model/main/DataPoint.cxx            |   54 ++-------
 chart2/source/model/main/DataSeries.cxx           |   64 +++++-----
 chart2/source/model/main/DataTable.cxx            |   69 ++---------
 chart2/source/model/main/FormattedString.cxx      |   68 +++--------
 chart2/source/model/main/GridProperties.cxx       |   89 ++++----------
 chart2/source/model/main/Legend.cxx               |  112 ++++++------------
 chart2/source/model/main/PageBackground.cxx       |   93 +++++----------
 chart2/source/model/main/StockBar.cxx             |   87 ++++----------
 chart2/source/model/main/Title.cxx                |  128 ++++++++-------------
 chart2/source/model/main/Wall.cxx                 |   93 ++++-----------
 12 files changed, 361 insertions(+), 699 deletions(-)

New commits:
commit b2db6b7586b4e7b7e2c175dbc93fd0ace1cddd97
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Wed Mar 22 19:49:10 2023 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Thu Mar 23 06:12:09 2023 +0000

    rtl::Static-> thread-safe-static in chart2
    
    Change-Id: Ie1379a1d40a6d65b28fd94ed114853e399fea5f9
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149339
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/chart2/source/model/main/Axis.cxx 
b/chart2/source/model/main/Axis.cxx
index f00455f51c4f..923eaf0416d0 100644
--- a/chart2/source/model/main/Axis.cxx
+++ b/chart2/source/model/main/Axis.cxx
@@ -206,88 +206,56 @@ void lcl_AddPropertiesToVector(
 
 }
 
-struct StaticAxisDefaults_Initializer
+const ::chart::tPropertyValueMap &  StaticAxisDefaults()
 {
-    ::chart::tPropertyValueMap* operator()()
-    {
-        static ::chart::tPropertyValueMap aStaticDefaults;
-        lcl_AddDefaultsToMap( aStaticDefaults );
-        return &aStaticDefaults;
-    }
-private:
-    static void lcl_AddDefaultsToMap( ::chart::tPropertyValueMap & rOutMap )
-    {
-        ::chart::CharacterProperties::AddDefaultsToMap( rOutMap );
-        ::chart::LinePropertiesHelper::AddDefaultsToMap( rOutMap );
-
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_AXIS_SHOW, true );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_AXIS_CROSSOVER_POSITION, css::chart::ChartAxisPosition_ZERO );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_AXIS_DISPLAY_LABELS, true );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_AXIS_LINK_NUMBERFORMAT_TO_SOURCE, true );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_AXIS_LABEL_POSITION, css::chart::ChartAxisLabelPosition_NEAR_AXIS );
-        ::chart::PropertyHelper::setPropertyValueDefault< double >( rOutMap, 
PROP_AXIS_TEXT_ROTATION, 0.0 );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_AXIS_TEXT_BREAK, false );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_AXIS_TEXT_OVERLAP, false );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_AXIS_TEXT_STACKED, false );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_AXIS_TEXT_ARRANGE_ORDER, css::chart::ChartAxisArrangeOrderType_AUTO );
-
-        float fDefaultCharHeight = 10.0;
-        ::chart::PropertyHelper::setPropertyValue( rOutMap, 
::chart::CharacterProperties::PROP_CHAR_CHAR_HEIGHT, fDefaultCharHeight );
-        ::chart::PropertyHelper::setPropertyValue( rOutMap, 
::chart::CharacterProperties::PROP_CHAR_ASIAN_CHAR_HEIGHT, fDefaultCharHeight );
-        ::chart::PropertyHelper::setPropertyValue( rOutMap, 
::chart::CharacterProperties::PROP_CHAR_COMPLEX_CHAR_HEIGHT, fDefaultCharHeight 
);
-
-        ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( 
rOutMap, PROP_AXIS_MAJOR_TICKMARKS, 2 /* CHAXIS_MARK_OUTER */ );
-        ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( 
rOutMap, PROP_AXIS_MINOR_TICKMARKS, 0 /* CHAXIS_MARK_NONE */ );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_AXIS_MARK_POSITION, css::chart::ChartAxisMarkPosition_AT_LABELS_AND_AXIS );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_AXIS_DISPLAY_UNITS, false );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_AXIS_TRY_STAGGERING_FIRST, false );
-    }
-};
-
-struct StaticAxisDefaults : public rtl::StaticAggregate< 
::chart::tPropertyValueMap, StaticAxisDefaults_Initializer >
-{
-};
-
-struct StaticAxisInfoHelper_Initializer
-{
-    ::cppu::OPropertyArrayHelper* operator()()
-    {
-        static ::cppu::OPropertyArrayHelper aPropHelper( 
lcl_GetPropertySequence() );
-        return &aPropHelper;
-    }
-
-private:
-    static Sequence< Property > lcl_GetPropertySequence()
-    {
-        std::vector< css::beans::Property > aProperties;
-        lcl_AddPropertiesToVector( aProperties );
-        ::chart::CharacterProperties::AddPropertiesToVector( aProperties );
-        ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties );
-        ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties );
-
-        std::sort( aProperties.begin(), aProperties.end(),
-                     ::chart::PropertyNameLess() );
-
-        return comphelper::containerToSequence( aProperties );
-    }
-};
-
-struct StaticAxisInfoHelper : public rtl::StaticAggregate< 
::cppu::OPropertyArrayHelper, StaticAxisInfoHelper_Initializer >
-{
-};
-
-struct StaticAxisInfo_Initializer
-{
-    uno::Reference< beans::XPropertySetInfo >* operator()()
-    {
-        static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
-            
::cppu::OPropertySetHelper::createPropertySetInfo(*StaticAxisInfoHelper::get() 
) );
-        return &xPropertySetInfo;
-    }
+    static ::chart::tPropertyValueMap aStaticDefaults = []()
+        {
+            ::chart::tPropertyValueMap aMap;
+            ::chart::CharacterProperties::AddDefaultsToMap( aMap );
+            ::chart::LinePropertiesHelper::AddDefaultsToMap( aMap );
+
+            ::chart::PropertyHelper::setPropertyValueDefault( aMap, 
PROP_AXIS_SHOW, true );
+            ::chart::PropertyHelper::setPropertyValueDefault( aMap, 
PROP_AXIS_CROSSOVER_POSITION, css::chart::ChartAxisPosition_ZERO );
+            ::chart::PropertyHelper::setPropertyValueDefault( aMap, 
PROP_AXIS_DISPLAY_LABELS, true );
+            ::chart::PropertyHelper::setPropertyValueDefault( aMap, 
PROP_AXIS_LINK_NUMBERFORMAT_TO_SOURCE, true );
+            ::chart::PropertyHelper::setPropertyValueDefault( aMap, 
PROP_AXIS_LABEL_POSITION, css::chart::ChartAxisLabelPosition_NEAR_AXIS );
+            ::chart::PropertyHelper::setPropertyValueDefault< double >( aMap, 
PROP_AXIS_TEXT_ROTATION, 0.0 );
+            ::chart::PropertyHelper::setPropertyValueDefault( aMap, 
PROP_AXIS_TEXT_BREAK, false );
+            ::chart::PropertyHelper::setPropertyValueDefault( aMap, 
PROP_AXIS_TEXT_OVERLAP, false );
+            ::chart::PropertyHelper::setPropertyValueDefault( aMap, 
PROP_AXIS_TEXT_STACKED, false );
+            ::chart::PropertyHelper::setPropertyValueDefault( aMap, 
PROP_AXIS_TEXT_ARRANGE_ORDER, css::chart::ChartAxisArrangeOrderType_AUTO );
+
+            float fDefaultCharHeight = 10.0;
+            ::chart::PropertyHelper::setPropertyValue( aMap, 
::chart::CharacterProperties::PROP_CHAR_CHAR_HEIGHT, fDefaultCharHeight );
+            ::chart::PropertyHelper::setPropertyValue( aMap, 
::chart::CharacterProperties::PROP_CHAR_ASIAN_CHAR_HEIGHT, fDefaultCharHeight );
+            ::chart::PropertyHelper::setPropertyValue( aMap, 
::chart::CharacterProperties::PROP_CHAR_COMPLEX_CHAR_HEIGHT, fDefaultCharHeight 
);
+
+            ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( 
aMap, PROP_AXIS_MAJOR_TICKMARKS, 2 /* CHAXIS_MARK_OUTER */ );
+            ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( 
aMap, PROP_AXIS_MINOR_TICKMARKS, 0 /* CHAXIS_MARK_NONE */ );
+            ::chart::PropertyHelper::setPropertyValueDefault( aMap, 
PROP_AXIS_MARK_POSITION, css::chart::ChartAxisMarkPosition_AT_LABELS_AND_AXIS );
+            ::chart::PropertyHelper::setPropertyValueDefault( aMap, 
PROP_AXIS_DISPLAY_UNITS, false );
+            ::chart::PropertyHelper::setPropertyValueDefault( aMap, 
PROP_AXIS_TRY_STAGGERING_FIRST, false );
+            return aMap;
+        }();
+    return aStaticDefaults;
 };
 
-struct StaticAxisInfo : public rtl::StaticAggregate< uno::Reference< 
beans::XPropertySetInfo >, StaticAxisInfo_Initializer >
+::cppu::OPropertyArrayHelper& StaticAxisInfoHelper()
 {
+    static ::cppu::OPropertyArrayHelper aPropHelper = []()
+        {
+            std::vector< css::beans::Property > aProperties;
+            lcl_AddPropertiesToVector( aProperties );
+            ::chart::CharacterProperties::AddPropertiesToVector( aProperties );
+            ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties 
);
+            ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties 
);
+
+            std::sort( aProperties.begin(), aProperties.end(),
+                         ::chart::PropertyNameLess() );
+
+            return comphelper::containerToSequence( aProperties );
+        }();
+    return aPropHelper;
 };
 
 typedef uno::Reference< beans::XPropertySet > lcl_tSubGridType;
@@ -575,7 +543,7 @@ void Axis::fireModifyEvent()
 // ____ OPropertySet ____
 void Axis::GetDefaultValue( sal_Int32 nHandle, uno::Any& rAny ) const
 {
-    const tPropertyValueMap& rStaticDefaults = *StaticAxisDefaults::get();
+    const tPropertyValueMap& rStaticDefaults = StaticAxisDefaults();
     tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( nHandle ) 
);
     if( aFound == rStaticDefaults.end() )
         rAny.clear();
@@ -585,13 +553,15 @@ void Axis::GetDefaultValue( sal_Int32 nHandle, uno::Any& 
rAny ) const
 
 ::cppu::IPropertyArrayHelper & SAL_CALL Axis::getInfoHelper()
 {
-    return *StaticAxisInfoHelper::get();
+    return StaticAxisInfoHelper();
 }
 
 // ____ XPropertySet ____
 Reference< beans::XPropertySetInfo > SAL_CALL Axis::getPropertySetInfo()
 {
-    return *StaticAxisInfo::get();
+    static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
+        
::cppu::OPropertySetHelper::createPropertySetInfo(StaticAxisInfoHelper() ) );
+    return xPropertySetInfo;
 }
 
 using impl::Axis_Base;
diff --git a/chart2/source/model/main/BaseCoordinateSystem.cxx 
b/chart2/source/model/main/BaseCoordinateSystem.cxx
index 4299cc100f36..8af32fa09678 100644
--- a/chart2/source/model/main/BaseCoordinateSystem.cxx
+++ b/chart2/source/model/main/BaseCoordinateSystem.cxx
@@ -56,58 +56,31 @@ void lcl_AddPropertiesToVector(
                   | beans::PropertyAttribute::MAYBEVOID );
 }
 
-struct StaticCooSysDefaults_Initializer
+const ::chart::tPropertyValueMap & StaticCooSysDefaults()
 {
-    ::chart::tPropertyValueMap* operator()()
+    static ::chart::tPropertyValueMap aStaticDefaults = []()
     {
-        static ::chart::tPropertyValueMap aStaticDefaults;
-        ::chart::PropertyHelper::setPropertyValueDefault( aStaticDefaults, 
PROP_COORDINATESYSTEM_SWAPXANDYAXIS, false );
-        return &aStaticDefaults;
-    }
-};
-
-struct StaticCooSysDefaults : public rtl::StaticAggregate< 
::chart::tPropertyValueMap, StaticCooSysDefaults_Initializer >
-{
+        ::chart::tPropertyValueMap aMap;
+        ::chart::PropertyHelper::setPropertyValueDefault( aMap, 
PROP_COORDINATESYSTEM_SWAPXANDYAXIS, false );
+        return aMap;
+    }();
+    return aStaticDefaults;
 };
 
-struct StaticCooSysInfoHelper_Initializer
+::cppu::OPropertyArrayHelper& StaticCooSysInfoHelper()
 {
-    ::cppu::OPropertyArrayHelper* operator()()
-    {
-        static ::cppu::OPropertyArrayHelper aPropHelper( 
lcl_GetPropertySequence() );
-        return &aPropHelper;
-    }
-
-private:
-    static Sequence< Property > lcl_GetPropertySequence()
-    {
-        std::vector< css::beans::Property > aProperties;
-        lcl_AddPropertiesToVector( aProperties );
-        ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties );
-
-        std::sort( aProperties.begin(), aProperties.end(),
-                     ::chart::PropertyNameLess() );
-
-        return comphelper::containerToSequence( aProperties );
-    }
-};
-
-struct StaticCooSysInfoHelper : public rtl::StaticAggregate< 
::cppu::OPropertyArrayHelper, StaticCooSysInfoHelper_Initializer >
-{
-};
+    static ::cppu::OPropertyArrayHelper aPropHelper = []()
+        {
+            std::vector< css::beans::Property > aProperties;
+            lcl_AddPropertiesToVector( aProperties );
+            ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties 
);
 
-struct StaticCooSysInfo_Initializer
-{
-    uno::Reference< beans::XPropertySetInfo >* operator()()
-    {
-        static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
-            
::cppu::OPropertySetHelper::createPropertySetInfo(*StaticCooSysInfoHelper::get()
 ) );
-        return &xPropertySetInfo;
-    }
-};
+            std::sort( aProperties.begin(), aProperties.end(),
+                         ::chart::PropertyNameLess() );
 
-struct StaticCooSysInfo : public rtl::StaticAggregate< uno::Reference< 
beans::XPropertySetInfo >, StaticCooSysInfo_Initializer >
-{
+            return comphelper::containerToSequence( aProperties );
+        }();
+    return aPropHelper;
 };
 
 } // anonymous namespace
@@ -382,7 +355,7 @@ void BaseCoordinateSystem::fireModifyEvent()
 // ____ OPropertySet ____
 void BaseCoordinateSystem::GetDefaultValue( sal_Int32 nHandle, uno::Any& rAny 
) const
 {
-    const tPropertyValueMap& rStaticDefaults = *StaticCooSysDefaults::get();
+    const tPropertyValueMap& rStaticDefaults = StaticCooSysDefaults();
     tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( nHandle ) 
);
     if( aFound == rStaticDefaults.end() )
         rAny.clear();
@@ -393,13 +366,15 @@ void BaseCoordinateSystem::GetDefaultValue( sal_Int32 
nHandle, uno::Any& rAny )
 // ____ OPropertySet ____
 ::cppu::IPropertyArrayHelper & SAL_CALL BaseCoordinateSystem::getInfoHelper()
 {
-    return *StaticCooSysInfoHelper::get();
+    return StaticCooSysInfoHelper();
 }
 
 // ____ XPropertySet ____
 Reference< beans::XPropertySetInfo > SAL_CALL 
BaseCoordinateSystem::getPropertySetInfo()
 {
-    return *StaticCooSysInfo::get();
+    static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
+        
::cppu::OPropertySetHelper::createPropertySetInfo(StaticCooSysInfoHelper() ) );
+    return xPropertySetInfo;
 }
 
 using impl::BaseCoordinateSystem_Base;
diff --git a/chart2/source/model/main/DataPoint.cxx 
b/chart2/source/model/main/DataPoint.cxx
index d97c67d13383..d6c8a9e2ac3b 100644
--- a/chart2/source/model/main/DataPoint.cxx
+++ b/chart2/source/model/main/DataPoint.cxx
@@ -39,45 +39,21 @@ using ::com::sun::star::beans::Property;
 namespace
 {
 
-struct StaticDataPointInfoHelper_Initializer
+::cppu::OPropertyArrayHelper& StaticDataPointInfoHelper()
 {
-    ::cppu::OPropertyArrayHelper* operator()()
-    {
-        static ::cppu::OPropertyArrayHelper aPropHelper( 
lcl_GetPropertySequence() );
-        return &aPropHelper;
-    }
-
-private:
-    static Sequence< Property > lcl_GetPropertySequence()
-    {
-        std::vector< css::beans::Property > aProperties;
-        ::chart::DataPointProperties::AddPropertiesToVector( aProperties );
-        ::chart::CharacterProperties::AddPropertiesToVector( aProperties );
-        ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties );
-
-        std::sort( aProperties.begin(), aProperties.end(),
-                     ::chart::PropertyNameLess() );
-
-        return comphelper::containerToSequence( aProperties );
-    }
-};
-
-struct StaticDataPointInfoHelper : public rtl::StaticAggregate< 
::cppu::OPropertyArrayHelper, StaticDataPointInfoHelper_Initializer >
-{
-};
+    static ::cppu::OPropertyArrayHelper aPropHelper = []()
+        {
+            std::vector< css::beans::Property > aProperties;
+            ::chart::DataPointProperties::AddPropertiesToVector( aProperties );
+            ::chart::CharacterProperties::AddPropertiesToVector( aProperties );
+            ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties 
);
 
-struct StaticDataPointInfo_Initializer
-{
-    uno::Reference< beans::XPropertySetInfo >* operator()()
-    {
-        static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
-            
::cppu::OPropertySetHelper::createPropertySetInfo(*StaticDataPointInfoHelper::get()
 ) );
-        return &xPropertySetInfo;
-    }
-};
+            std::sort( aProperties.begin(), aProperties.end(),
+                         ::chart::PropertyNameLess() );
 
-struct StaticDataPointInfo : public rtl::StaticAggregate< uno::Reference< 
beans::XPropertySetInfo >, StaticDataPointInfo_Initializer >
-{
+            return comphelper::containerToSequence( aProperties );
+        }();
+    return aPropHelper;
 };
 
 } // anonymous namespace
@@ -208,13 +184,15 @@ void SAL_CALL DataPoint::setFastPropertyValue_NoBroadcast(
 
 ::cppu::IPropertyArrayHelper & SAL_CALL DataPoint::getInfoHelper()
 {
-    return *StaticDataPointInfoHelper::get();
+    return StaticDataPointInfoHelper();
 }
 
 // ____ XPropertySet ____
 Reference< beans::XPropertySetInfo > SAL_CALL DataPoint::getPropertySetInfo()
 {
-    return *StaticDataPointInfo::get();
+    static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
+        
::cppu::OPropertySetHelper::createPropertySetInfo(StaticDataPointInfoHelper() ) 
);
+    return xPropertySetInfo;
 }
 
 // ____ XModifyBroadcaster ____
diff --git a/chart2/source/model/main/DataSeries.cxx 
b/chart2/source/model/main/DataSeries.cxx
index 8313054f2df2..6d224d6a39de 100644
--- a/chart2/source/model/main/DataSeries.cxx
+++ b/chart2/source/model/main/DataSeries.cxx
@@ -49,43 +49,37 @@ using ::osl::MutexGuard;
 namespace
 {
 
-struct StaticDataSeriesDefaults : public rtl::StaticWithInit< 
::chart::tPropertyValueMap, StaticDataSeriesDefaults >
+const ::chart::tPropertyValueMap & StaticDataSeriesDefaults()
 {
-    ::chart::tPropertyValueMap operator()()
-    {
-        ::chart::tPropertyValueMap aStaticDefaults;
-        ::chart::DataSeriesProperties::AddDefaultsToMap( aStaticDefaults );
-        ::chart::CharacterProperties::AddDefaultsToMap( aStaticDefaults );
-        float fDefaultCharHeight = 10.0;
-        ::chart::PropertyHelper::setPropertyValue( aStaticDefaults, 
::chart::CharacterProperties::PROP_CHAR_CHAR_HEIGHT, fDefaultCharHeight );
-        ::chart::PropertyHelper::setPropertyValue( aStaticDefaults, 
::chart::CharacterProperties::PROP_CHAR_ASIAN_CHAR_HEIGHT, fDefaultCharHeight );
-        ::chart::PropertyHelper::setPropertyValue( aStaticDefaults, 
::chart::CharacterProperties::PROP_CHAR_COMPLEX_CHAR_HEIGHT, fDefaultCharHeight 
);
-        return aStaticDefaults;
-    }
+    static const ::chart::tPropertyValueMap aStaticDefaults = []()
+        {
+            ::chart::tPropertyValueMap aMap;
+            ::chart::DataSeriesProperties::AddDefaultsToMap( aMap );
+            ::chart::CharacterProperties::AddDefaultsToMap( aMap );
+            float fDefaultCharHeight = 10.0;
+            ::chart::PropertyHelper::setPropertyValue( aMap, 
::chart::CharacterProperties::PROP_CHAR_CHAR_HEIGHT, fDefaultCharHeight );
+            ::chart::PropertyHelper::setPropertyValue( aMap, 
::chart::CharacterProperties::PROP_CHAR_ASIAN_CHAR_HEIGHT, fDefaultCharHeight );
+            ::chart::PropertyHelper::setPropertyValue( aMap, 
::chart::CharacterProperties::PROP_CHAR_COMPLEX_CHAR_HEIGHT, fDefaultCharHeight 
);
+            return aMap;
+        }();
+    return aStaticDefaults;
 };
 
-struct StaticDataSeriesInfoHelper : public rtl::StaticWithInit< 
::cppu::OPropertyArrayHelper, StaticDataSeriesInfoHelper, 
StaticDataSeriesInfoHelper, uno::Sequence< Property > >
+::cppu::OPropertyArrayHelper& StaticDataSeriesInfoHelper()
 {
-    uno::Sequence< Property > operator()()
-    {
-        std::vector< css::beans::Property > aProperties;
-        ::chart::DataSeriesProperties::AddPropertiesToVector( aProperties );
-        ::chart::CharacterProperties::AddPropertiesToVector( aProperties );
-        ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties );
+    static ::cppu::OPropertyArrayHelper oHelper = []()
+        {
+            std::vector< css::beans::Property > aProperties;
+            ::chart::DataSeriesProperties::AddPropertiesToVector( aProperties 
);
+            ::chart::CharacterProperties::AddPropertiesToVector( aProperties );
+            ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties 
);
 
-        std::sort( aProperties.begin(), aProperties.end(),
-                     ::chart::PropertyNameLess() );
+            std::sort( aProperties.begin(), aProperties.end(),
+                         ::chart::PropertyNameLess() );
 
-        return comphelper::containerToSequence( aProperties );
-    }
-};
-
-struct StaticDataSeriesInfo : public rtl::StaticWithInit< uno::Reference< 
beans::XPropertySetInfo >, StaticDataSeriesInfo >
-{
-    uno::Reference< beans::XPropertySetInfo > operator()()
-    {
-        return 
::cppu::OPropertySetHelper::createPropertySetInfo(StaticDataSeriesInfoHelper::get()
 );
-    }
+            return comphelper::containerToSequence( aProperties );
+        }();
+    return oHelper;
 };
 
 void lcl_SetParent(
@@ -229,7 +223,7 @@ uno::Reference< util::XCloneable > SAL_CALL 
DataSeries::createClone()
 // ____ OPropertySet ____
 void DataSeries::GetDefaultValue( sal_Int32 nHandle, uno::Any& rDest ) const
 {
-    const tPropertyValueMap& rStaticDefaults = StaticDataSeriesDefaults::get();
+    const tPropertyValueMap& rStaticDefaults = StaticDataSeriesDefaults();
     tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( nHandle ) 
);
     if( aFound == rStaticDefaults.end() )
         rDest.clear();
@@ -240,13 +234,15 @@ void DataSeries::GetDefaultValue( sal_Int32 nHandle, 
uno::Any& rDest ) const
 // ____ OPropertySet ____
 ::cppu::IPropertyArrayHelper & SAL_CALL DataSeries::getInfoHelper()
 {
-    return StaticDataSeriesInfoHelper::get();
+    return StaticDataSeriesInfoHelper();
 }
 
 // ____ XPropertySet ____
 uno::Reference< beans::XPropertySetInfo > SAL_CALL 
DataSeries::getPropertySetInfo()
 {
-    return StaticDataSeriesInfo::get();
+    static uno::Reference< beans::XPropertySetInfo > xPropSetInfo =
+        
::cppu::OPropertySetHelper::createPropertySetInfo(StaticDataSeriesInfoHelper() 
);
+    return xPropSetInfo;
 }
 
 void SAL_CALL DataSeries::getFastPropertyValue
diff --git a/chart2/source/model/main/DataTable.cxx 
b/chart2/source/model/main/DataTable.cxx
index 580ee4d1be90..6cec190615bd 100644
--- a/chart2/source/model/main/DataTable.cxx
+++ b/chart2/source/model/main/DataTable.cxx
@@ -50,18 +50,10 @@ void 
lcl_AddPropertiesToVector(std::vector<beans::Property>& rProps)
                         nBound | nMaybeDefault);
 }
 
-struct StaticDataTableDefaults_Initializer
-{
-    ::chart::tPropertyValueMap* operator()()
-    {
-        static ::chart::tPropertyValueMap aStaticDefaults;
-        lcl_AddDefaultsToMap(aStaticDefaults);
-        return &aStaticDefaults;
-    }
-
-private:
-    static void lcl_AddDefaultsToMap(::chart::tPropertyValueMap& aMap)
-    {
+const ::chart::tPropertyValueMap& StaticDataTableDefaults()
+{
+    static ::chart::tPropertyValueMap aStaticDefaults = []() {
+        ::chart::tPropertyValueMap aMap;
         ::chart::LinePropertiesHelper::AddDefaultsToMap(aMap);
         ::chart::FillProperties::AddDefaultsToMap(aMap);
         ::chart::CharacterProperties::AddDefaultsToMap(aMap);
@@ -86,25 +78,14 @@ private:
             aMap, ::chart::CharacterProperties::PROP_CHAR_ASIAN_CHAR_HEIGHT, 
fDefaultCharHeight);
         ::chart::PropertyHelper::setPropertyValue(
             aMap, ::chart::CharacterProperties::PROP_CHAR_COMPLEX_CHAR_HEIGHT, 
fDefaultCharHeight);
-    }
-};
-
-struct StaticDataTableDefaults
-    : public rtl::StaticAggregate<::chart::tPropertyValueMap, 
StaticDataTableDefaults_Initializer>
-{
+        return aMap;
+    }();
+    return aStaticDefaults;
 };
 
-struct StaticDataTableInfoHelper_Initializer
+cppu::OPropertyArrayHelper& StaticDataTableInfoHelper()
 {
-    cppu::OPropertyArrayHelper* operator()()
-    {
-        static cppu::OPropertyArrayHelper 
aPropHelper(lcl_GetPropertySequence());
-        return &aPropHelper;
-    }
-
-private:
-    static uno::Sequence<beans::Property> lcl_GetPropertySequence()
-    {
+    static cppu::OPropertyArrayHelper aPropHelper = []() {
         std::vector<beans::Property> aProperties;
         lcl_AddPropertiesToVector(aProperties);
         ::chart::LinePropertiesHelper::AddPropertiesToVector(aProperties);
@@ -113,28 +94,8 @@ private:
         std::sort(aProperties.begin(), aProperties.end(), 
::chart::PropertyNameLess());
 
         return comphelper::containerToSequence(aProperties);
-    }
-};
-
-struct StaticDataTableInfoHelper
-    : public rtl::StaticAggregate<::cppu::OPropertyArrayHelper,
-                                  StaticDataTableInfoHelper_Initializer>
-{
-};
-
-struct StaticDataTableInfo_Initializer
-{
-    uno::Reference<beans::XPropertySetInfo>* operator()()
-    {
-        static uno::Reference<beans::XPropertySetInfo> xPropertySetInfo(
-            
::cppu::OPropertySetHelper::createPropertySetInfo(*StaticDataTableInfoHelper::get()));
-        return &xPropertySetInfo;
-    }
-};
-
-struct StaticDataTableInfo : public 
rtl::StaticAggregate<uno::Reference<beans::XPropertySetInfo>,
-                                                         
StaticDataTableInfo_Initializer>
-{
+    }();
+    return aPropHelper;
 };
 
 } // anonymous namespace
@@ -194,7 +155,7 @@ void DataTable::firePropertyChangeEvent()
 // ____ OPropertySet ____
 void DataTable::GetDefaultValue(sal_Int32 nHandle, uno::Any& rAny) const
 {
-    const tPropertyValueMap& rStaticDefaults = *StaticDataTableDefaults::get();
+    const tPropertyValueMap& rStaticDefaults = StaticDataTableDefaults();
     auto aFound = rStaticDefaults.find(nHandle);
     if (aFound == rStaticDefaults.end())
         rAny.clear();
@@ -204,13 +165,15 @@ void DataTable::GetDefaultValue(sal_Int32 nHandle, 
uno::Any& rAny) const
 
 ::cppu::IPropertyArrayHelper& SAL_CALL DataTable::getInfoHelper()
 {
-    return *StaticDataTableInfoHelper::get();
+    return StaticDataTableInfoHelper();
 }
 
 // ____ XPropertySet ____
 uno::Reference<beans::XPropertySetInfo> SAL_CALL 
DataTable::getPropertySetInfo()
 {
-    return *StaticDataTableInfo::get();
+    static uno::Reference<beans::XPropertySetInfo> xPropertySetInfo(
+        
::cppu::OPropertySetHelper::createPropertySetInfo(StaticDataTableInfoHelper()));
+    return xPropertySetInfo;
 }
 
 // implement XServiceInfo methods basing upon getSupportedServiceNames_Static
diff --git a/chart2/source/model/main/FormattedString.cxx 
b/chart2/source/model/main/FormattedString.cxx
index eed75c525f40..5da70943ded5 100644
--- a/chart2/source/model/main/FormattedString.cxx
+++ b/chart2/source/model/main/FormattedString.cxx
@@ -35,58 +35,26 @@ using ::osl::MutexGuard;
 namespace
 {
 
-struct StaticFormattedStringDefaults_Initializer
+const ::chart::tPropertyValueMap & StaticFormattedStringDefaults()
 {
-    ::chart::tPropertyValueMap* operator()()
-    {
-        static ::chart::tPropertyValueMap aStaticDefaults;
-        ::chart::CharacterProperties::AddDefaultsToMap( aStaticDefaults );
-        return &aStaticDefaults;
-    }
-};
-
-struct StaticFormattedStringDefaults : public rtl::StaticAggregate< 
::chart::tPropertyValueMap, StaticFormattedStringDefaults_Initializer >
-{
-};
-
-struct StaticFormattedStringInfoHelper_Initializer
-{
-    ::cppu::OPropertyArrayHelper* operator()()
-    {
-        static ::cppu::OPropertyArrayHelper aPropHelper( 
lcl_GetPropertySequence() );
-        return &aPropHelper;
-    }
-
-private:
-    static Sequence< Property > lcl_GetPropertySequence()
-    {
-        std::vector< css::beans::Property > aProperties;
-        ::chart::CharacterProperties::AddPropertiesToVector( aProperties );
-
-        std::sort( aProperties.begin(), aProperties.end(),
-                     ::chart::PropertyNameLess() );
-
-        return comphelper::containerToSequence( aProperties );
-    }
-
+    static ::chart::tPropertyValueMap aStaticDefaults;
+    ::chart::CharacterProperties::AddDefaultsToMap( aStaticDefaults );
+    return aStaticDefaults;
 };
 
-struct StaticFormattedStringInfoHelper : public rtl::StaticAggregate< 
::cppu::OPropertyArrayHelper, StaticFormattedStringInfoHelper_Initializer >
+::cppu::OPropertyArrayHelper& StaticFormattedStringInfoHelper()
 {
-};
+    static ::cppu::OPropertyArrayHelper aPropHelper = []()
+        {
+            std::vector< css::beans::Property > aProperties;
+            ::chart::CharacterProperties::AddPropertiesToVector( aProperties );
 
-struct StaticFormattedStringInfo_Initializer
-{
-    uno::Reference< beans::XPropertySetInfo >* operator()()
-    {
-        static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
-            
::cppu::OPropertySetHelper::createPropertySetInfo(*StaticFormattedStringInfoHelper::get()
 ) );
-        return &xPropertySetInfo;
-    }
-};
+            std::sort( aProperties.begin(), aProperties.end(),
+                         ::chart::PropertyNameLess() );
 
-struct StaticFormattedStringInfo : public rtl::StaticAggregate< 
uno::Reference< beans::XPropertySetInfo >, 
StaticFormattedStringInfo_Initializer >
-{
+            return comphelper::containerToSequence( aProperties );
+        }();
+    return aPropHelper;
 };
 
 } // anonymous namespace
@@ -241,7 +209,7 @@ void FormattedString::fireModifyEvent()
 // ____ OPropertySet ____
 void FormattedString::GetDefaultValue( sal_Int32 nHandle, uno::Any& rAny ) 
const
 {
-    const tPropertyValueMap& rStaticDefaults = 
*StaticFormattedStringDefaults::get();
+    const tPropertyValueMap& rStaticDefaults = StaticFormattedStringDefaults();
     tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( nHandle ) 
);
     if( aFound == rStaticDefaults.end() )
         rAny.clear();
@@ -252,13 +220,15 @@ void FormattedString::GetDefaultValue( sal_Int32 nHandle, 
uno::Any& rAny ) const
 // ____ OPropertySet ____
 ::cppu::IPropertyArrayHelper & SAL_CALL FormattedString::getInfoHelper()
 {
-    return *StaticFormattedStringInfoHelper::get();
+    return StaticFormattedStringInfoHelper();
 }
 
 // ____ XPropertySet ____
 uno::Reference< beans::XPropertySetInfo > SAL_CALL 
FormattedString::getPropertySetInfo()
 {
-    return *StaticFormattedStringInfo::get();
+    static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
+        
::cppu::OPropertySetHelper::createPropertySetInfo(StaticFormattedStringInfoHelper()
 ) );
+    return xPropertySetInfo;
 }
 
 using impl::FormattedString_Base;
diff --git a/chart2/source/model/main/GridProperties.cxx 
b/chart2/source/model/main/GridProperties.cxx
index 7d476b5a5376..f2ebcb725edb 100644
--- a/chart2/source/model/main/GridProperties.cxx
+++ b/chart2/source/model/main/GridProperties.cxx
@@ -53,71 +53,38 @@ void lcl_AddPropertiesToVector(
                   | beans::PropertyAttribute::MAYBEDEFAULT );
 }
 
-struct StaticGridDefaults_Initializer
-{
-    ::chart::tPropertyValueMap* operator()()
-    {
-        static ::chart::tPropertyValueMap aStaticDefaults;
-        lcl_AddDefaultsToMap( aStaticDefaults );
-        return &aStaticDefaults;
-    }
-private:
-    static void lcl_AddDefaultsToMap( ::chart::tPropertyValueMap & rOutMap )
-    {
-        ::chart::LinePropertiesHelper::AddDefaultsToMap( rOutMap );
-
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_GRID_SHOW, false );
-
-        // override other defaults
-        ::chart::PropertyHelper::setPropertyValue< sal_Int32 >(
-            rOutMap, ::chart::LinePropertiesHelper::PROP_LINE_COLOR, 0xb3b3b3 
);  // gray30
-    }
-};
-
-struct StaticGridDefaults : public rtl::StaticAggregate< 
::chart::tPropertyValueMap, StaticGridDefaults_Initializer >
-{
-};
-
-struct StaticGridInfoHelper_Initializer
+const ::chart::tPropertyValueMap & StaticGridDefaults()
 {
-    ::cppu::OPropertyArrayHelper* operator()()
-    {
-        static ::cppu::OPropertyArrayHelper aPropHelper( 
lcl_GetPropertySequence() );
-        return &aPropHelper;
-    }
-
-private:
-    static Sequence< Property > lcl_GetPropertySequence()
-    {
-        std::vector< Property > aProperties;
-        lcl_AddPropertiesToVector( aProperties );
-        ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties );
-        ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties );
+    static ::chart::tPropertyValueMap aStaticDefaults = []()
+        {
+            ::chart::tPropertyValueMap aTmp;
+            ::chart::LinePropertiesHelper::AddDefaultsToMap( aTmp );
 
-        std::sort( aProperties.begin(), aProperties.end(),
-                     ::chart::PropertyNameLess() );
-
-        return comphelper::containerToSequence( aProperties );
-    }
+            ::chart::PropertyHelper::setPropertyValueDefault( aTmp, 
PROP_GRID_SHOW, false );
 
+            // override other defaults
+            ::chart::PropertyHelper::setPropertyValue< sal_Int32 >(
+                aTmp, ::chart::LinePropertiesHelper::PROP_LINE_COLOR, 0xb3b3b3 
);  // gray30
+            return aTmp;
+        }();
+    return aStaticDefaults;
 };
 
-struct StaticGridInfoHelper : public rtl::StaticAggregate< 
::cppu::OPropertyArrayHelper, StaticGridInfoHelper_Initializer >
+::cppu::OPropertyArrayHelper& StaticGridInfoHelper()
 {
-};
+    static ::cppu::OPropertyArrayHelper aPropHelper = []()
+        {
+            std::vector< Property > aProperties;
+            lcl_AddPropertiesToVector( aProperties );
+            ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties 
);
+            ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties 
);
 
-struct StaticGridInfo_Initializer
-{
-    uno::Reference< beans::XPropertySetInfo >* operator()()
-    {
-        static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
-            
::cppu::OPropertySetHelper::createPropertySetInfo(*StaticGridInfoHelper::get() 
) );
-        return &xPropertySetInfo;
-    }
-};
+            std::sort( aProperties.begin(), aProperties.end(),
+                         ::chart::PropertyNameLess() );
 
-struct StaticGridInfo : public rtl::StaticAggregate< uno::Reference< 
beans::XPropertySetInfo >, StaticGridInfo_Initializer >
-{
+            return comphelper::containerToSequence( aProperties );
+        }();
+    return aPropHelper;
 };
 
 } // anonymous namespace
@@ -142,7 +109,7 @@ GridProperties::~GridProperties()
 // ____ OPropertySet ____
 void GridProperties::GetDefaultValue( sal_Int32 nHandle, uno::Any& rAny ) const
 {
-    const tPropertyValueMap& rStaticDefaults = *StaticGridDefaults::get();
+    const tPropertyValueMap& rStaticDefaults = StaticGridDefaults();
     tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( nHandle ) 
);
     if( aFound == rStaticDefaults.end() )
         rAny.clear();
@@ -152,13 +119,15 @@ void GridProperties::GetDefaultValue( sal_Int32 nHandle, 
uno::Any& rAny ) const
 
 ::cppu::IPropertyArrayHelper & SAL_CALL GridProperties::getInfoHelper()
 {
-    return *StaticGridInfoHelper::get();
+    return StaticGridInfoHelper();
 }
 
 // ____ XPropertySet ____
 Reference< beans::XPropertySetInfo > SAL_CALL 
GridProperties::getPropertySetInfo()
 {
-    return *StaticGridInfo::get();
+    static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
+        
::cppu::OPropertySetHelper::createPropertySetInfo(StaticGridInfoHelper() ) );
+    return xPropertySetInfo;
 }
 
 // ____ XCloneable ____
diff --git a/chart2/source/model/main/Legend.cxx 
b/chart2/source/model/main/Legend.cxx
index a7f0587a01aa..9fc7cebd99ff 100644
--- a/chart2/source/model/main/Legend.cxx
+++ b/chart2/source/model/main/Legend.cxx
@@ -105,78 +105,46 @@ void lcl_AddPropertiesToVector(
 
 }
 
-struct StaticLegendDefaults_Initializer
+const ::chart::tPropertyValueMap& StaticLegendDefaults()
 {
-    ::chart::tPropertyValueMap* operator()()
-    {
-        static ::chart::tPropertyValueMap aStaticDefaults;
-        lcl_AddDefaultsToMap( aStaticDefaults );
-        return &aStaticDefaults;
-    }
-private:
-    static void lcl_AddDefaultsToMap( ::chart::tPropertyValueMap & rOutMap )
-    {
-        ::chart::LinePropertiesHelper::AddDefaultsToMap( rOutMap );
-        ::chart::FillProperties::AddDefaultsToMap( rOutMap );
-        ::chart::CharacterProperties::AddDefaultsToMap( rOutMap );
-
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_LEGEND_ANCHOR_POSITION, chart2::LegendPosition_LINE_END );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_LEGEND_EXPANSION, css::chart::ChartLegendExpansion_HIGH );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_LEGEND_SHOW, true );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_LEGEND_OVERLAY, false );
-
-        float fDefaultCharHeight = 10.0;
-        ::chart::PropertyHelper::setPropertyValue( rOutMap, 
::chart::CharacterProperties::PROP_CHAR_CHAR_HEIGHT, fDefaultCharHeight );
-        ::chart::PropertyHelper::setPropertyValue( rOutMap, 
::chart::CharacterProperties::PROP_CHAR_ASIAN_CHAR_HEIGHT, fDefaultCharHeight );
-        ::chart::PropertyHelper::setPropertyValue( rOutMap, 
::chart::CharacterProperties::PROP_CHAR_COMPLEX_CHAR_HEIGHT, fDefaultCharHeight 
);
-    }
+    static ::chart::tPropertyValueMap aStaticDefaults = []()
+        {
+            ::chart::tPropertyValueMap aTmp;
+            ::chart::LinePropertiesHelper::AddDefaultsToMap( aTmp );
+            ::chart::FillProperties::AddDefaultsToMap( aTmp );
+            ::chart::CharacterProperties::AddDefaultsToMap( aTmp );
+
+            ::chart::PropertyHelper::setPropertyValueDefault( aTmp, 
PROP_LEGEND_ANCHOR_POSITION, chart2::LegendPosition_LINE_END );
+            ::chart::PropertyHelper::setPropertyValueDefault( aTmp, 
PROP_LEGEND_EXPANSION, css::chart::ChartLegendExpansion_HIGH );
+            ::chart::PropertyHelper::setPropertyValueDefault( aTmp, 
PROP_LEGEND_SHOW, true );
+            ::chart::PropertyHelper::setPropertyValueDefault( aTmp, 
PROP_LEGEND_OVERLAY, false );
+
+            float fDefaultCharHeight = 10.0;
+            ::chart::PropertyHelper::setPropertyValue( aTmp, 
::chart::CharacterProperties::PROP_CHAR_CHAR_HEIGHT, fDefaultCharHeight );
+            ::chart::PropertyHelper::setPropertyValue( aTmp, 
::chart::CharacterProperties::PROP_CHAR_ASIAN_CHAR_HEIGHT, fDefaultCharHeight );
+            ::chart::PropertyHelper::setPropertyValue( aTmp, 
::chart::CharacterProperties::PROP_CHAR_COMPLEX_CHAR_HEIGHT, fDefaultCharHeight 
);
+            return aTmp;
+        }();
+    return aStaticDefaults;
 };
 
-struct StaticLegendDefaults : public rtl::StaticAggregate< 
::chart::tPropertyValueMap, StaticLegendDefaults_Initializer >
-{
-};
-
-struct StaticLegendInfoHelper_Initializer
-{
-    ::cppu::OPropertyArrayHelper* operator()()
-    {
-        static ::cppu::OPropertyArrayHelper aPropHelper( 
lcl_GetPropertySequence() );
-        return &aPropHelper;
-    }
-
-private:
-    static Sequence< Property > lcl_GetPropertySequence()
-    {
-        std::vector< css::beans::Property > aProperties;
-        lcl_AddPropertiesToVector( aProperties );
-        ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties );
-        ::chart::FillProperties::AddPropertiesToVector( aProperties );
-        ::chart::CharacterProperties::AddPropertiesToVector( aProperties );
-        ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties );
-
-        std::sort( aProperties.begin(), aProperties.end(),
-                     ::chart::PropertyNameLess() );
-
-        return comphelper::containerToSequence( aProperties );
-    }
-};
-
-struct StaticLegendInfoHelper : public rtl::StaticAggregate< 
::cppu::OPropertyArrayHelper, StaticLegendInfoHelper_Initializer >
-{
-};
-
-struct StaticLegendInfo_Initializer
-{
-    uno::Reference< beans::XPropertySetInfo >* operator()()
-    {
-        static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
-            
::cppu::OPropertySetHelper::createPropertySetInfo(*StaticLegendInfoHelper::get()
 ) );
-        return &xPropertySetInfo;
-    }
-};
-
-struct StaticLegendInfo : public rtl::StaticAggregate< uno::Reference< 
beans::XPropertySetInfo >, StaticLegendInfo_Initializer >
+::cppu::OPropertyArrayHelper& StaticLegendInfoHelper()
 {
+    static ::cppu::OPropertyArrayHelper aPropHelper = []()
+        {
+            std::vector< css::beans::Property > aProperties;
+            lcl_AddPropertiesToVector( aProperties );
+            ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties 
);
+            ::chart::FillProperties::AddPropertiesToVector( aProperties );
+            ::chart::CharacterProperties::AddPropertiesToVector( aProperties );
+            ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties 
);
+
+            std::sort( aProperties.begin(), aProperties.end(),
+                         ::chart::PropertyNameLess() );
+
+            return comphelper::containerToSequence( aProperties );
+        }();
+    return aPropHelper;
 };
 
 } // anonymous namespace
@@ -238,7 +206,7 @@ void Legend::firePropertyChangeEvent()
 // ____ OPropertySet ____
 void Legend::GetDefaultValue( sal_Int32 nHandle, uno::Any& rAny ) const
 {
-    const tPropertyValueMap& rStaticDefaults = *StaticLegendDefaults::get();
+    const tPropertyValueMap& rStaticDefaults = StaticLegendDefaults();
     tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( nHandle ) 
);
     if( aFound == rStaticDefaults.end() )
         rAny.clear();
@@ -248,13 +216,15 @@ void Legend::GetDefaultValue( sal_Int32 nHandle, 
uno::Any& rAny ) const
 
 ::cppu::IPropertyArrayHelper & SAL_CALL Legend::getInfoHelper()
 {
-    return *StaticLegendInfoHelper::get();
+    return StaticLegendInfoHelper();
 }
 
 // ____ XPropertySet ____
 Reference< beans::XPropertySetInfo > SAL_CALL Legend::getPropertySetInfo()
 {
-    return *StaticLegendInfo::get();
+    static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
+        
::cppu::OPropertySetHelper::createPropertySetInfo(StaticLegendInfoHelper() ) );
+    return xPropertySetInfo;
 }
 
 // implement XServiceInfo methods basing upon getSupportedServiceNames_Static
diff --git a/chart2/source/model/main/PageBackground.cxx 
b/chart2/source/model/main/PageBackground.cxx
index 561b297aba78..592c24d3e6a2 100644
--- a/chart2/source/model/main/PageBackground.cxx
+++ b/chart2/source/model/main/PageBackground.cxx
@@ -39,70 +39,37 @@ using ::com::sun::star::beans::Property;
 namespace
 {
 
-struct StaticPageBackgroundDefaults_Initializer
-{
-    ::chart::tPropertyValueMap* operator()()
-    {
-        static ::chart::tPropertyValueMap aStaticDefaults;
-        lcl_AddDefaultsToMap( aStaticDefaults );
-        return &aStaticDefaults;
-    }
-private:
-    static void lcl_AddDefaultsToMap( ::chart::tPropertyValueMap & rOutMap )
-    {
-        ::chart::LinePropertiesHelper::AddDefaultsToMap( rOutMap );
-        ::chart::FillProperties::AddDefaultsToMap( rOutMap );
-
-        // override other defaults
-        ::chart::PropertyHelper::setPropertyValue< sal_Int32 >( rOutMap, 
::chart::FillProperties::PROP_FILL_COLOR, 0xffffff );
-        ::chart::PropertyHelper::setPropertyValue( rOutMap, 
::chart::LinePropertiesHelper::PROP_LINE_STYLE, drawing::LineStyle_NONE );
-    }
+const ::chart::tPropertyValueMap& StaticPageBackgroundDefaults()
+{
+    static ::chart::tPropertyValueMap aStaticDefaults = []()
+        {
+            ::chart::tPropertyValueMap aTmp;
+            ::chart::LinePropertiesHelper::AddDefaultsToMap( aTmp );
+            ::chart::FillProperties::AddDefaultsToMap( aTmp );
+
+            // override other defaults
+            ::chart::PropertyHelper::setPropertyValue< sal_Int32 >( aTmp, 
::chart::FillProperties::PROP_FILL_COLOR, 0xffffff );
+            ::chart::PropertyHelper::setPropertyValue( aTmp, 
::chart::LinePropertiesHelper::PROP_LINE_STYLE, drawing::LineStyle_NONE );
+            return aTmp;
+        }();
+    return aStaticDefaults;
 };
 
-struct StaticPageBackgroundDefaults : public rtl::StaticAggregate< 
::chart::tPropertyValueMap, StaticPageBackgroundDefaults_Initializer >
+::cppu::OPropertyArrayHelper& StaticPageBackgroundInfoHelper()
 {
-};
-
-struct StaticPageBackgroundInfoHelper_Initializer
-{
-    ::cppu::OPropertyArrayHelper* operator()()
-    {
-        static ::cppu::OPropertyArrayHelper aPropHelper( 
lcl_GetPropertySequence() );
-        return &aPropHelper;
-    }
-
-private:
-    static uno::Sequence< Property > lcl_GetPropertySequence()
-    {
-        std::vector< css::beans::Property > aProperties;
-        ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties );
-        ::chart::FillProperties::AddPropertiesToVector( aProperties );
-        ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties );
-
-        std::sort( aProperties.begin(), aProperties.end(),
-                     ::chart::PropertyNameLess() );
-
-        return comphelper::containerToSequence( aProperties );
-    }
-
-};
+    static ::cppu::OPropertyArrayHelper aPropHelper = []()
+        {
+            std::vector< css::beans::Property > aProperties;
+            ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties 
);
+            ::chart::FillProperties::AddPropertiesToVector( aProperties );
+            ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties 
);
 
-struct StaticPageBackgroundInfoHelper : public rtl::StaticAggregate< 
::cppu::OPropertyArrayHelper, StaticPageBackgroundInfoHelper_Initializer >
-{
-};
+            std::sort( aProperties.begin(), aProperties.end(),
+                         ::chart::PropertyNameLess() );
 
-struct StaticPageBackgroundInfo_Initializer
-{
-    uno::Reference< beans::XPropertySetInfo >* operator()()
-    {
-        static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
-            
::cppu::OPropertySetHelper::createPropertySetInfo(*StaticPageBackgroundInfoHelper::get()
 ) );
-        return &xPropertySetInfo;
-    }
-};
-
-struct StaticPageBackgroundInfo : public rtl::StaticAggregate< uno::Reference< 
beans::XPropertySetInfo >, StaticPageBackgroundInfo_Initializer >
-{
+            return comphelper::containerToSequence( aProperties );
+        }();
+    return aPropHelper;
 };
 
 } // anonymous namespace
@@ -140,7 +107,7 @@ uno::Reference< util::XCloneable > SAL_CALL 
PageBackground::createClone()
 // ____ OPropertySet ____
 void PageBackground::GetDefaultValue( sal_Int32 nHandle, uno::Any& rAny ) const
 {
-    const tPropertyValueMap& rStaticDefaults = 
*StaticPageBackgroundDefaults::get();
+    const tPropertyValueMap& rStaticDefaults = StaticPageBackgroundDefaults();
     tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( nHandle ) 
);
     if( aFound == rStaticDefaults.end() )
         rAny.clear();
@@ -150,13 +117,15 @@ void PageBackground::GetDefaultValue( sal_Int32 nHandle, 
uno::Any& rAny ) const
 
 ::cppu::IPropertyArrayHelper & SAL_CALL PageBackground::getInfoHelper()
 {
-    return *StaticPageBackgroundInfoHelper::get();
+    return StaticPageBackgroundInfoHelper();
 }
 
 // ____ XPropertySet ____
 uno::Reference< beans::XPropertySetInfo > SAL_CALL 
PageBackground::getPropertySetInfo()
 {
-    return *StaticPageBackgroundInfo::get();
+    static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
+        
::cppu::OPropertySetHelper::createPropertySetInfo(StaticPageBackgroundInfoHelper()
 ) );
+    return xPropertySetInfo;
 }
 
 // ____ XModifyBroadcaster ____
diff --git a/chart2/source/model/main/StockBar.cxx 
b/chart2/source/model/main/StockBar.cxx
index c26c64d59eed..e8c72059bc65 100644
--- a/chart2/source/model/main/StockBar.cxx
+++ b/chart2/source/model/main/StockBar.cxx
@@ -37,69 +37,36 @@ using ::com::sun::star::beans::Property;
 namespace
 {
 
-struct StaticStockBarInfoHelper_Initializer
+::cppu::OPropertyArrayHelper& StaticStockBarInfoHelper()
 {
-    ::cppu::OPropertyArrayHelper* operator()()
-    {
-        static ::cppu::OPropertyArrayHelper aPropHelper( 
lcl_GetPropertySequence() );
-        return &aPropHelper;
-    }
-
-private:
-    static uno::Sequence< Property > lcl_GetPropertySequence()
-    {
-        std::vector< css::beans::Property > aProperties;
-        ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties );
-        ::chart::FillProperties::AddPropertiesToVector( aProperties );
-        ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties );
-
-        std::sort( aProperties.begin(), aProperties.end(),
-                     ::chart::PropertyNameLess() );
-
-        return comphelper::containerToSequence( aProperties );
-    }
-
-};
-
-struct StaticStockBarInfoHelper : public rtl::StaticAggregate< 
::cppu::OPropertyArrayHelper, StaticStockBarInfoHelper_Initializer >
-{
-};
+    static ::cppu::OPropertyArrayHelper aPropHelper = []()
+        {
+            std::vector< css::beans::Property > aProperties;
+            ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties 
);
+            ::chart::FillProperties::AddPropertiesToVector( aProperties );
+            ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties 
);
 
-struct StaticStockBarInfo_Initializer
-{
-    uno::Reference< beans::XPropertySetInfo >* operator()()
-    {
-        static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
-            
::cppu::OPropertySetHelper::createPropertySetInfo(*StaticStockBarInfoHelper::get()
 ) );
-        return &xPropertySetInfo;
-    }
-};
+            std::sort( aProperties.begin(), aProperties.end(),
+                         ::chart::PropertyNameLess() );
 
-struct StaticStockBarInfo : public rtl::StaticAggregate< uno::Reference< 
beans::XPropertySetInfo >, StaticStockBarInfo_Initializer >
-{
+            return comphelper::containerToSequence( aProperties );
+        }();
+    return aPropHelper;
 };
 
-struct StaticStockBarDefaults_Initializer
+const ::chart::tPropertyValueMap & StaticStockBarDefaults()
 {
-    ::chart::tPropertyValueMap* operator()()
-    {
-        static ::chart::tPropertyValueMap aStaticDefaults;
-        lcl_AddDefaultsToMap( aStaticDefaults );
-        return &aStaticDefaults;
-    }
-private:
-    static void lcl_AddDefaultsToMap( ::chart::tPropertyValueMap & rOutMap )
-    {
-        ::chart::LinePropertiesHelper::AddDefaultsToMap( rOutMap );
-        ::chart::FillProperties::AddDefaultsToMap( rOutMap );
-
-        // override other defaults
-        ::chart::PropertyHelper::setPropertyValue< sal_Int32 >( rOutMap, 
::chart::FillProperties::PROP_FILL_COLOR, 0xffffff ); // white
-    }
-};
+    static ::chart::tPropertyValueMap aStaticDefaults = []()
+        {
+            ::chart::tPropertyValueMap aTmp;
+            ::chart::LinePropertiesHelper::AddDefaultsToMap( aTmp );
+            ::chart::FillProperties::AddDefaultsToMap( aTmp );
 
-struct StaticStockBarDefaults : public rtl::StaticAggregate< 
::chart::tPropertyValueMap, StaticStockBarDefaults_Initializer >
-{
+            // override other defaults
+            ::chart::PropertyHelper::setPropertyValue< sal_Int32 >( aTmp, 
::chart::FillProperties::PROP_FILL_COLOR, 0xffffff ); // white
+            return aTmp;
+        }();
+    return aStaticDefaults;
 };
 
 } // anonymous namespace
@@ -147,7 +114,7 @@ uno::Reference< util::XCloneable > SAL_CALL 
StockBar::createClone()
 // ____ OPropertySet ____
 void StockBar::GetDefaultValue( sal_Int32 nHandle, uno::Any& rAny ) const
 {
-    const tPropertyValueMap& rStaticDefaults = *StaticStockBarDefaults::get();
+    const tPropertyValueMap& rStaticDefaults = StaticStockBarDefaults();
     tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( nHandle ) 
);
     if( aFound == rStaticDefaults.end() )
         rAny.clear();
@@ -157,13 +124,15 @@ void StockBar::GetDefaultValue( sal_Int32 nHandle, 
uno::Any& rAny ) const
 
 ::cppu::IPropertyArrayHelper & SAL_CALL StockBar::getInfoHelper()
 {
-    return *StaticStockBarInfoHelper::get();
+    return StaticStockBarInfoHelper();
 }
 
 // ____ XPropertySet ____
 Reference< beans::XPropertySetInfo > SAL_CALL StockBar::getPropertySetInfo()
 {
-    return *StaticStockBarInfo::get();
+    static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
+        
::cppu::OPropertySetHelper::createPropertySetInfo(StaticStockBarInfoHelper() ) 
);
+    return xPropertySetInfo;
 }
 
 // ____ XModifyBroadcaster ____
diff --git a/chart2/source/model/main/Title.cxx 
b/chart2/source/model/main/Title.cxx
index e0aec51124f3..6833684e9bf2 100644
--- a/chart2/source/model/main/Title.cxx
+++ b/chart2/source/model/main/Title.cxx
@@ -139,86 +139,54 @@ void lcl_AddPropertiesToVector(
                   | beans::PropertyAttribute::MAYBEVOID );
 }
 
-struct StaticTitleDefaults_Initializer
+const ::chart::tPropertyValueMap& StaticTitleDefaults()
 {
-    ::chart::tPropertyValueMap* operator()()
-    {
-        static ::chart::tPropertyValueMap aStaticDefaults;
-        lcl_AddDefaultsToMap( aStaticDefaults );
-        return &aStaticDefaults;
-    }
-private:
-    static void lcl_AddDefaultsToMap( ::chart::tPropertyValueMap & rOutMap )
-    {
-        ::chart::LinePropertiesHelper::AddDefaultsToMap( rOutMap );
-        ::chart::FillProperties::AddDefaultsToMap( rOutMap );
-
-        // ParagraphProperties
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_TITLE_PARA_ADJUST,
-                                                          
css::style::ParagraphAdjust_CENTER );
-        // PROP_TITLE_PARA_LAST_LINE_ADJUST
-
-        ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( 
rOutMap, PROP_TITLE_PARA_LEFT_MARGIN, 0 );
-        ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( 
rOutMap, PROP_TITLE_PARA_RIGHT_MARGIN, 0 );
-        ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( 
rOutMap, PROP_TITLE_PARA_TOP_MARGIN, 0 );
-        ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( 
rOutMap, PROP_TITLE_PARA_BOTTOM_MARGIN, 0 );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_TITLE_PARA_IS_HYPHENATION, true );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_TITLE_VISIBLE, true );
-
-        // own properties
-        ::chart::PropertyHelper::setPropertyValueDefault< double >( rOutMap, 
PROP_TITLE_TEXT_ROTATION, 0.0 );
-        ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, 
PROP_TITLE_TEXT_STACKED, false );
-
-        // override other defaults
-        ::chart::PropertyHelper::setPropertyValue( rOutMap, 
::chart::FillProperties::PROP_FILL_STYLE, drawing::FillStyle_NONE );
-        ::chart::PropertyHelper::setPropertyValue( rOutMap, 
::chart::LinePropertiesHelper::PROP_LINE_STYLE, drawing::LineStyle_NONE );
-    }
-};
-
-struct StaticTitleDefaults : public rtl::StaticAggregate< 
::chart::tPropertyValueMap, StaticTitleDefaults_Initializer >
-{
-};
-
-struct StaticTitleInfoHelper_Initializer
-{
-    ::cppu::OPropertyArrayHelper* operator()()
-    {
-        static ::cppu::OPropertyArrayHelper aPropHelper( 
lcl_GetPropertySequence() );
-        return &aPropHelper;
-    }
-
-private:
-    static uno::Sequence< Property > lcl_GetPropertySequence()
-    {
-        std::vector< css::beans::Property > aProperties;
-        lcl_AddPropertiesToVector( aProperties );
-        ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties );
-        ::chart::FillProperties::AddPropertiesToVector( aProperties );
-
-        std::sort( aProperties.begin(), aProperties.end(),
-                     ::chart::PropertyNameLess() );
-
-        return comphelper::containerToSequence( aProperties );
-    }
-
-};
-
-struct StaticTitleInfoHelper : public rtl::StaticAggregate< 
::cppu::OPropertyArrayHelper, StaticTitleInfoHelper_Initializer >
-{
-};
-
-struct StaticTitleInfo_Initializer
-{
-    uno::Reference< beans::XPropertySetInfo >* operator()()
-    {
-        static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
-            
::cppu::OPropertySetHelper::createPropertySetInfo(*StaticTitleInfoHelper::get() 
) );
-        return &xPropertySetInfo;
-    }
+    static ::chart::tPropertyValueMap aStaticDefaults = []()
+        {
+            ::chart::tPropertyValueMap aTmp;
+
+            ::chart::LinePropertiesHelper::AddDefaultsToMap( aTmp );
+            ::chart::FillProperties::AddDefaultsToMap( aTmp );
+
+            // ParagraphProperties
+            ::chart::PropertyHelper::setPropertyValueDefault( aTmp, 
PROP_TITLE_PARA_ADJUST,
+                                                              
css::style::ParagraphAdjust_CENTER );
+            // PROP_TITLE_PARA_LAST_LINE_ADJUST
+
+            ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( 
aTmp, PROP_TITLE_PARA_LEFT_MARGIN, 0 );
+            ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( 
aTmp, PROP_TITLE_PARA_RIGHT_MARGIN, 0 );
+            ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( 
aTmp, PROP_TITLE_PARA_TOP_MARGIN, 0 );
+            ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( 
aTmp, PROP_TITLE_PARA_BOTTOM_MARGIN, 0 );
+            ::chart::PropertyHelper::setPropertyValueDefault( aTmp, 
PROP_TITLE_PARA_IS_HYPHENATION, true );
+            ::chart::PropertyHelper::setPropertyValueDefault( aTmp, 
PROP_TITLE_VISIBLE, true );
+
+            // own properties
+            ::chart::PropertyHelper::setPropertyValueDefault< double >( aTmp, 
PROP_TITLE_TEXT_ROTATION, 0.0 );
+            ::chart::PropertyHelper::setPropertyValueDefault( aTmp, 
PROP_TITLE_TEXT_STACKED, false );
+
+            // override other defaults
+            ::chart::PropertyHelper::setPropertyValue( aTmp, 
::chart::FillProperties::PROP_FILL_STYLE, drawing::FillStyle_NONE );
+            ::chart::PropertyHelper::setPropertyValue( aTmp, 
::chart::LinePropertiesHelper::PROP_LINE_STYLE, drawing::LineStyle_NONE );
+            return aTmp;
+        }();
+    return aStaticDefaults;
 };
 
-struct StaticTitleInfo : public rtl::StaticAggregate< uno::Reference< 
beans::XPropertySetInfo >, StaticTitleInfo_Initializer >
+::cppu::OPropertyArrayHelper& StaticTitleInfoHelper()
 {
+    static ::cppu::OPropertyArrayHelper aPropHelper = []()
+        {
+            std::vector< css::beans::Property > aProperties;
+            lcl_AddPropertiesToVector( aProperties );
+            ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties 
);
+            ::chart::FillProperties::AddPropertiesToVector( aProperties );
+
+            std::sort( aProperties.begin(), aProperties.end(),
+                         ::chart::PropertyNameLess() );
+
+            return comphelper::containerToSequence( aProperties );
+        }();
+    return aPropHelper;
 };
 
 } // anonymous namespace
@@ -283,7 +251,7 @@ void SAL_CALL Title::setText( const uno::Sequence< 
uno::Reference< chart2::XForm
 // ____ OPropertySet ____
 void Title::GetDefaultValue( sal_Int32 nHandle, uno::Any& rAny ) const
 {
-    const tPropertyValueMap& rStaticDefaults = *StaticTitleDefaults::get();
+    const tPropertyValueMap& rStaticDefaults = StaticTitleDefaults();
     tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( nHandle ) 
);
     if( aFound == rStaticDefaults.end() )
         rAny.clear();
@@ -293,13 +261,15 @@ void Title::GetDefaultValue( sal_Int32 nHandle, uno::Any& 
rAny ) const
 
 ::cppu::IPropertyArrayHelper & SAL_CALL Title::getInfoHelper()
 {
-    return *StaticTitleInfoHelper::get();
+    return StaticTitleInfoHelper();
 }
 
 // ____ XPropertySet ____
 uno::Reference< beans::XPropertySetInfo > SAL_CALL Title::getPropertySetInfo()
 {
-    return *StaticTitleInfo::get();
+    static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
+        
::cppu::OPropertySetHelper::createPropertySetInfo(StaticTitleInfoHelper() ) );
+    return xPropertySetInfo;
 }
 
 // ____ XModifyBroadcaster ____
diff --git a/chart2/source/model/main/Wall.cxx 
b/chart2/source/model/main/Wall.cxx
index f745f05abd61..1bbe133de905 100644
--- a/chart2/source/model/main/Wall.cxx
+++ b/chart2/source/model/main/Wall.cxx
@@ -35,69 +35,21 @@ using ::com::sun::star::beans::Property;
 namespace
 {
 
-struct StaticWallDefaults_Initializer
+::cppu::OPropertyArrayHelper& StaticWallInfoHelper()
 {
-    ::chart::tPropertyValueMap* operator()()
-    {
-        static ::chart::tPropertyValueMap aStaticDefaults;
-        lcl_AddDefaultsToMap( aStaticDefaults );
-        return &aStaticDefaults;
-    }
-private:
-    static void lcl_AddDefaultsToMap( ::chart::tPropertyValueMap & rOutMap )
-    {
-        ::chart::LinePropertiesHelper::AddDefaultsToMap( rOutMap );
-        ::chart::FillProperties::AddDefaultsToMap( rOutMap );
-
-        // override other defaults
-        ::chart::PropertyHelper::setPropertyValue( rOutMap, 
::chart::LinePropertiesHelper::PROP_LINE_STYLE, drawing::LineStyle_NONE );
-    }
-};
-
-struct StaticWallDefaults : public rtl::StaticAggregate< 
::chart::tPropertyValueMap, StaticWallDefaults_Initializer >
-{
-};
-
-struct StaticWallInfoHelper_Initializer
-{
-    ::cppu::OPropertyArrayHelper* operator()()
-    {
-        static ::cppu::OPropertyArrayHelper aPropHelper( 
lcl_GetPropertySequence() );
-        return &aPropHelper;
-    }
-
-private:
-    static uno::Sequence< Property > lcl_GetPropertySequence()
-    {
-        std::vector< css::beans::Property > aProperties;
-        ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties );
-        ::chart::FillProperties::AddPropertiesToVector( aProperties );
-        ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties );
-
-        std::sort( aProperties.begin(), aProperties.end(),
-                     ::chart::PropertyNameLess() );
-
-        return comphelper::containerToSequence( aProperties );
-    }
-
-};
+    static ::cppu::OPropertyArrayHelper aPropHelper = []()
+        {
+            std::vector< css::beans::Property > aProperties;
+            ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties 
);
+            ::chart::FillProperties::AddPropertiesToVector( aProperties );
+            ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties 
);
 
-struct StaticWallInfoHelper : public rtl::StaticAggregate< 
::cppu::OPropertyArrayHelper, StaticWallInfoHelper_Initializer >
-{
-};
+            std::sort( aProperties.begin(), aProperties.end(),
+                         ::chart::PropertyNameLess() );
 
-struct StaticWallInfo_Initializer
-{
-    uno::Reference< beans::XPropertySetInfo >* operator()()
-    {
-        static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
-            
::cppu::OPropertySetHelper::createPropertySetInfo(*StaticWallInfoHelper::get() 
) );
-        return &xPropertySetInfo;
-    }
-};
-
-struct StaticWallInfo : public rtl::StaticAggregate< uno::Reference< 
beans::XPropertySetInfo >, StaticWallInfo_Initializer >
-{
+            return comphelper::containerToSequence( aProperties );
+        }();
+    return aPropHelper;
 };
 
 } // anonymous namespace
@@ -135,9 +87,18 @@ uno::Reference< util::XCloneable > SAL_CALL 
Wall::createClone()
 // ____ OPropertySet ____
 void Wall::GetDefaultValue( sal_Int32 nHandle, uno::Any& rAny ) const
 {
-    const tPropertyValueMap& rStaticDefaults = *StaticWallDefaults::get();
-    tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( nHandle ) 
);
-    if( aFound == rStaticDefaults.end() )
+    static ::chart::tPropertyValueMap aStaticDefaults = []()
+        {
+            ::chart::tPropertyValueMap aTmp;
+            ::chart::LinePropertiesHelper::AddDefaultsToMap( aTmp );
+            ::chart::FillProperties::AddDefaultsToMap( aTmp );
+
+            // override other defaults
+            ::chart::PropertyHelper::setPropertyValue( aTmp, 
::chart::LinePropertiesHelper::PROP_LINE_STYLE, drawing::LineStyle_NONE );
+            return aTmp;
+        }();
+    tPropertyValueMap::const_iterator aFound( aStaticDefaults.find( nHandle ) 
);
+    if( aFound == aStaticDefaults.end() )
         rAny.clear();
     else
         rAny = (*aFound).second;
@@ -145,13 +106,15 @@ void Wall::GetDefaultValue( sal_Int32 nHandle, uno::Any& 
rAny ) const
 
 ::cppu::IPropertyArrayHelper & SAL_CALL Wall::getInfoHelper()
 {
-    return *StaticWallInfoHelper::get();
+    return StaticWallInfoHelper();
 }
 
 // ____ XPropertySet ____
 uno::Reference< beans::XPropertySetInfo > SAL_CALL Wall::getPropertySetInfo()
 {
-    return *StaticWallInfo::get();
+    static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
+        
::cppu::OPropertySetHelper::createPropertySetInfo(StaticWallInfoHelper() ) );
+    return xPropertySetInfo;
 }
 
 // ____ XModifyBroadcaster ____

Reply via email to