summaryrefslogtreecommitdiffstats
path: root/filter
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-11-21 11:47:47 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-11-22 07:33:56 +0100
commit2e6a38b7f007b36719f5fc002cb4363dec45e0d4 (patch)
tree7b9c691228821149d96d3859be07f50bc1e93515 /filter
parentuitest Calc - Multiple operations and Share spreadsheet dialogs (diff)
downloadcore-2e6a38b7f007b36719f5fc002cb4363dec45e0d4.tar.gz
core-2e6a38b7f007b36719f5fc002cb4363dec45e0d4.zip
improve function-local statics in dbaccess..filter
Change-Id: I64939ad4b6c53696e33300114db384abfe73f13f Reviewed-on: https://gerrit.libreoffice.org/63702 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'filter')
-rw-r--r--filter/source/graphicfilter/ipict/ipict.cxx14
-rw-r--r--filter/source/msfilter/msvbahelper.cxx9
-rw-r--r--filter/source/msfilter/util.cxx37
-rw-r--r--filter/source/xsltdialog/xmlfiltercommon.hxx2
-rw-r--r--filter/source/xsltdialog/xmlfiltersettingsdialog.cxx56
-rw-r--r--filter/source/xsltdialog/xmlfiltertabpagebasic.cxx14
6 files changed, 60 insertions, 72 deletions
diff --git a/filter/source/graphicfilter/ipict/ipict.cxx b/filter/source/graphicfilter/ipict/ipict.cxx
index 48e534b83132..afe4236071be 100644
--- a/filter/source/graphicfilter/ipict/ipict.cxx
+++ b/filter/source/graphicfilter/ipict/ipict.cxx
@@ -303,9 +303,8 @@ static void SetByte(sal_uInt16& nx, sal_uInt16 ny, vcl::bitmap::RawBitmap& rBitm
//=================== methods of PictReader ==============================
rtl_TextEncoding PictReader::GetTextEncoding (sal_uInt16 fId) {
- static bool first = true;
- static rtl_TextEncoding enc = RTL_TEXTENCODING_APPLE_ROMAN;
- if (first) {
+ static rtl_TextEncoding enc = [&]()
+ {
rtl_TextEncoding def = osl_getThreadTextEncoding();
// we keep osl_getThreadTextEncoding only if it is a mac encoding
switch(def) {
@@ -329,11 +328,12 @@ rtl_TextEncoding PictReader::GetTextEncoding (sal_uInt16 fId) {
case RTL_TEXTENCODING_APPLE_CHINTRAD:
case RTL_TEXTENCODING_APPLE_JAPANESE:
case RTL_TEXTENCODING_APPLE_KOREAN:
- enc = def; break;
- default: break;
+ return def; break;
+ default:
+ break;
}
- first = false;
- }
+ return RTL_TEXTENCODING_APPLE_ROMAN;
+ }();
if (fId == 13) return RTL_TEXTENCODING_ADOBE_DINGBATS; // CHECKME
if (fId == 23) return RTL_TEXTENCODING_ADOBE_SYMBOL;
return enc;
diff --git a/filter/source/msfilter/msvbahelper.cxx b/filter/source/msfilter/msvbahelper.cxx
index 8e7cfec8267c..2a89ae769cdc 100644
--- a/filter/source/msfilter/msvbahelper.cxx
+++ b/filter/source/msfilter/msvbahelper.cxx
@@ -689,14 +689,15 @@ KeyCodeEntry const aMSKeyCodesData[] = {
awt::KeyEvent parseKeyEvent( const OUString& Key )
{
- static std::map< OUString, sal_uInt16 > s_KeyCodes;
- if ( s_KeyCodes.empty() )
+ static std::map< OUString, sal_uInt16 > s_KeyCodes = [&]()
{
+ std::map< OUString, sal_uInt16 > tmp;
for (KeyCodeEntry const & i : aMSKeyCodesData)
{
- s_KeyCodes[ OUString::createFromAscii( i.sName ) ] = i.nCode;
+ tmp[ OUString::createFromAscii( i.sName ) ] = i.nCode;
}
- }
+ return tmp;
+ }();
OUString sKeyCode;
sal_uInt16 nVclKey = 0;
diff --git a/filter/source/msfilter/util.cxx b/filter/source/msfilter/util.cxx
index 2764dfc2fb23..cab2424a2083 100644
--- a/filter/source/msfilter/util.cxx
+++ b/filter/source/msfilter/util.cxx
@@ -1167,40 +1167,37 @@ static struct {
{"textBox", mso_sptTextBox},
};
-typedef std::unordered_map< const char*, const char*, rtl::CStringHash, rtl::CStringEqual> CustomShapeTypeTranslationHashMap;
-static CustomShapeTypeTranslationHashMap* pCustomShapeTypeTranslationHashMap = nullptr;
-
const char* GetOOXMLPresetGeometry( const char* sShapeType )
{
- if( pCustomShapeTypeTranslationHashMap == nullptr )
+ typedef std::unordered_map< const char*, const char*, rtl::CStringHash, rtl::CStringEqual> CustomShapeTypeTranslationHashMap;
+ static CustomShapeTypeTranslationHashMap aCustomShapeTypeTranslationHashMap = [&]()
{
- pCustomShapeTypeTranslationHashMap = new CustomShapeTypeTranslationHashMap;
+ CustomShapeTypeTranslationHashMap tmp;
for(const msfilter::util::CustomShapeTypeTranslationTable& i : pCustomShapeTypeTranslationTable)
{
- (*pCustomShapeTypeTranslationHashMap)[ i.sOOo ] = i.sMSO;
+ tmp[ i.sOOo ] = i.sMSO;
}
- }
+ return tmp;
+ }();
CustomShapeTypeTranslationHashMap::iterator i(
- pCustomShapeTypeTranslationHashMap->find(sShapeType));
- return i == pCustomShapeTypeTranslationHashMap->end() ? "rect" : i->second;
+ aCustomShapeTypeTranslationHashMap.find(sShapeType));
+ return i == aCustomShapeTypeTranslationHashMap.end() ? "rect" : i->second;
}
-typedef std::unordered_map< const char*, MSO_SPT, rtl::CStringHash, rtl::CStringEqual> DMLToVMLTranslationHashMap;
-static DMLToVMLTranslationHashMap* pDMLToVMLMap;
-
MSO_SPT GETVMLShapeType(const OString& aType)
{
- const char* pDML = GetOOXMLPresetGeometry(aType.getStr());
-
- if (!pDMLToVMLMap)
+ typedef std::unordered_map< const char*, MSO_SPT, rtl::CStringHash, rtl::CStringEqual> DMLToVMLTranslationHashMap;
+ static DMLToVMLTranslationHashMap aDMLToVMLMap = [&]()
{
- pDMLToVMLMap = new DMLToVMLTranslationHashMap;
+ DMLToVMLTranslationHashMap tmp;
for (auto& i : pDMLToVMLTable)
- (*pDMLToVMLMap)[i.sDML] = i.nVML;
- }
+ tmp[i.sDML] = i.nVML;
+ return tmp;
+ }();
- DMLToVMLTranslationHashMap::iterator i(pDMLToVMLMap->find(pDML));
- return i == pDMLToVMLMap->end() ? mso_sptNil : i->second;
+ const char* pDML = GetOOXMLPresetGeometry(aType.getStr());
+ DMLToVMLTranslationHashMap::iterator i(aDMLToVMLMap.find(pDML));
+ return i == aDMLToVMLMap.end() ? mso_sptNil : i->second;
}
bool HasTextBoxContent(sal_uInt32 nShapeType)
diff --git a/filter/source/xsltdialog/xmlfiltercommon.hxx b/filter/source/xsltdialog/xmlfiltercommon.hxx
index 3d87a3e6bce3..83ab9f470a5e 100644
--- a/filter/source/xsltdialog/xmlfiltercommon.hxx
+++ b/filter/source/xsltdialog/xmlfiltercommon.hxx
@@ -78,7 +78,7 @@ struct application_info_impl
};
-extern std::vector< application_info_impl* >& getApplicationInfos();
+extern std::vector< application_info_impl > const & getApplicationInfos();
extern OUString getApplicationUIName( const OUString& rServiceName );
extern const application_info_impl* getApplicationInfo( const OUString& rServiceName );
OUString XsltResId(const char* pId);
diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
index f1d82327ca75..88eccc7d2167 100644
--- a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
+++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
@@ -1186,74 +1186,64 @@ application_info_impl::application_info_impl( const sal_Char * pDocumentService,
{
}
-std::vector< application_info_impl* >& getApplicationInfos()
+std::vector< application_info_impl > const & getApplicationInfos()
{
- static std::vector< application_info_impl* > aInfos;
-
- if( aInfos.empty() )
+ static std::vector< application_info_impl > const aInfos
{
- aInfos.push_back( new application_info_impl(
- "com.sun.star.text.TextDocument",
+ { "com.sun.star.text.TextDocument",
STR_APPL_NAME_WRITER,
"com.sun.star.comp.Writer.XMLImporter",
- "com.sun.star.comp.Writer.XMLExporter" ) );
+ "com.sun.star.comp.Writer.XMLExporter" },
- aInfos.push_back( new application_info_impl(
- "com.sun.star.sheet.SpreadsheetDocument",
+ { "com.sun.star.sheet.SpreadsheetDocument",
STR_APPL_NAME_CALC,
"com.sun.star.comp.Calc.XMLImporter",
- "com.sun.star.comp.Calc.XMLExporter" ) );
+ "com.sun.star.comp.Calc.XMLExporter" },
- aInfos.push_back( new application_info_impl(
- "com.sun.star.presentation.PresentationDocument",
+ { "com.sun.star.presentation.PresentationDocument",
STR_APPL_NAME_IMPRESS,
"com.sun.star.comp.Impress.XMLImporter",
- "com.sun.star.comp.Impress.XMLExporter" ) );
+ "com.sun.star.comp.Impress.XMLExporter" },
- aInfos.push_back( new application_info_impl(
- "com.sun.star.drawing.DrawingDocument",
+ { "com.sun.star.drawing.DrawingDocument",
STR_APPL_NAME_DRAW,
"com.sun.star.comp.Draw.XMLImporter",
- "com.sun.star.comp.Draw.XMLExporter" ) );
+ "com.sun.star.comp.Draw.XMLExporter" },
// --- oasis file formats...
- aInfos.push_back( new application_info_impl(
- "com.sun.star.text.TextDocument",
+ { "com.sun.star.text.TextDocument",
STR_APPL_NAME_OASIS_WRITER,
"com.sun.star.comp.Writer.XMLOasisImporter",
- "com.sun.star.comp.Writer.XMLOasisExporter" ) );
+ "com.sun.star.comp.Writer.XMLOasisExporter" },
- aInfos.push_back( new application_info_impl(
- "com.sun.star.sheet.SpreadsheetDocument",
+ { "com.sun.star.sheet.SpreadsheetDocument",
STR_APPL_NAME_OASIS_CALC,
"com.sun.star.comp.Calc.XMLOasisImporter",
- "com.sun.star.comp.Calc.XMLOasisExporter" ) );
+ "com.sun.star.comp.Calc.XMLOasisExporter" },
- aInfos.push_back( new application_info_impl(
- "com.sun.star.presentation.PresentationDocument",
+ { "com.sun.star.presentation.PresentationDocument",
STR_APPL_NAME_OASIS_IMPRESS,
"com.sun.star.comp.Impress.XMLOasisImporter",
- "com.sun.star.comp.Impress.XMLOasisExporter" ) );
+ "com.sun.star.comp.Impress.XMLOasisExporter" },
- aInfos.push_back( new application_info_impl(
- "com.sun.star.drawing.DrawingDocument",
+ { "com.sun.star.drawing.DrawingDocument",
STR_APPL_NAME_OASIS_DRAW,
"com.sun.star.comp.Draw.XMLOasisImporter",
- "com.sun.star.comp.Draw.XMLOasisExporter" ) );
- }
+ "com.sun.star.comp.Draw.XMLOasisExporter" },
+ };
return aInfos;
}
const application_info_impl* getApplicationInfo( const OUString& rServiceName )
{
- std::vector< application_info_impl* >& rInfos = getApplicationInfos();
+ std::vector< application_info_impl > const & rInfos = getApplicationInfos();
for (auto const& info : rInfos)
{
- if( rServiceName == info->maXMLExporter ||
- rServiceName == info->maXMLImporter)
+ if( rServiceName == info.maXMLExporter ||
+ rServiceName == info.maXMLImporter)
{
- return info;
+ return &info;
}
}
return nullptr;
diff --git a/filter/source/xsltdialog/xmlfiltertabpagebasic.cxx b/filter/source/xsltdialog/xmlfiltertabpagebasic.cxx
index 7b6e519c813f..af2b6148d51f 100644
--- a/filter/source/xsltdialog/xmlfiltertabpagebasic.cxx
+++ b/filter/source/xsltdialog/xmlfiltertabpagebasic.cxx
@@ -34,10 +34,10 @@ XMLFilterTabPageBasic::XMLFilterTabPageBasic(weld::Widget* pPage)
{
m_xEDDescription->set_size_request(-1, m_xEDDescription->get_height_rows(4));
- std::vector< application_info_impl* >& rInfos = getApplicationInfos();
+ std::vector< application_info_impl > const & rInfos = getApplicationInfos();
for (auto const& info : rInfos)
{
- OUString aEntry( info->maDocumentUIName );
+ OUString aEntry( info.maDocumentUIName );
m_xCBApplication->append_text( aEntry );
}
}
@@ -92,14 +92,14 @@ void XMLFilterTabPageBasic::FillInfo( filter_info_impl* pInfo )
if( !pInfo->maDocumentService.isEmpty() )
{
- std::vector< application_info_impl* >& rInfos = getApplicationInfos();
+ std::vector< application_info_impl > const & rInfos = getApplicationInfos();
for (auto const& info : rInfos)
{
- if( pInfo->maDocumentService == info->maDocumentUIName )
+ if( pInfo->maDocumentService == info.maDocumentUIName )
{
- pInfo->maDocumentService = info->maDocumentService;
- pInfo->maExportService = info->maXMLExporter;
- pInfo->maImportService = info->maXMLImporter;
+ pInfo->maDocumentService = info.maDocumentService;
+ pInfo->maExportService = info.maXMLExporter;
+ pInfo->maImportService = info.maXMLImporter;
break;
}
}