xmloff/source/text/XMLChangeElementImportContext.cxx | 2 xmloff/source/text/XMLChangeElementImportContext.hxx | 2 xmloff/source/text/XMLTextMarkImportContext.cxx | 28 +-- xmloff/source/text/XMLTextMarkImportContext.hxx | 5 xmloff/source/text/txtparai.cxx | 146 +++++++------------ 5 files changed, 73 insertions(+), 110 deletions(-)
New commits: commit 65c1547f3a3076494ac3c579fda60c4002aff6e5 Author: Noel <noelgran...@gmail.com> AuthorDate: Thu Nov 5 14:24:18 2020 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Thu Nov 5 17:24:52 2020 +0100 StartElement->startFastElement in xmloff/source/text Change-Id: I6a0f127eccce36958d95ee3d01080f22c62c8b45 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105346 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/xmloff/source/text/XMLChangeElementImportContext.cxx b/xmloff/source/text/XMLChangeElementImportContext.cxx index b5422cb09828..38ec34084eca 100644 --- a/xmloff/source/text/XMLChangeElementImportContext.cxx +++ b/xmloff/source/text/XMLChangeElementImportContext.cxx @@ -77,7 +77,7 @@ SvXMLImportContextRef XMLChangeElementImportContext::CreateChildContext( return xContext; } -void XMLChangeElementImportContext::StartElement( const Reference< XAttributeList >& ) +void XMLChangeElementImportContext::startFastElement( sal_Int32, const Reference< css::xml::sax::XFastAttributeList >& ) { if(bAcceptContent) { diff --git a/xmloff/source/text/XMLChangeElementImportContext.hxx b/xmloff/source/text/XMLChangeElementImportContext.hxx index b0f24894b3ac..7a37913a3e03 100644 --- a/xmloff/source/text/XMLChangeElementImportContext.hxx +++ b/xmloff/source/text/XMLChangeElementImportContext.hxx @@ -75,7 +75,7 @@ public: // Start- and EndElement are needed here to set the inside_deleted_section // flag at the corresponding TextImportHelper - virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override; + virtual void SAL_CALL startFastElement( sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override; virtual void SAL_CALL endFastElement(sal_Int32 nElement) override; }; diff --git a/xmloff/source/text/XMLTextMarkImportContext.cxx b/xmloff/source/text/XMLTextMarkImportContext.cxx index 0c5011ca13f5..080009a8e6f6 100644 --- a/xmloff/source/text/XMLTextMarkImportContext.cxx +++ b/xmloff/source/text/XMLTextMarkImportContext.cxx @@ -65,29 +65,23 @@ XMLFieldParamImportContext::XMLFieldParamImportContext( } -void XMLFieldParamImportContext::StartElement(const css::uno::Reference< css::xml::sax::XAttributeList> & xAttrList) +void XMLFieldParamImportContext::startFastElement(sal_Int32 /*nElement*/, const css::uno::Reference< css::xml::sax::XFastAttributeList> & xAttrList) { - SvXMLImport& rImport = GetImport(); OUString sName; OUString sValue; - sal_Int16 nLength = xAttrList->getLength(); - for(sal_Int16 nAttr = 0; nAttr < nLength; nAttr++) + for (auto &aIter : sax_fastparser::castToFastAttributeList( xAttrList )) { - OUString sLocalName; - sal_uInt16 nPrefix = rImport.GetNamespaceMap(). - GetKeyByAttrName( xAttrList->getNameByIndex(nAttr), - &sLocalName ); - - if ( (XML_NAMESPACE_FIELD == nPrefix) && - IsXMLToken(sLocalName, XML_NAME) ) - { - sName = xAttrList->getValueByIndex(nAttr); - } - if ( (XML_NAMESPACE_FIELD == nPrefix) && - IsXMLToken(sLocalName, XML_VALUE) ) + switch (aIter.getToken()) { - sValue = xAttrList->getValueByIndex(nAttr); + case XML_ELEMENT(FIELD, XML_NAME): + sName = aIter.toString(); + break; + case XML_ELEMENT(FIELD, XML_VALUE): + sValue = aIter.toString(); + break; + default: + XMLOFF_WARN_UNKNOWN("xmloff", aIter); } } if (rHelper.hasCurrentFieldCtx() && !sName.isEmpty()) { diff --git a/xmloff/source/text/XMLTextMarkImportContext.hxx b/xmloff/source/text/XMLTextMarkImportContext.hxx index 6dd627691435..d0e8f03a2e81 100644 --- a/xmloff/source/text/XMLTextMarkImportContext.hxx +++ b/xmloff/source/text/XMLTextMarkImportContext.hxx @@ -46,8 +46,9 @@ public: sal_uInt16 nPrfx, const OUString& rLocalName ); - virtual void StartElement( - const css::uno::Reference<css::xml::sax::XAttributeList> & xAttrList) override; + virtual void SAL_CALL startFastElement( + sal_Int32 nElement, + const css::uno::Reference<css::xml::sax::XFastAttributeList> & xAttrList) override; }; diff --git a/xmloff/source/text/txtparai.cxx b/xmloff/source/text/txtparai.cxx index d56ef2791f73..006e3ded38c9 100644 --- a/xmloff/source/text/txtparai.cxx +++ b/xmloff/source/text/txtparai.cxx @@ -1076,12 +1076,12 @@ public: enum XMLTextPElemTokens nTok, XMLHints_Impl& rHints); - void StartElement(const Reference<xml::sax::XAttributeList> & xAttrList) override; + void SAL_CALL startFastElement(sal_Int32 nElement, const Reference<xml::sax::XFastAttributeList> & xAttrList) override; protected: /// process all attributes - void ProcessAttributes(const Reference<xml::sax::XAttributeList> & xAttrList, + void ProcessAttributes(const Reference<xml::sax::XFastAttributeList> & xAttrList, Reference<beans::XPropertySet>& rPropSet); /** @@ -1092,8 +1092,7 @@ protected: * This method tolerates an empty PropertySet; subclasses however * are not expected to. */ - virtual void ProcessAttribute(sal_uInt16 nNamespace, - const OUString& sLocalName, + virtual void ProcessAttribute(sal_Int32 nAttributeToken, const OUString& sValue, Reference<beans::XPropertySet>& rPropSet); @@ -1118,8 +1117,9 @@ XMLIndexMarkImportContext_Impl::XMLIndexMarkImportContext_Impl( { } -void XMLIndexMarkImportContext_Impl::StartElement( - const Reference<xml::sax::XAttributeList> & xAttrList) +void XMLIndexMarkImportContext_Impl::startFastElement( + sal_Int32 /*nElement*/, + const Reference<xml::sax::XFastAttributeList> & xAttrList) { // get Cursor position (needed for all cases) Reference<XTextRange> xPos( @@ -1194,26 +1194,18 @@ void XMLIndexMarkImportContext_Impl::StartElement( } void XMLIndexMarkImportContext_Impl::ProcessAttributes( - const Reference<xml::sax::XAttributeList> & xAttrList, + const Reference<xml::sax::XFastAttributeList> & xAttrList, Reference<beans::XPropertySet>& rPropSet) { // process attributes - sal_Int16 nLength = xAttrList->getLength(); - for(sal_Int16 i=0; i<nLength; i++) + for (auto &aIter : sax_fastparser::castToFastAttributeList( xAttrList )) { - OUString sLocalName; - sal_uInt16 nPrefix = GetImport().GetNamespaceMap(). - GetKeyByAttrName( xAttrList->getNameByIndex(i), &sLocalName ); - - ProcessAttribute(nPrefix, sLocalName, - xAttrList->getValueByIndex(i), - rPropSet); + ProcessAttribute(aIter.getToken(), aIter.toString(), rPropSet); } } void XMLIndexMarkImportContext_Impl::ProcessAttribute( - sal_uInt16 nNamespace, - const OUString& sLocalName, + sal_Int32 nAttributeToken, const OUString& sValue, Reference<beans::XPropertySet>& rPropSet) { @@ -1225,8 +1217,7 @@ void XMLIndexMarkImportContext_Impl::ProcessAttribute( case XML_TOK_TEXT_TOC_MARK: case XML_TOK_TEXT_USER_INDEX_MARK: case XML_TOK_TEXT_ALPHA_INDEX_MARK: - if ( (XML_NAMESPACE_TEXT == nNamespace) && - IsXMLToken( sLocalName, XML_STRING_VALUE ) ) + if ( nAttributeToken == XML_ELEMENT(TEXT, XML_STRING_VALUE) ) { rPropSet->setPropertyValue("AlternativeText", uno::makeAny(sValue)); } @@ -1239,8 +1230,7 @@ void XMLIndexMarkImportContext_Impl::ProcessAttribute( case XML_TOK_TEXT_TOC_MARK_END: case XML_TOK_TEXT_USER_INDEX_MARK_END: case XML_TOK_TEXT_ALPHA_INDEX_MARK_END: - if ( (XML_NAMESPACE_TEXT == nNamespace) && - IsXMLToken( sLocalName, XML_ID ) ) + if ( nAttributeToken == XML_ELEMENT(TEXT, XML_ID) ) { sID = sValue; } @@ -1327,8 +1317,7 @@ public: protected: /** process outline level */ - virtual void ProcessAttribute(sal_uInt16 nNamespace, - const OUString& sLocalName, + virtual void ProcessAttribute(sal_Int32 nAttributeToken, const OUString& sValue, Reference<beans::XPropertySet>& rPropSet) override; }; @@ -1344,32 +1333,32 @@ XMLTOCMarkImportContext_Impl::XMLTOCMarkImportContext_Impl( } void XMLTOCMarkImportContext_Impl::ProcessAttribute( - sal_uInt16 nNamespace, - const OUString& sLocalName, + sal_Int32 nAttributeToken, const OUString& sValue, Reference<beans::XPropertySet>& rPropSet) { SAL_WARN_IF(!rPropSet.is(), "xmloff.text", "need PropertySet"); - if ((XML_NAMESPACE_TEXT == nNamespace) && - IsXMLToken( sLocalName, XML_OUTLINE_LEVEL ) ) + switch (nAttributeToken) { - // ouline level: set Level property - sal_Int32 nTmp; - if (::sax::Converter::convertNumber( nTmp, sValue ) - && nTmp >= 1 - && nTmp < GetImport().GetTextImport()-> - GetChapterNumbering()->getCount() ) + case XML_ELEMENT(TEXT, XML_OUTLINE_LEVEL): { - rPropSet->setPropertyValue("Level", uno::makeAny(static_cast<sal_Int16>(nTmp - 1))); + // ouline level: set Level property + sal_Int32 nTmp; + if (::sax::Converter::convertNumber( nTmp, sValue ) + && nTmp >= 1 + && nTmp < GetImport().GetTextImport()-> + GetChapterNumbering()->getCount() ) + { + rPropSet->setPropertyValue("Level", uno::makeAny(static_cast<sal_Int16>(nTmp - 1))); + } + // else: value out of range -> ignore + break; } - // else: value out of range -> ignore - } - else - { - // else: delegate to superclass - XMLIndexMarkImportContext_Impl::ProcessAttribute( - nNamespace, sLocalName, sValue, rPropSet); + default: + // else: delegate to superclass + XMLIndexMarkImportContext_Impl::ProcessAttribute( + nAttributeToken, sValue, rPropSet); } } @@ -1389,8 +1378,7 @@ public: protected: /** process index name */ - virtual void ProcessAttribute(sal_uInt16 nNamespace, - const OUString& sLocalName, + virtual void ProcessAttribute(sal_Int32 nAttributeToken, const OUString& sValue, Reference<beans::XPropertySet>& rPropSet) override; }; @@ -1406,16 +1394,15 @@ XMLUserIndexMarkImportContext_Impl::XMLUserIndexMarkImportContext_Impl( } void XMLUserIndexMarkImportContext_Impl::ProcessAttribute( - sal_uInt16 nNamespace, const OUString& sLocalName, const OUString& sValue, + sal_Int32 nAttributeToken, const OUString& sValue, Reference<beans::XPropertySet>& rPropSet) { - if ( XML_NAMESPACE_TEXT == nNamespace ) + switch (nAttributeToken) { - if ( IsXMLToken( sLocalName, XML_INDEX_NAME ) ) - { + case XML_ELEMENT(TEXT, XML_INDEX_NAME): rPropSet->setPropertyValue("UserIndexName", uno::makeAny(sValue)); - } - else if ( IsXMLToken( sLocalName, XML_OUTLINE_LEVEL ) ) + break; + case XML_ELEMENT(TEXT, XML_OUTLINE_LEVEL): { // ouline level: set Level property sal_Int32 nTmp; @@ -1426,19 +1413,12 @@ void XMLUserIndexMarkImportContext_Impl::ProcessAttribute( rPropSet->setPropertyValue("Level", uno::makeAny(static_cast<sal_Int16>(nTmp - 1))); } // else: value out of range -> ignore + break; } - else - { + default: // else: unknown text property: delegate to super class XMLIndexMarkImportContext_Impl::ProcessAttribute( - nNamespace, sLocalName, sValue, rPropSet); - } - } - else - { - // else: unknown namespace: delegate to super class - XMLIndexMarkImportContext_Impl::ProcessAttribute( - nNamespace, sLocalName, sValue, rPropSet); + nAttributeToken, sValue, rPropSet); } } @@ -1458,8 +1438,7 @@ public: protected: /** process primary + secondary keys */ - virtual void ProcessAttribute(sal_uInt16 nNamespace, - const OUString& sLocalName, + virtual void ProcessAttribute(sal_Int32 nAttributeToken, const OUString& sValue, Reference<beans::XPropertySet>& rPropSet) override; }; @@ -1475,32 +1454,27 @@ XMLAlphaIndexMarkImportContext_Impl::XMLAlphaIndexMarkImportContext_Impl( } void XMLAlphaIndexMarkImportContext_Impl::ProcessAttribute( - sal_uInt16 nNamespace, const OUString& sLocalName, const OUString& sValue, + sal_Int32 nAttributeToken, const OUString& sValue, Reference<beans::XPropertySet>& rPropSet) { - if (XML_NAMESPACE_TEXT == nNamespace) + switch (nAttributeToken) { - if ( IsXMLToken( sLocalName, XML_KEY1 ) ) - { + case XML_ELEMENT(TEXT, XML_KEY1): rPropSet->setPropertyValue("PrimaryKey", uno::makeAny(sValue)); - } - else if ( IsXMLToken( sLocalName, XML_KEY2 ) ) - { + break; + case XML_ELEMENT(TEXT, XML_KEY2): rPropSet->setPropertyValue("SecondaryKey", uno::makeAny(sValue)); - } - else if ( IsXMLToken( sLocalName, XML_KEY1_PHONETIC ) ) - { + break; + case XML_ELEMENT(TEXT, XML_KEY1_PHONETIC): rPropSet->setPropertyValue("PrimaryKeyReading", uno::makeAny(sValue)); - } - else if ( IsXMLToken( sLocalName, XML_KEY2_PHONETIC ) ) - { + break; + case XML_ELEMENT(TEXT, XML_KEY2_PHONETIC): rPropSet->setPropertyValue("SecondaryKeyReading", uno::makeAny(sValue)); - } - else if ( IsXMLToken( sLocalName, XML_STRING_VALUE_PHONETIC ) ) - { + break; + case XML_ELEMENT(TEXT, XML_STRING_VALUE_PHONETIC): rPropSet->setPropertyValue("TextReading", uno::makeAny(sValue)); - } - else if ( IsXMLToken( sLocalName, XML_MAIN_ENTRY ) ) + break; + case XML_ELEMENT(TEXT, XML_MAIN_ENTRY): { bool bMainEntry = false; bool bTmp(false); @@ -1509,17 +1483,11 @@ void XMLAlphaIndexMarkImportContext_Impl::ProcessAttribute( bMainEntry = bTmp; rPropSet->setPropertyValue("IsMainEntry", uno::makeAny(bMainEntry)); + break; } - else - { + default: XMLIndexMarkImportContext_Impl::ProcessAttribute( - nNamespace, sLocalName, sValue, rPropSet); - } - } - else - { - XMLIndexMarkImportContext_Impl::ProcessAttribute( - nNamespace, sLocalName, sValue, rPropSet); + nAttributeToken, sValue, rPropSet); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits