tdf#63640 FILEOPEN/FILESAVE: particular .odt loads/saves very slow, part4
cache the XMLTokenMap data in static const vars, so we only need to
initialise them once
Change-Id: Ib63bedc5af5d5927fed189a6b1a86a5db6865c72
Reviewed-on: https://gerrit.libreoffice.org/71466
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx
index 44540e4..794ddef 100644
--- a/xmloff/inc/txtfldi.hxx
+++ b/xmloff/inc/txtfldi.hxx
@@ -945,8 +945,6 @@
/** import dde field declaration container (<text:dde-connection-decls>) */
class XMLDdeFieldDeclsImportContext : public SvXMLImportContext
{
SvXMLTokenMap const aTokenMap;
public:
XMLDdeFieldDeclsImportContext(SvXMLImport& rImport,
diff --git a/xmloff/source/chart/XMLSymbolImageContext.cxx b/xmloff/source/chart/XMLSymbolImageContext.cxx
index 4e9fae4..5fce5f6 100644
--- a/xmloff/source/chart/XMLSymbolImageContext.cxx
+++ b/xmloff/source/chart/XMLSymbolImageContext.cxx
@@ -61,7 +61,7 @@
void XMLSymbolImageContext::StartElement( const uno::Reference< xml::sax::XAttributeList >& xAttrList )
{
SvXMLTokenMap aTokenMap( aSymbolImageAttrTokenMap );
static const SvXMLTokenMap aTokenMap( aSymbolImageAttrTokenMap );
OUString aLocalName;
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
diff --git a/xmloff/source/draw/XMLImageMapContext.cxx b/xmloff/source/draw/XMLImageMapContext.cxx
index b7386c2..c7126b0 100644
--- a/xmloff/source/draw/XMLImageMapContext.cxx
+++ b/xmloff/source/draw/XMLImageMapContext.cxx
@@ -173,7 +173,7 @@
void XMLImageMapObjectContext::StartElement(
const Reference<XAttributeList >& xAttrList )
{
SvXMLTokenMap aMap(aImageMapObjectTokenMap);
static const SvXMLTokenMap aMap(aImageMapObjectTokenMap);
sal_Int16 nLength = xAttrList->getLength();
for(sal_Int16 nAttr = 0; nAttr < nLength; nAttr++)
diff --git a/xmloff/source/style/DashStyle.cxx b/xmloff/source/style/DashStyle.cxx
index d940a14..353591b 100644
--- a/xmloff/source/style/DashStyle.cxx
+++ b/xmloff/source/style/DashStyle.cxx
@@ -104,7 +104,7 @@
SvXMLNamespaceMap& rNamespaceMap = rImport.GetNamespaceMap();
SvXMLUnitConverter& rUnitConverter = rImport.GetMM100UnitConverter();
SvXMLTokenMap aTokenMap( aDashStyleAttrTokenMap );
static const SvXMLTokenMap aTokenMap( aDashStyleAttrTokenMap );
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
for( sal_Int16 i=0; i < nAttrCount; i++ )
diff --git a/xmloff/source/style/GradientStyle.cxx b/xmloff/source/style/GradientStyle.cxx
index 8feb95d..ed3d5da 100644
--- a/xmloff/source/style/GradientStyle.cxx
+++ b/xmloff/source/style/GradientStyle.cxx
@@ -111,7 +111,7 @@
aGradient.Angle = 0;
aGradient.Border = 0;
SvXMLTokenMap aTokenMap( aGradientAttrTokenMap );
static const SvXMLTokenMap aTokenMap( aGradientAttrTokenMap );
SvXMLNamespaceMap& rNamespaceMap = rImport.GetNamespaceMap();
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
diff --git a/xmloff/source/style/HatchStyle.cxx b/xmloff/source/style/HatchStyle.cxx
index d394e26..c23ff4b 100644
--- a/xmloff/source/style/HatchStyle.cxx
+++ b/xmloff/source/style/HatchStyle.cxx
@@ -95,8 +95,8 @@
aHatch.Distance = 0;
aHatch.Angle = 0;
SvXMLTokenMap aTokenMap( aHatchAttrTokenMap );
SvXMLNamespaceMap rNamespaceMap = rImport.GetNamespaceMap();
static const SvXMLTokenMap aTokenMap( aHatchAttrTokenMap );
const SvXMLNamespaceMap& rNamespaceMap = rImport.GetNamespaceMap();
SvXMLUnitConverter& rUnitConverter = rImport.GetMM100UnitConverter();
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
diff --git a/xmloff/source/style/ImageStyle.cxx b/xmloff/source/style/ImageStyle.cxx
index c70a23b..0442777 100644
--- a/xmloff/source/style/ImageStyle.cxx
+++ b/xmloff/source/style/ImageStyle.cxx
@@ -106,7 +106,7 @@
OUString aDisplayName;
uno::Reference<graphic::XGraphic> xGraphic;
SvXMLTokenMap aTokenMap( aHatchAttrTokenMap );
static const SvXMLTokenMap aTokenMap( aHatchAttrTokenMap );
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
for( sal_Int16 i=0; i < nAttrCount; i++ )
diff --git a/xmloff/source/style/TransGradientStyle.cxx b/xmloff/source/style/TransGradientStyle.cxx
index 3de8ce2..52edc26 100644
--- a/xmloff/source/style/TransGradientStyle.cxx
+++ b/xmloff/source/style/TransGradientStyle.cxx
@@ -106,7 +106,7 @@
XML_TOKEN_MAP_END
};
SvXMLTokenMap aTokenMap( aTrGradientAttrTokenMap );
static const SvXMLTokenMap aTokenMap( aTrGradientAttrTokenMap );
SvXMLNamespaceMap& rNamespaceMap = rImport.GetNamespaceMap();
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
diff --git a/xmloff/source/style/XMLBackgroundImageContext.cxx b/xmloff/source/style/XMLBackgroundImageContext.cxx
index b1ad4d2..6bdafccf 100644
--- a/xmloff/source/style/XMLBackgroundImageContext.cxx
+++ b/xmloff/source/style/XMLBackgroundImageContext.cxx
@@ -54,22 +54,18 @@
XML_TOK_BGIMG_FILTER,
XML_TOK_BGIMG_OPACITY
};
static const SvXMLTokenMapEntry* lcl_getBGImgAttributesAttrTokenMap()
static const SvXMLTokenMapEntry aBGImgAttributesAttrTokenMap[] =
{
static const SvXMLTokenMapEntry aBGImgAttributesAttrTokenMap[] =
{
{ XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_BGIMG_HREF },
{ XML_NAMESPACE_XLINK, XML_TYPE, XML_TOK_BGIMG_TYPE },
{ XML_NAMESPACE_XLINK, XML_ACTUATE, XML_TOK_BGIMG_ACTUATE },
{ XML_NAMESPACE_XLINK, XML_SHOW, XML_TOK_BGIMG_SHOW },
{ XML_NAMESPACE_STYLE, XML_POSITION, XML_TOK_BGIMG_POSITION },
{ XML_NAMESPACE_STYLE, XML_REPEAT, XML_TOK_BGIMG_REPEAT },
{ XML_NAMESPACE_STYLE, XML_FILTER_NAME, XML_TOK_BGIMG_FILTER },
{ XML_NAMESPACE_DRAW, XML_OPACITY, XML_TOK_BGIMG_OPACITY },
XML_TOKEN_MAP_END
};
return aBGImgAttributesAttrTokenMap;
}
{ XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_BGIMG_HREF },
{ XML_NAMESPACE_XLINK, XML_TYPE, XML_TOK_BGIMG_TYPE },
{ XML_NAMESPACE_XLINK, XML_ACTUATE, XML_TOK_BGIMG_ACTUATE },
{ XML_NAMESPACE_XLINK, XML_SHOW, XML_TOK_BGIMG_SHOW },
{ XML_NAMESPACE_STYLE, XML_POSITION, XML_TOK_BGIMG_POSITION },
{ XML_NAMESPACE_STYLE, XML_REPEAT, XML_TOK_BGIMG_REPEAT },
{ XML_NAMESPACE_STYLE, XML_FILTER_NAME, XML_TOK_BGIMG_FILTER },
{ XML_NAMESPACE_DRAW, XML_OPACITY, XML_TOK_BGIMG_OPACITY },
XML_TOKEN_MAP_END
};
static const SvXMLEnumMapEntry<GraphicLocation> psXML_BrushHoriPos[] =
@@ -170,7 +166,7 @@
void XMLBackgroundImageContext::ProcessAttrs(
const Reference< xml::sax::XAttributeList >& xAttrList )
{
SvXMLTokenMap aTokenMap( lcl_getBGImgAttributesAttrTokenMap() );
static const SvXMLTokenMap aTokenMap( aBGImgAttributesAttrTokenMap );
ePos = GraphicLocation_NONE;
diff --git a/xmloff/source/style/xmltabi.cxx b/xmloff/source/style/xmltabi.cxx
index 5dbfcf1..f0653e3 100644
--- a/xmloff/source/style/xmltabi.cxx
+++ b/xmloff/source/style/xmltabi.cxx
@@ -84,7 +84,7 @@
aTabStop.FillChar = ' ';
sal_Unicode cTextFillChar = 0;
SvXMLTokenMap aTokenMap( aTabsAttributesAttrTokenMap );
static const SvXMLTokenMap aTokenMap( aTabsAttributesAttrTokenMap );
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
for( sal_Int16 i=0; i < nAttrCount; i++ )
diff --git a/xmloff/source/text/XMLFootnoteImportContext.cxx b/xmloff/source/text/XMLFootnoteImportContext.cxx
index dd4cfdd..6cf42cd 100644
--- a/xmloff/source/text/XMLFootnoteImportContext.cxx
+++ b/xmloff/source/text/XMLFootnoteImportContext.cxx
@@ -175,7 +175,7 @@
{
SvXMLImportContextRef xContext;
SvXMLTokenMap aTokenMap(aFootnoteChildTokenMap);
static const SvXMLTokenMap aTokenMap(aFootnoteChildTokenMap);
switch(aTokenMap.Get(p_nPrefix, rLocalName))
{
diff --git a/xmloff/source/text/XMLIndexSourceBaseContext.cxx b/xmloff/source/text/XMLIndexSourceBaseContext.cxx
index b8e2b0b..058dc00 100644
--- a/xmloff/source/text/XMLIndexSourceBaseContext.cxx
+++ b/xmloff/source/text/XMLIndexSourceBaseContext.cxx
@@ -162,7 +162,7 @@
void XMLIndexSourceBaseContext::StartElement(
const Reference<XAttributeList> & xAttrList)
{
SvXMLTokenMap aTokenMap(aIndexSourceTokenMap);
static const SvXMLTokenMap aTokenMap(aIndexSourceTokenMap);
// process attributes
sal_Int16 nLength = xAttrList->getLength();
diff --git a/xmloff/source/text/XMLLineNumberingImportContext.cxx b/xmloff/source/text/XMLLineNumberingImportContext.cxx
index dd3aa73..57036d0 100644
--- a/xmloff/source/text/XMLLineNumberingImportContext.cxx
+++ b/xmloff/source/text/XMLLineNumberingImportContext.cxx
@@ -108,7 +108,7 @@
XML_TOKEN_MAP_END
};
SvXMLTokenMap aTokenMap(aLineNumberingTokenMap);
static const SvXMLTokenMap aTokenMap(aLineNumberingTokenMap);
// process attributes
sal_Int16 nLength = xAttrList->getLength();
diff --git a/xmloff/source/text/XMLSectionImportContext.cxx b/xmloff/source/text/XMLSectionImportContext.cxx
index a7e971e..42e9347 100644
--- a/xmloff/source/text/XMLSectionImportContext.cxx
+++ b/xmloff/source/text/XMLSectionImportContext.cxx
@@ -224,7 +224,7 @@
void XMLSectionImportContext::ProcessAttributes(
const Reference<XAttributeList> & xAttrList )
{
SvXMLTokenMap aTokenMap(aSectionTokenMap);
static const SvXMLTokenMap aTokenMap(aSectionTokenMap);
sal_Int16 nLength = xAttrList->getLength();
for(sal_Int16 nAttr = 0; nAttr < nLength; nAttr++)
diff --git a/xmloff/source/text/XMLSectionSourceDDEImportContext.cxx b/xmloff/source/text/XMLSectionSourceDDEImportContext.cxx
index 7c21b07..814135d9 100644
--- a/xmloff/source/text/XMLSectionSourceDDEImportContext.cxx
+++ b/xmloff/source/text/XMLSectionSourceDDEImportContext.cxx
@@ -78,7 +78,7 @@
void XMLSectionSourceDDEImportContext::StartElement(
const Reference<XAttributeList> & xAttrList)
{
SvXMLTokenMap aTokenMap(aSectionSourceDDETokenMap);
static const SvXMLTokenMap aTokenMap(aSectionSourceDDETokenMap);
OUString sApplication;
OUString sTopic;
OUString sItem;
diff --git a/xmloff/source/text/XMLSectionSourceImportContext.cxx b/xmloff/source/text/XMLSectionSourceImportContext.cxx
index 7a3048b..e938ce8 100644
--- a/xmloff/source/text/XMLSectionSourceImportContext.cxx
+++ b/xmloff/source/text/XMLSectionSourceImportContext.cxx
@@ -73,7 +73,7 @@
void XMLSectionSourceImportContext::StartElement(
const Reference<XAttributeList> & xAttrList)
{
SvXMLTokenMap aTokenMap(aSectionSourceTokenMap);
static const SvXMLTokenMap aTokenMap(aSectionSourceTokenMap);
OUString sURL;
OUString sFilterName;
OUString sSectionName;
diff --git a/xmloff/source/text/txtdropi.cxx b/xmloff/source/text/txtdropi.cxx
index 25b2478..8e7dc0e 100644
--- a/xmloff/source/text/txtdropi.cxx
+++ b/xmloff/source/text/txtdropi.cxx
@@ -58,7 +58,7 @@
void XMLTextDropCapImportContext::ProcessAttrs(
const Reference< xml::sax::XAttributeList >& xAttrList )
{
SvXMLTokenMap aTokenMap( aDropAttrTokenMap );
static const SvXMLTokenMap aTokenMap( aDropAttrTokenMap );
DropCapFormat aFormat;
bool bWholeWord = false;
diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx
index f37f115..c1b1093 100644
--- a/xmloff/source/text/txtfldi.cxx
+++ b/xmloff/source/text/txtfldi.cxx
@@ -2694,8 +2694,7 @@
XMLDdeFieldDeclsImportContext::XMLDdeFieldDeclsImportContext(
SvXMLImport& rImport, sal_uInt16 nPrfx, const OUString& sLocalName) :
SvXMLImportContext(rImport, nPrfx, sLocalName),
aTokenMap(aDdeDeclAttrTokenMap)
SvXMLImportContext(rImport, nPrfx, sLocalName)
{
}
@@ -2707,6 +2706,7 @@
if ( (XML_NAMESPACE_TEXT == nPrefix) &&
(IsXMLToken(rLocalName, XML_DDE_CONNECTION_DECL)) )
{
static const SvXMLTokenMap aTokenMap(aDdeDeclAttrTokenMap);
return new XMLDdeFieldDeclImportContext(GetImport(), nPrefix,
rLocalName, aTokenMap);
}
diff --git a/xmloff/source/xforms/xformsapi.cxx b/xmloff/source/xforms/xformsapi.cxx
index 7a5f9aa..f52aac6 100644
--- a/xmloff/source/xforms/xformsapi.cxx
+++ b/xmloff/source/xforms/xformsapi.cxx
@@ -195,7 +195,7 @@
// translate name into token for local name
OUString sLocalName;
sal_uInt16 nPrefix = rNamespaceMap.GetKeyByAttrName(rXMLName, &sLocalName);
SvXMLTokenMap aMap( aTypes );
static const SvXMLTokenMap aMap( aTypes );
sal_uInt16 nToken = aMap.Get( nPrefix, sLocalName );
sal_uInt16 nTypeClass = css::xsd::DataTypeClass::STRING;
@@ -265,7 +265,7 @@
{
OUString sLocalName;
sal_uInt16 nPrefix = rNamespaceMap.GetKeyByAttrName(rXMLName, &sLocalName);
SvXMLTokenMap aMap( aTypes );
static const SvXMLTokenMap aMap( aTypes );
sal_uInt16 nToken = aMap.Get( nPrefix, sLocalName );
return ( nToken == XML_TOK_UNKNOWN )
? rXMLName