summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-11-20 13:09:09 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-11-23 13:35:25 +0100
commit70894bcdb3912dbe87031da0af9ae5d591275e2a (patch)
treeca424232691a12bfca34293b093a7d9bd21525e9 /chart2
parent0c8b936734285ee7f373c41ecbad5a65953789dc (diff)
improve function local statics
simplify the initialisaion and make them thread-safe i.e. initialise them using the runtime's local static locking. Thanks to mike kaganski for pointing out the nice lambda approach that makes this feasible. Change-Id: I76391189a6d0a3d7eed2d0d88d28dfa6541eaff7 Reviewed-on: https://gerrit.libreoffice.org/63645 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'chart2')
-rw-r--r--chart2/source/controller/dialogs/DialogModel.cxx81
1 files changed, 39 insertions, 42 deletions
diff --git a/chart2/source/controller/dialogs/DialogModel.cxx b/chart2/source/controller/dialogs/DialogModel.cxx
index d38ee3c68cbe..281f66c309f7 100644
--- a/chart2/source/controller/dialogs/DialogModel.cxx
+++ b/chart2/source/controller/dialogs/DialogModel.cxx
@@ -75,28 +75,26 @@ OUString lcl_ConvertRole( const OUString & rRoleString )
OUString aResult( rRoleString );
typedef std::map< OUString, OUString > tTranslationMap;
- static tTranslationMap aTranslationMap;
-
- if( aTranslationMap.empty() )
+ static tTranslationMap aTranslationMap =
{
- aTranslationMap[ "categories" ] = ::chart::SchResId( STR_DATA_ROLE_CATEGORIES );
- aTranslationMap[ "error-bars-x" ] = ::chart::SchResId( STR_DATA_ROLE_X_ERROR );
- aTranslationMap[ "error-bars-x-positive" ] = ::chart::SchResId( STR_DATA_ROLE_X_ERROR_POSITIVE );
- aTranslationMap[ "error-bars-x-negative" ] = ::chart::SchResId( STR_DATA_ROLE_X_ERROR_NEGATIVE );
- aTranslationMap[ "error-bars-y" ] = ::chart::SchResId( STR_DATA_ROLE_Y_ERROR );
- aTranslationMap[ "error-bars-y-positive" ] = ::chart::SchResId( STR_DATA_ROLE_Y_ERROR_POSITIVE );
- aTranslationMap[ "error-bars-y-negative" ] = ::chart::SchResId( STR_DATA_ROLE_Y_ERROR_NEGATIVE );
- aTranslationMap[ "label" ] = ::chart::SchResId( STR_DATA_ROLE_LABEL );
- aTranslationMap[ "values-first" ] = ::chart::SchResId( STR_DATA_ROLE_FIRST );
- aTranslationMap[ "values-last" ] = ::chart::SchResId( STR_DATA_ROLE_LAST );
- aTranslationMap[ "values-max" ] = ::chart::SchResId( STR_DATA_ROLE_MAX );
- aTranslationMap[ "values-min" ] = ::chart::SchResId( STR_DATA_ROLE_MIN );
- aTranslationMap[ "values-x" ] = ::chart::SchResId( STR_DATA_ROLE_X );
- aTranslationMap[ "values-y" ] = ::chart::SchResId( STR_DATA_ROLE_Y );
- aTranslationMap[ "values-size" ] = ::chart::SchResId( STR_DATA_ROLE_SIZE );
- aTranslationMap[ "FillColor" ] = ::chart::SchResId( STR_PROPERTY_ROLE_FILLCOLOR );
- aTranslationMap[ "BorderColor" ] = ::chart::SchResId( STR_PROPERTY_ROLE_BORDERCOLOR );
- }
+ { "categories", ::chart::SchResId( STR_DATA_ROLE_CATEGORIES ) },
+ { "error-bars-x", ::chart::SchResId( STR_DATA_ROLE_X_ERROR ) },
+ { "error-bars-x-positive", ::chart::SchResId( STR_DATA_ROLE_X_ERROR_POSITIVE ) },
+ { "error-bars-x-negative", ::chart::SchResId( STR_DATA_ROLE_X_ERROR_NEGATIVE ) },
+ { "error-bars-y", ::chart::SchResId( STR_DATA_ROLE_Y_ERROR ) },
+ { "error-bars-y-positive", ::chart::SchResId( STR_DATA_ROLE_Y_ERROR_POSITIVE ) },
+ { "error-bars-y-negative", ::chart::SchResId( STR_DATA_ROLE_Y_ERROR_NEGATIVE ) },
+ { "label", ::chart::SchResId( STR_DATA_ROLE_LABEL ) },
+ { "values-first", ::chart::SchResId( STR_DATA_ROLE_FIRST ) },
+ { "values-last", ::chart::SchResId( STR_DATA_ROLE_LAST ) },
+ { "values-max", ::chart::SchResId( STR_DATA_ROLE_MAX ) },
+ { "values-min", ::chart::SchResId( STR_DATA_ROLE_MIN ) },
+ { "values-x", ::chart::SchResId( STR_DATA_ROLE_X ) },
+ { "values-y", ::chart::SchResId( STR_DATA_ROLE_Y ) },
+ { "values-size", ::chart::SchResId( STR_DATA_ROLE_SIZE ) },
+ { "FillColor", ::chart::SchResId( STR_PROPERTY_ROLE_FILLCOLOR ) },
+ { "BorderColor", ::chart::SchResId( STR_PROPERTY_ROLE_BORDERCOLOR ) },
+ };
tTranslationMap::const_iterator aIt( aTranslationMap.find( rRoleString ));
if( aIt != aTranslationMap.end())
@@ -108,26 +106,28 @@ OUString lcl_ConvertRole( const OUString & rRoleString )
typedef std::map< OUString, sal_Int32 > lcl_tRoleIndexMap;
-void lcl_createRoleIndexMap( lcl_tRoleIndexMap & rOutMap )
+lcl_tRoleIndexMap lcl_createRoleIndexMap()
{
- rOutMap.clear();
+ lcl_tRoleIndexMap aMap;
sal_Int32 nIndex = 0;
- rOutMap[ "label" ] = ++nIndex;
- rOutMap[ "categories" ] = ++nIndex;
- rOutMap[ "values-x" ] = ++nIndex;
- rOutMap[ "values-y" ] = ++nIndex;
- rOutMap[ "error-bars-x" ] = ++nIndex;
- rOutMap[ "error-bars-x-positive" ] = ++nIndex;
- rOutMap[ "error-bars-x-negative" ] = ++nIndex;
- rOutMap[ "error-bars-y" ] = ++nIndex;
- rOutMap[ "error-bars-y-positive" ] = ++nIndex;
- rOutMap[ "error-bars-y-negative" ] = ++nIndex;
- rOutMap[ "values-first" ] = ++nIndex;
- rOutMap[ "values-min" ] = ++nIndex;
- rOutMap[ "values-max" ] = ++nIndex;
- rOutMap[ "values-last" ] = ++nIndex;
- rOutMap[ "values-size" ] = ++nIndex;
+ aMap[ "label" ] = ++nIndex;
+ aMap[ "categories" ] = ++nIndex;
+ aMap[ "values-x" ] = ++nIndex;
+ aMap[ "values-y" ] = ++nIndex;
+ aMap[ "error-bars-x" ] = ++nIndex;
+ aMap[ "error-bars-x-positive" ] = ++nIndex;
+ aMap[ "error-bars-x-negative" ] = ++nIndex;
+ aMap[ "error-bars-y" ] = ++nIndex;
+ aMap[ "error-bars-y-positive" ] = ++nIndex;
+ aMap[ "error-bars-y-negative" ] = ++nIndex;
+ aMap[ "values-first" ] = ++nIndex;
+ aMap[ "values-min" ] = ++nIndex;
+ aMap[ "values-max" ] = ++nIndex;
+ aMap[ "values-last" ] = ++nIndex;
+ aMap[ "values-size" ] = ++nIndex;
+
+ return aMap;
}
struct lcl_DataSeriesContainerAppend
@@ -766,10 +766,7 @@ OUString DialogModel::GetRoleDataLabel()
sal_Int32 DialogModel::GetRoleIndexForSorting( const OUString & rInternalRoleString )
{
- static lcl_tRoleIndexMap aRoleIndexMap;
-
- if( aRoleIndexMap.empty())
- lcl_createRoleIndexMap( aRoleIndexMap );
+ static lcl_tRoleIndexMap aRoleIndexMap = lcl_createRoleIndexMap();
lcl_tRoleIndexMap::const_iterator aIt( aRoleIndexMap.find( rInternalRoleString ));
if( aIt != aRoleIndexMap.end())