summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammed Abdul Azeem <azeemmysore@gmail.com>2017-02-09 20:33:15 +0530
committerMichael Meeks <michael.meeks@collabora.com>2017-02-10 11:34:03 +0000
commit32c0ab80aa0dbe105be15c5feee4e3bd7cc5ee25 (patch)
treec4c75dbc58abc60c368a7113b10a16e5d00b8334
parentfc81a580dd2c4e322a28c4f042530668f8516c60 (diff)
Further modifications to FastAttributeIter:
attempt to further reduce unnecessary allocation and freeing of OUString. Change-Id: I85169cfcd2311a5e6a96dc0292ce0686d1b0e43d Reviewed-on: https://gerrit.libreoffice.org/34092 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins <ci@libreoffice.org>
-rw-r--r--include/sax/fastattribs.hxx6
-rw-r--r--include/xmloff/xmltoken.hxx4
-rw-r--r--sc/source/filter/xml/xmlbodyi.cxx2
-rw-r--r--sc/source/filter/xml/xmlcelli.cxx7
-rw-r--r--sc/source/filter/xml/xmltabi.cxx4
-rw-r--r--xmloff/source/core/xmltoken.cxx11
6 files changed, 27 insertions, 7 deletions
diff --git a/include/sax/fastattribs.hxx b/include/sax/fastattribs.hxx
index 112e67801262..958899015372 100644
--- a/include/sax/fastattribs.hxx
+++ b/include/sax/fastattribs.hxx
@@ -145,6 +145,12 @@ public:
mrList.AttributeValueLength(mnIdx),
RTL_TEXTENCODING_UTF8);
}
+
+ const char* toCString()
+ {
+ assert(mnIdx < mrList.maAttributeTokens.size());
+ return mrList.getFastAttributeValue(mnIdx);
+ }
bool isString(const char *str)
{
assert(mnIdx < mrList.maAttributeTokens.size());
diff --git a/include/xmloff/xmltoken.hxx b/include/xmloff/xmltoken.hxx
index 989fa33f54c3..70b57d1b0f8d 100644
--- a/include/xmloff/xmltoken.hxx
+++ b/include/xmloff/xmltoken.hxx
@@ -3291,6 +3291,10 @@ namespace xmloff { namespace token {
XMLOFF_DLLPUBLIC bool IsXMLToken(
const OUString& rString,
enum XMLTokenEnum eToken );
+
+ XMLOFF_DLLPUBLIC bool IsXMLToken(
+ const char* pCString,
+ enum XMLTokenEnum eToken );
} }
#endif
diff --git a/sc/source/filter/xml/xmlbodyi.cxx b/sc/source/filter/xml/xmlbodyi.cxx
index bb6ba3fa0fc8..dcddb221cc92 100644
--- a/sc/source/filter/xml/xmlbodyi.cxx
+++ b/sc/source/filter/xml/xmlbodyi.cxx
@@ -104,7 +104,7 @@ ScXMLBodyContext::ScXMLBodyContext( ScXMLImport& rImport,
{
const sal_Int32 nLocalToken = nToken & TOKEN_MASK;
if( nLocalToken == XML_STRUCTURE_PROTECTED )
- bProtected = IsXMLToken( it.toString(), XML_TRUE );
+ bProtected = IsXMLToken( it.toCString(), XML_TRUE );
else if ( nLocalToken == XML_PROTECTION_KEY )
sPassword = it.toString();
else if ( nLocalToken == XML_PROTECTION_KEY_DIGEST_ALGORITHM )
diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx
index 70b5b745f277..f5e2ee144e82 100644
--- a/sc/source/filter/xml/xmlcelli.cxx
+++ b/sc/source/filter/xml/xmlcelli.cxx
@@ -258,13 +258,12 @@ ScXMLTableRowCellContext::ScXMLTableRowCellContext( ScXMLImport& rImport,
{
if (!it.isEmpty())
{
- const OUString sValue = it.toString();
- if ( IsXMLToken(sValue, XML_TRUE) )
+ if ( IsXMLToken( it.toCString(), XML_TRUE ) )
fValue = 1.0;
- else if ( IsXMLToken(sValue, XML_FALSE) )
+ else if ( IsXMLToken( it.toCString(), XML_FALSE ) )
fValue = 0.0;
else
- ::sax::Converter::convertDouble(fValue, sValue);
+ ::sax::Converter::convertDouble(fValue, it.toString() );
bIsEmpty = false;
}
}
diff --git a/sc/source/filter/xml/xmltabi.cxx b/sc/source/filter/xml/xmltabi.cxx
index 065ee000bd10..668fbeea1aaa 100644
--- a/sc/source/filter/xml/xmltabi.cxx
+++ b/sc/source/filter/xml/xmltabi.cxx
@@ -162,7 +162,7 @@ ScXMLTableContext::ScXMLTableContext( ScXMLImport& rImport,
sStyleName = it.toString();
break;
case XML_TOK_TABLE_PROTECTED:
- aProtectData.mbProtected = IsXMLToken( it.toString(), XML_TRUE );
+ aProtectData.mbProtected = IsXMLToken( it.toCString(), XML_TRUE );
break;
case XML_TOK_TABLE_PRINT_RANGES:
sPrintRanges = it.toString();
@@ -178,7 +178,7 @@ ScXMLTableContext::ScXMLTableContext( ScXMLImport& rImport,
break;
case XML_TOK_TABLE_PRINT:
{
- if (IsXMLToken( it.toString(), XML_FALSE) )
+ if (IsXMLToken( it.toCString(), XML_FALSE) )
bPrintEntireSheet = false;
}
break;
diff --git a/xmloff/source/core/xmltoken.cxx b/xmloff/source/core/xmltoken.cxx
index 9aefba0451cc..813c864ca264 100644
--- a/xmloff/source/core/xmltoken.cxx
+++ b/xmloff/source/core/xmltoken.cxx
@@ -3328,6 +3328,17 @@ namespace xmloff { namespace token {
const XMLTokenEntry* pToken = &aTokenList[(sal_uInt16)eToken];
return rString.equalsAsciiL( pToken->pChar, pToken->nLength );
}
+
+ bool IsXMLToken(
+ const char* pCString,
+ enum XMLTokenEnum eToken )
+ {
+ assert(XML_TOKEN_INVALID < eToken);
+ assert(eToken < XML_TOKEN_END);
+
+ const XMLTokenEntry* pToken = &aTokenList[(sal_uInt16)eToken];
+ return !strcmp( pCString, pToken->pChar );
+ }
}
}