summaryrefslogtreecommitdiff
path: root/sw/source/filter/xml/xmlimp.cxx
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2020-08-29 11:19:28 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-12-07 08:52:49 +0100
commit5080bb930de3ecfce8ab78bbd23a9d48c2f2bfa0 (patch)
tree9f92d184627177dbd83dedda40d4a4abb531381e /sw/source/filter/xml/xmlimp.cxx
parent121464be43830a6f6bfbc27a17c8e0bc7577f455 (diff)
convert SvXMLImport to fastparser, drop slowparser paths
Change-Id: I0f880a7680373043fecf083cdf4de8b0bb7041a2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103775 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sw/source/filter/xml/xmlimp.cxx')
-rw-r--r--sw/source/filter/xml/xmlimp.cxx26
1 files changed, 14 insertions, 12 deletions
diff --git a/sw/source/filter/xml/xmlimp.cxx b/sw/source/filter/xml/xmlimp.cxx
index 0a5c68b18719..feda4bec3ff4 100644
--- a/sw/source/filter/xml/xmlimp.cxx
+++ b/sw/source/filter/xml/xmlimp.cxx
@@ -151,12 +151,13 @@ namespace {
// in SwXMLOfficeDocContext_Impl
class SwXMLDocContext_Impl : public virtual SvXMLImportContext
{
+ sal_Int32 mnElement;
protected: // #i69629#
SwXMLImport& GetSwImport() { return static_cast<SwXMLImport&>(GetImport()); }
public:
- SwXMLDocContext_Impl( SwXMLImport& rImport );
+ SwXMLDocContext_Impl( SwXMLImport& rImport, sal_Int32 nElement );
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
@@ -164,8 +165,8 @@ public:
}
-SwXMLDocContext_Impl::SwXMLDocContext_Impl( SwXMLImport& rImport ) :
- SvXMLImportContext( rImport )
+SwXMLDocContext_Impl::SwXMLDocContext_Impl( SwXMLImport& rImport, sal_Int32 nElement ) :
+ SvXMLImportContext( rImport ), mnElement(nElement)
{
}
@@ -186,7 +187,7 @@ uno::Reference< xml::sax::XFastContextHandler > SAL_CALL SwXMLDocContext_Impl::c
break;
case XML_ELEMENT(OFFICE, XML_AUTOMATIC_STYLES):
// don't use the autostyles from the styles-document for the progress
- if ( !IsPrefixFilledIn() || ! IsXMLToken( GetLocalName(), XML_DOCUMENT_STYLES ) )
+ if ( mnElement != 0 && (mnElement & TOKEN_MASK) != XML_DOCUMENT_STYLES )
GetSwImport().GetProgressBarHelper()->Increment
( PROGRESS_BAR_STEP );
return GetSwImport().CreateStylesContext( true );
@@ -221,7 +222,7 @@ class SwXMLOfficeDocContext_Impl :
{
public:
- SwXMLOfficeDocContext_Impl( SwXMLImport& rImport,
+ SwXMLOfficeDocContext_Impl( SwXMLImport& rImport, sal_Int32 nElement,
const Reference< document::XDocumentProperties >& xDocProps);
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
@@ -232,9 +233,10 @@ public:
SwXMLOfficeDocContext_Impl::SwXMLOfficeDocContext_Impl(
SwXMLImport& rImport,
+ sal_Int32 nElement,
const Reference< document::XDocumentProperties >& xDocProps) :
SvXMLImportContext( rImport ),
- SwXMLDocContext_Impl( rImport ),
+ SwXMLDocContext_Impl( rImport, nElement ),
SvXMLMetaDocumentContext( rImport, xDocProps )
{
}
@@ -269,16 +271,16 @@ class SwXMLDocStylesContext_Impl : public SwXMLDocContext_Impl
{
public:
- SwXMLDocStylesContext_Impl( SwXMLImport& rImport );
+ SwXMLDocStylesContext_Impl( SwXMLImport& rImport, sal_Int32 nElement );
virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
};
}
-SwXMLDocStylesContext_Impl::SwXMLDocStylesContext_Impl( SwXMLImport& rImport ) :
+SwXMLDocStylesContext_Impl::SwXMLDocStylesContext_Impl( SwXMLImport& rImport, sal_Int32 nElement ) :
SvXMLImportContext( rImport ),
- SwXMLDocContext_Impl( rImport )
+ SwXMLDocContext_Impl( rImport, nElement )
{
}
@@ -306,16 +308,16 @@ SvXMLImportContext *SwXMLImport::CreateFastContext( sal_Int32 nElement,
uno::Reference<document::XDocumentProperties> const xDocProps(
GetDocumentProperties());
// flat OpenDocument file format
- pContext = new SwXMLOfficeDocContext_Impl( *this, xDocProps );
+ pContext = new SwXMLOfficeDocContext_Impl( *this, nElement, xDocProps );
}
break;
// #i69629# - own subclasses for <office:document> and <office:document-styles>
case XML_ELEMENT(OFFICE, XML_DOCUMENT_SETTINGS):
case XML_ELEMENT(OFFICE, XML_DOCUMENT_CONTENT):
- pContext = new SwXMLDocContext_Impl( *this );
+ pContext = new SwXMLDocContext_Impl( *this, nElement );
break;
case XML_ELEMENT(OFFICE, XML_DOCUMENT_STYLES):
- pContext = new SwXMLDocStylesContext_Impl( *this );
+ pContext = new SwXMLDocStylesContext_Impl( *this, nElement );
break;
}
return pContext;