[Libreoffice-commits] core.git: xmloff/source

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Tue Dec 1 07:23:20 UTC 2020


 xmloff/source/text/XMLSectionImportContext.cxx       |    1 
 xmloff/source/text/XMLSectionSourceImportContext.cxx |   52 ++++---------------
 xmloff/source/text/XMLSectionSourceImportContext.hxx |   11 +---
 3 files changed, 15 insertions(+), 49 deletions(-)

New commits:
commit 445d56983863a739797dfb940483c209c764e8d6
Author:     Noel Grandin <noelgrandin at gmail.com>
AuthorDate: Mon Nov 30 20:29:55 2020 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Tue Dec 1 08:22:38 2020 +0100

    fastparser in XMLSectionSourceImportContext
    
    Change-Id: I7c716342617486b63a4ae15fb71f3bf794165011
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106913
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/xmloff/source/text/XMLSectionImportContext.cxx b/xmloff/source/text/XMLSectionImportContext.cxx
index c4ca75ba06d6..2ed3f5b23a9a 100644
--- a/xmloff/source/text/XMLSectionImportContext.cxx
+++ b/xmloff/source/text/XMLSectionImportContext.cxx
@@ -341,7 +341,6 @@ SvXMLImportContextRef XMLSectionImportContext::CreateChildContext(
          IsXMLToken(rLocalName, XML_SECTION_SOURCE) )
     {
         pContext = new XMLSectionSourceImportContext(GetImport(),
-                                                     nPrefix, rLocalName,
                                                      xSectionPropertySet);
     }
     else if ( (XML_NAMESPACE_OFFICE == nPrefix) &&
diff --git a/xmloff/source/text/XMLSectionSourceImportContext.cxx b/xmloff/source/text/XMLSectionSourceImportContext.cxx
index 0ceb68eda53d..c24ffd9e912e 100644
--- a/xmloff/source/text/XMLSectionSourceImportContext.cxx
+++ b/xmloff/source/text/XMLSectionSourceImportContext.cxx
@@ -40,10 +40,8 @@ using namespace ::xmloff::token;
 
 XMLSectionSourceImportContext::XMLSectionSourceImportContext(
     SvXMLImport& rImport,
-    sal_uInt16 nPrfx,
-    const OUString& rLocalName,
     Reference<XPropertySet> & rSectPropSet) :
-        SvXMLImportContext(rImport, nPrfx, rLocalName),
+        SvXMLImportContext(rImport),
         rSectionPropertySet(rSectPropSet)
 {
 }
@@ -52,54 +50,28 @@ XMLSectionSourceImportContext::~XMLSectionSourceImportContext()
 {
 }
 
-namespace {
-enum XMLSectionSourceToken
+void XMLSectionSourceImportContext::startFastElement( sal_Int32 /*nElement*/,
+    const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList )
 {
-    XML_TOK_SECTION_XLINK_HREF,
-    XML_TOK_SECTION_TEXT_FILTER_NAME,
-    XML_TOK_SECTION_TEXT_SECTION_NAME
-};
-
-}
-
-const SvXMLTokenMapEntry aSectionSourceTokenMap[] =
-{
-    { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_SECTION_XLINK_HREF },
-    { XML_NAMESPACE_TEXT, XML_FILTER_NAME, XML_TOK_SECTION_TEXT_FILTER_NAME },
-    { XML_NAMESPACE_TEXT, XML_SECTION_NAME,
-                                        XML_TOK_SECTION_TEXT_SECTION_NAME },
-    XML_TOKEN_MAP_END
-};
-
-
-void XMLSectionSourceImportContext::StartElement(
-    const Reference<XAttributeList> & xAttrList)
-{
-    static const SvXMLTokenMap aTokenMap(aSectionSourceTokenMap);
     OUString sURL;
     OUString sFilterName;
     OUString sSectionName;
 
-    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 = GetImport().GetNamespaceMap().
-            GetKeyByAttrName( xAttrList->getNameByIndex(nAttr),
-                              &sLocalName );
-
-        switch (aTokenMap.Get(nPrefix, sLocalName))
+        OUString sValue = aIter.toString();
+        switch (aIter.getToken())
         {
-            case XML_TOK_SECTION_XLINK_HREF:
-                sURL = xAttrList->getValueByIndex(nAttr);
+            case XML_ELEMENT(XLINK, XML_HREF):
+                sURL = sValue;
                 break;
 
-            case XML_TOK_SECTION_TEXT_FILTER_NAME:
-                sFilterName = xAttrList->getValueByIndex(nAttr);
+            case XML_ELEMENT(TEXT, XML_FILTER_NAME):
+                sFilterName = sValue;
                 break;
 
-            case XML_TOK_SECTION_TEXT_SECTION_NAME:
-                sSectionName = xAttrList->getValueByIndex(nAttr);
+            case XML_ELEMENT(TEXT, XML_SECTION_NAME):
+                sSectionName = sValue;
                 break;
 
             default:
diff --git a/xmloff/source/text/XMLSectionSourceImportContext.hxx b/xmloff/source/text/XMLSectionSourceImportContext.hxx
index 33fb2e966291..b426b81acc38 100644
--- a/xmloff/source/text/XMLSectionSourceImportContext.hxx
+++ b/xmloff/source/text/XMLSectionSourceImportContext.hxx
@@ -28,25 +28,20 @@ namespace com::sun::star {
     namespace xml::sax { class XAttributeList; }
 }
 
-class XMLSectionSourceImportContext : public SvXMLImportContext
+class XMLSectionSourceImportContext final : public SvXMLImportContext
 {
     css::uno::Reference<css::beans::XPropertySet> & rSectionPropertySet;
 
 public:
 
-
     XMLSectionSourceImportContext(
         SvXMLImport& rImport,
-        sal_uInt16 nPrfx,
-        const OUString& rLocalName,
         css::uno::Reference<css::beans::XPropertySet> & rSectPropSet);
 
     virtual ~XMLSectionSourceImportContext() override;
 
-protected:
-
-    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;
 };
 
 #endif


More information about the Libreoffice-commits mailing list