include/sax/fastattribs.hxx | 6 ++++++ include/xmloff/xmltoken.hxx | 4 ++++ sc/source/filter/xml/xmlbodyi.cxx | 2 +- sc/source/filter/xml/xmlcelli.cxx | 7 +++---- sc/source/filter/xml/xmltabi.cxx | 4 ++-- xmloff/source/core/xmltoken.cxx | 11 +++++++++++ 6 files changed, 27 insertions(+), 7 deletions(-)
New commits: commit 32c0ab80aa0dbe105be15c5feee4e3bd7cc5ee25 Author: Mohammed Abdul Azeem <azeemmys...@gmail.com> Date: Thu Feb 9 20:33:15 2017 +0530 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.me...@collabora.com> Tested-by: Jenkins <c...@libreoffice.org> diff --git a/include/sax/fastattribs.hxx b/include/sax/fastattribs.hxx index 112e678..9588990 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 989fa33..70b57d1 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 bb6ba3f..dcddb22 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 70b5b74..f5e2ee1 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 065ee00..668fbee 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 9aefba0..813c864 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 ); + } } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits