[Libreoffice-commits] core.git: include/xmloff sc/source xmloff/inc xmloff/source
Noel Grandin (via logerrit)
logerrit at kemper.freedesktop.org
Sat Aug 29 13:29:14 UTC 2020
include/xmloff/xmlprcon.hxx | 25 +---
include/xmloff/xmlprmap.hxx | 6 +
sc/source/filter/xml/xmlstyli.cxx | 45 +++-----
xmloff/inc/XMLBackgroundImageContext.hxx | 11 +-
xmloff/inc/XMLElementPropertyContext.hxx | 8 -
xmloff/inc/XMLShapePropertySetContext.hxx | 20 +--
xmloff/inc/XMLTextColumnsContext.hxx | 9 -
xmloff/inc/xmltabi.hxx | 10 -
xmloff/source/chart/XMLChartPropertyContext.cxx | 20 +--
xmloff/source/chart/XMLChartPropertyContext.hxx | 9 -
xmloff/source/chart/XMLLabelSeparatorContext.cxx | 11 --
xmloff/source/chart/XMLLabelSeparatorContext.hxx | 9 -
xmloff/source/chart/XMLSymbolImageContext.cxx | 41 +++-----
xmloff/source/chart/XMLSymbolImageContext.hxx | 9 -
xmloff/source/draw/XMLShapePropertySetContext.cxx | 40 ++-----
xmloff/source/draw/ximpstyl.cxx | 42 +++-----
xmloff/source/style/PagePropertySetContext.cxx | 31 ++----
xmloff/source/style/PagePropertySetContext.hxx | 12 +-
xmloff/source/style/XMLBackgroundImageContext.cxx | 57 +++++------
xmloff/source/style/XMLElementPropertyContext.cxx | 10 -
xmloff/source/style/XMLFootnoteSeparatorImport.cxx | 47 ++++-----
xmloff/source/style/XMLFootnoteSeparatorImport.hxx | 7 -
xmloff/source/style/xmlprcon.cxx | 48 ++-------
xmloff/source/style/xmlprmap.cxx | 32 ++++++
xmloff/source/style/xmltabi.cxx | 91 ++++++++----------
xmloff/source/text/XMLSectionFootnoteConfigImport.cxx | 45 ++++----
xmloff/source/text/XMLSectionFootnoteConfigImport.hxx | 7 -
xmloff/source/text/XMLTextColumnsContext.cxx | 43 +++-----
xmloff/source/text/XMLTextPropertySetContext.cxx | 54 +++-------
xmloff/source/text/XMLTextPropertySetContext.hxx | 20 +--
xmloff/source/text/XMLTextShapeStyleContext.cxx | 38 +++----
xmloff/source/text/txtdropi.cxx | 49 ++++-----
xmloff/source/text/txtdropi.hxx | 11 +-
33 files changed, 412 insertions(+), 505 deletions(-)
New commits:
commit 9814c1f2edf56ecc0f31001db9234ef335488879
Author: Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Fri Aug 28 15:25:40 2020 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Sat Aug 29 15:28:22 2020 +0200
use fastparser in SvXMLPropertySetContext subclasses
Change-Id: I977f1cf198652d3c73e5a0f473794975a5647617
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101564
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/include/xmloff/xmlprcon.hxx b/include/xmloff/xmlprcon.hxx
index 97d9487716dc..9a430adb97ff 100644
--- a/include/xmloff/xmlprcon.hxx
+++ b/include/xmloff/xmlprcon.hxx
@@ -38,15 +38,6 @@ protected:
public:
- SvXMLPropertySetContext(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList,
- sal_uInt32 nFamily,
- ::std::vector< XMLPropertyState > &rProps,
- const rtl::Reference < SvXMLImportPropertyMapper > &rMap,
- sal_Int32 nStartIdx = -1, sal_Int32 nEndIdx = -1 );
-
SvXMLPropertySetContext(
SvXMLImport& rImport, sal_Int32 nElement,
const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
@@ -60,18 +51,18 @@ public:
virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/,
const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {}
- virtual SvXMLImportContextRef CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& AttrList ) override;
// This method is called from this instance implementation of
// CreateChildContext if the element matches an entry in the
// SvXMLImportItemMapper with the mid flag MID_FLAG_ELEMENT_ITEM_IMPORT
- virtual SvXMLImportContextRef CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList,
- ::std::vector< XMLPropertyState > &rProperties,
- const XMLPropertyState& rProp );
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
+ ::std::vector< XMLPropertyState > &rProperties,
+ const XMLPropertyState& rProp );
};
diff --git a/include/xmloff/xmlprmap.hxx b/include/xmloff/xmlprmap.hxx
index 19e9ab80c0c4..f38223cc13b8 100644
--- a/include/xmloff/xmlprmap.hxx
+++ b/include/xmloff/xmlprmap.hxx
@@ -93,6 +93,12 @@ public:
sal_uInt16 nNamespace, const OUString& rStrName, sal_uInt32 nPropType,
sal_Int32 nStartAt = -1 ) const;
+ /** Returns the index of an entry with the given XML-name and namespace
+ If there is no matching entry the method returns -1 */
+ sal_Int32 GetEntryIndex(
+ sal_Int32 nElement, sal_uInt32 nPropType,
+ sal_Int32 nStartAt = -1 ) const;
+
/** Retrieves a PropertyHandler for that property which placed at nIndex in the XMLPropertyMapEntry-array */
const XMLPropertyHandler* GetPropertyHandler( sal_Int32 nIndex ) const;
diff --git a/sc/source/filter/xml/xmlstyli.cxx b/sc/source/filter/xml/xmlstyli.cxx
index 364b212cd393..191e8a6323d7 100644
--- a/sc/source/filter/xml/xmlstyli.cxx
+++ b/sc/source/filter/xml/xmlstyli.cxx
@@ -273,11 +273,12 @@ class XMLTableCellPropsContext : public SvXMLPropertySetContext
::std::vector< XMLPropertyState > &rProps,
const rtl::Reference < SvXMLImportPropertyMapper > &rMap);
- virtual SvXMLImportContextRef CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList >& xAttrList,
- ::std::vector< XMLPropertyState > &rProperties,
- const XMLPropertyState& rProp ) override;
+ using SvXMLPropertySetContext::createFastChildContext;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
+ ::std::vector< XMLPropertyState > &rProperties,
+ const XMLPropertyState& rProp ) override;
};
}
@@ -293,33 +294,25 @@ XMLTableCellPropsContext::XMLTableCellPropsContext(
{
}
-SvXMLImportContextRef XMLTableCellPropsContext::CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList >& xAttrList,
- ::std::vector< XMLPropertyState > &rProperties,
- const XMLPropertyState& rProp )
+css::uno::Reference< css::xml::sax::XFastContextHandler > XMLTableCellPropsContext::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
+ ::std::vector< XMLPropertyState > &rProperties,
+ const XMLPropertyState& rProp )
{
// no need for a custom context or indeed a SvXMLTokenMap to grab just the
// single attribute ( href ) that we are interested in.
// still though, we will check namespaces etc.
- if ((XML_NAMESPACE_STYLE == nPrefix || XML_NAMESPACE_LO_EXT == nPrefix)
- && IsXMLToken(rLocalName, XML_HYPERLINK))
+ if (nElement == XML_ELEMENT(STYLE, XML_HYPERLINK) ||
+ nElement == XML_ELEMENT(LO_EXT, XML_HYPERLINK) )
{
OUString sURL;
- for ( int i=0; i<xAttrList->getLength(); ++i )
+ for (auto &aIter : sax_fastparser::castToFastAttributeList( xAttrList ))
{
- OUString aLocalName;
- OUString sName = xAttrList->getNameByIndex(i);
- sal_uInt16 nPrfx = GetImport().GetNamespaceMap().GetKeyByAttrName( sName,
- &aLocalName );
- if ( nPrfx == XML_NAMESPACE_XLINK )
- {
- if ( IsXMLToken( aLocalName, XML_HREF ) )
- {
- sURL = xAttrList->getValueByIndex(i);
- break;
- }
- }
+ if ( aIter.getToken() == XML_ELEMENT(XLINK, XML_HREF) )
+ sURL = aIter.toString();
+ else
+ SAL_WARN("sc", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << aIter.toString());
}
if ( !sURL.isEmpty() )
{
@@ -328,7 +321,7 @@ SvXMLImportContextRef XMLTableCellPropsContext::CreateChildContext( sal_uInt16 n
rProperties.push_back( aProp );
}
}
- return SvXMLPropertySetContext::CreateChildContext( nPrefix, rLocalName, xAttrList, rProperties, rProp );
+ return SvXMLPropertySetContext::createFastChildContext( nElement, xAttrList, rProperties, rProp );
}
namespace {
diff --git a/xmloff/inc/XMLBackgroundImageContext.hxx b/xmloff/inc/XMLBackgroundImageContext.hxx
index 02152f1503d2..c5ffa768710d 100644
--- a/xmloff/inc/XMLBackgroundImageContext.hxx
+++ b/xmloff/inc/XMLBackgroundImageContext.hxx
@@ -43,15 +43,14 @@ class XMLBackgroundImageContext final : public XMLElementPropertyContext
private:
void ProcessAttrs(
- const css::uno::Reference<css::xml::sax::XAttributeList > & xAttrList );
+ const css::uno::Reference<css::xml::sax::XFastAttributeList > & xAttrList );
public:
XMLBackgroundImageContext(
SvXMLImport& rImport,
- sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList > & xAttrList,
+ sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList > & xAttrList,
const XMLPropertyState& rProp,
sal_Int32 nPosIdx,
sal_Int32 nFilterIdx,
@@ -65,7 +64,9 @@ public:
const OUString& rLocalName,
const css::uno::Reference<css::xml::sax::XAttributeList > & xAttrList ) override;
- virtual void EndElement() override;
+ virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {}
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
};
diff --git a/xmloff/inc/XMLElementPropertyContext.hxx b/xmloff/inc/XMLElementPropertyContext.hxx
index 2027131cc493..5c09efc05559 100644
--- a/xmloff/inc/XMLElementPropertyContext.hxx
+++ b/xmloff/inc/XMLElementPropertyContext.hxx
@@ -39,14 +39,16 @@ protected:
public:
- XMLElementPropertyContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
+ XMLElementPropertyContext( SvXMLImport& rImport, sal_Int32 nElement,
const XMLPropertyState& rProp,
::std::vector< XMLPropertyState > &rProps );
virtual ~XMLElementPropertyContext() override;
- virtual void EndElement() override;
+ virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {}
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
+
};
diff --git a/xmloff/inc/XMLShapePropertySetContext.hxx b/xmloff/inc/XMLShapePropertySetContext.hxx
index 9aab3078d5d5..ce34224c5865 100644
--- a/xmloff/inc/XMLShapePropertySetContext.hxx
+++ b/xmloff/inc/XMLShapePropertySetContext.hxx
@@ -30,12 +30,6 @@ class XMLShapePropertySetContext : public SvXMLPropertySetContext
public:
- XMLShapePropertySetContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList >& xAttrList,
- sal_uInt32 nFam,
- ::std::vector< XMLPropertyState > &rProps,
- const rtl::Reference < SvXMLImportPropertyMapper > &rMap );
XMLShapePropertySetContext( SvXMLImport& rImport, sal_Int32 nElement,
const css::uno::Reference<css::xml::sax::XFastAttributeList >& xAttrList,
sal_uInt32 nFam,
@@ -44,14 +38,14 @@ public:
virtual ~XMLShapePropertySetContext() override;
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
- using SvXMLPropertySetContext::CreateChildContext;
- virtual SvXMLImportContextRef CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList,
- ::std::vector< XMLPropertyState > &rProperties,
- const XMLPropertyState& rProp) override;
+ using SvXMLPropertySetContext::createFastChildContext;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
+ ::std::vector< XMLPropertyState > &rProperties,
+ const XMLPropertyState& rProp ) override;
};
#endif
diff --git a/xmloff/inc/XMLTextColumnsContext.hxx b/xmloff/inc/XMLTextColumnsContext.hxx
index 1ebaa23d0342..82a64395040f 100644
--- a/xmloff/inc/XMLTextColumnsContext.hxx
+++ b/xmloff/inc/XMLTextColumnsContext.hxx
@@ -45,9 +45,8 @@ class XMLTextColumnsContext final :public XMLElementPropertyContext
public:
XMLTextColumnsContext(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList > & xAttrList,
+ SvXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference<css::xml::sax::XFastAttributeList > & xAttrList,
const XMLPropertyState& rProp,
::std::vector< XMLPropertyState > &rProps );
@@ -55,7 +54,9 @@ public:
const OUString& rLocalName,
const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList ) override;
- virtual void EndElement() override;
+ virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {}
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
};
diff --git a/xmloff/inc/xmltabi.hxx b/xmloff/inc/xmltabi.hxx
index 229f784d6fa8..bc51546cdd4a 100644
--- a/xmloff/inc/xmltabi.hxx
+++ b/xmloff/inc/xmltabi.hxx
@@ -36,16 +36,14 @@ private:
public:
- SvxXMLTabStopImportContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
+ SvxXMLTabStopImportContext( SvXMLImport& rImport, sal_Int32 nElement,
const XMLPropertyState& rProp,
::std::vector< XMLPropertyState > &rProps );
- virtual SvXMLImportContextRef CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList ) override;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
+ sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& AttrList ) override;
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
};
diff --git a/xmloff/source/chart/XMLChartPropertyContext.cxx b/xmloff/source/chart/XMLChartPropertyContext.cxx
index 4055332f3efe..83cc7bb9aaf8 100644
--- a/xmloff/source/chart/XMLChartPropertyContext.cxx
+++ b/xmloff/source/chart/XMLChartPropertyContext.cxx
@@ -41,10 +41,9 @@ XMLChartPropertyContext::XMLChartPropertyContext(
XMLChartPropertyContext::~XMLChartPropertyContext()
{}
-SvXMLImportContextRef XMLChartPropertyContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList > & xAttrList,
+css::uno::Reference< css::xml::sax::XFastContextHandler > XMLChartPropertyContext::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
::std::vector< XMLPropertyState > &rProperties,
const XMLPropertyState& rProp )
{
@@ -53,21 +52,16 @@ SvXMLImportContextRef XMLChartPropertyContext::CreateChildContext(
switch( mxMapper->getPropertySetMapper()->GetEntryContextId( rProp.mnIndex ) )
{
case XML_SCH_CONTEXT_SPECIAL_SYMBOL_IMAGE:
- xContext = new XMLSymbolImageContext( GetImport(), nPrefix, rLocalName, rProp, rProperties );
+ return new XMLSymbolImageContext( GetImport(), nElement, rProp, rProperties );
break;
case XML_SCH_CONTEXT_SPECIAL_LABEL_SEPARATOR:
- xContext = new XMLLabelSeparatorContext( GetImport(), nPrefix, rLocalName, rProp, rProperties );
+ return new XMLLabelSeparatorContext( GetImport(), nElement, rProp, rProperties );
break;
}
// default / no context yet: create child context by base class
- if (!xContext)
- {
- xContext = SvXMLPropertySetContext::CreateChildContext(
- nPrefix, rLocalName, xAttrList, rProperties, rProp );
- }
-
- return xContext;
+ return SvXMLPropertySetContext::createFastChildContext(
+ nElement, xAttrList, rProperties, rProp );
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmloff/source/chart/XMLChartPropertyContext.hxx b/xmloff/source/chart/XMLChartPropertyContext.hxx
index 4689aa6973e6..7bbd55ed5b1c 100644
--- a/xmloff/source/chart/XMLChartPropertyContext.hxx
+++ b/xmloff/source/chart/XMLChartPropertyContext.hxx
@@ -32,11 +32,10 @@ public:
const rtl::Reference< SvXMLImportPropertyMapper >& rMapper );
virtual ~XMLChartPropertyContext() override;
- using SvXMLPropertySetContext::CreateChildContext;
- virtual SvXMLImportContextRef CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList,
+ using SvXMLPropertySetContext::createFastChildContext;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
::std::vector< XMLPropertyState > &rProperties,
const XMLPropertyState& rProp ) override;
diff --git a/xmloff/source/chart/XMLLabelSeparatorContext.cxx b/xmloff/source/chart/XMLLabelSeparatorContext.cxx
index dec08c2ad3da..90af4736b77b 100644
--- a/xmloff/source/chart/XMLLabelSeparatorContext.cxx
+++ b/xmloff/source/chart/XMLLabelSeparatorContext.cxx
@@ -27,12 +27,11 @@
using namespace ::com::sun::star;
XMLLabelSeparatorContext::XMLLabelSeparatorContext(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLocalName,
+ SvXMLImport& rImport, sal_Int32 nElement,
const XMLPropertyState& rProp,
::std::vector< XMLPropertyState > &rProps ) :
XMLElementPropertyContext(
- rImport, nPrfx, rLocalName, rProp, rProps ),
+ rImport, nElement, rProp, rProps ),
m_aSeparator()
{
}
@@ -40,7 +39,7 @@ XMLLabelSeparatorContext::XMLLabelSeparatorContext(
XMLLabelSeparatorContext::~XMLLabelSeparatorContext()
{}
-void XMLLabelSeparatorContext::StartElement( const uno::Reference< xml::sax::XAttributeList >& /*xAttrList*/ )
+void XMLLabelSeparatorContext::startFastElement( sal_Int32 /*nElement*/, const uno::Reference< xml::sax::XFastAttributeList >& /*xAttrList*/ )
{
}
@@ -58,7 +57,7 @@ SvXMLImportContextRef XMLLabelSeparatorContext::CreateChildContext(
return pContext;
}
-void XMLLabelSeparatorContext::EndElement()
+void XMLLabelSeparatorContext::endFastElement(sal_Int32 nElement)
{
if( !m_aSeparator.isEmpty() )
{
@@ -67,7 +66,7 @@ void XMLLabelSeparatorContext::EndElement()
SetInsert( true );
}
- XMLElementPropertyContext::EndElement();
+ XMLElementPropertyContext::endFastElement(nElement);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmloff/source/chart/XMLLabelSeparatorContext.hxx b/xmloff/source/chart/XMLLabelSeparatorContext.hxx
index e2153ea6565e..bd94d088be59 100644
--- a/xmloff/source/chart/XMLLabelSeparatorContext.hxx
+++ b/xmloff/source/chart/XMLLabelSeparatorContext.hxx
@@ -25,18 +25,19 @@ class XMLLabelSeparatorContext : public XMLElementPropertyContext
{
public:
- XMLLabelSeparatorContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
+ XMLLabelSeparatorContext( SvXMLImport& rImport, sal_Int32 nElement,
const XMLPropertyState& rProp,
::std::vector< XMLPropertyState > &rProps );
virtual ~XMLLabelSeparatorContext() override;
- 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 SvXMLImportContextRef CreateChildContext(
sal_uInt16 nPrefix,
const OUString& rLocalName,
const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
private:
OUString m_aSeparator;
diff --git a/xmloff/source/chart/XMLSymbolImageContext.cxx b/xmloff/source/chart/XMLSymbolImageContext.cxx
index 27d48ac8429a..881f821a89f5 100644
--- a/xmloff/source/chart/XMLSymbolImageContext.cxx
+++ b/xmloff/source/chart/XMLSymbolImageContext.cxx
@@ -26,8 +26,10 @@
#include <xmloff/XMLBase64ImportContext.hxx>
#include <com/sun/star/io/XOutputStream.hpp>
#include <com/sun/star/graphic/XGraphic.hpp>
+#include <sal/log.hxx>
using namespace css;
+using namespace xmloff::token;
namespace {
@@ -51,43 +53,38 @@ const SvXMLTokenMapEntry aSymbolImageAttrTokenMap[] =
};
XMLSymbolImageContext::XMLSymbolImageContext(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
+ SvXMLImport& rImport, sal_Int32 nElement,
const XMLPropertyState& rProp,
::std::vector< XMLPropertyState > &rProps ) :
XMLElementPropertyContext(
- rImport, nPrfx, rLName, rProp, rProps )
+ rImport, nElement, rProp, rProps )
{
}
XMLSymbolImageContext::~XMLSymbolImageContext()
{}
-void XMLSymbolImageContext::StartElement( const uno::Reference< xml::sax::XAttributeList >& xAttrList )
+void XMLSymbolImageContext::startFastElement(
+ sal_Int32 /*nElement*/,
+ const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
{
- static const SvXMLTokenMap aTokenMap( aSymbolImageAttrTokenMap );
- OUString aLocalName;
-
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i = 0; i < nAttrCount; i++ )
+ for (auto &aIter : sax_fastparser::castToFastAttributeList( xAttrList ))
{
- const OUString& rAttrName = xAttrList->getNameByIndex( i );
- sal_uInt16 nPrefix =
- GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
- &aLocalName );
- const OUString& rValue = xAttrList->getValueByIndex( i );
+ const OUString sValue = aIter.toString();
- switch( aTokenMap.Get( nPrefix, aLocalName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_SYMBOL_IMAGE_HREF:
- msURL = rValue;
+ case XML_ELEMENT(XLINK, XML_HREF):
+ msURL = sValue;
break;
- case XML_TOK_SYMBOL_IMAGE_ACTUATE:
- case XML_TOK_SYMBOL_IMAGE_TYPE:
- case XML_TOK_SYMBOL_IMAGE_SHOW:
+ case XML_ELEMENT(XLINK, XML_ACTUATE):
+ case XML_ELEMENT(XLINK, XML_TYPE):
+ case XML_ELEMENT(XLINK, XML_SHOW):
// these values are currently not interpreted
// it is always assumed 'actuate=onLoad', 'type=simple', 'show=embed'
break;
+ default:
+ SAL_WARN("xmloff", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << sValue);
}
}
}
@@ -113,7 +110,7 @@ SvXMLImportContextRef XMLSymbolImageContext::CreateChildContext(
return pContext;
}
-void XMLSymbolImageContext::EndElement()
+void XMLSymbolImageContext::endFastElement(sal_Int32 nElement)
{
uno::Reference<graphic::XGraphic> xGraphic;
@@ -134,7 +131,7 @@ void XMLSymbolImageContext::EndElement()
SetInsert( true );
}
- XMLElementPropertyContext::EndElement();
+ XMLElementPropertyContext::endFastElement(nElement);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmloff/source/chart/XMLSymbolImageContext.hxx b/xmloff/source/chart/XMLSymbolImageContext.hxx
index 14f87879e7a0..d2267db6b338 100644
--- a/xmloff/source/chart/XMLSymbolImageContext.hxx
+++ b/xmloff/source/chart/XMLSymbolImageContext.hxx
@@ -29,18 +29,19 @@ class XMLSymbolImageContext : public XMLElementPropertyContext
{
public:
- XMLSymbolImageContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
+ XMLSymbolImageContext( SvXMLImport& rImport, sal_Int32 nElement,
const XMLPropertyState& rProp,
::std::vector< XMLPropertyState > &rProps );
virtual ~XMLSymbolImageContext() override;
- 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 SvXMLImportContextRef CreateChildContext(
sal_uInt16 nPrefix,
const OUString& rLocalName,
const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
- virtual void EndElement() override;
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
private:
OUString msURL;
diff --git a/xmloff/source/draw/XMLShapePropertySetContext.cxx b/xmloff/source/draw/XMLShapePropertySetContext.cxx
index 2fbcbb57e551..4a86aa4dcc99 100644
--- a/xmloff/source/draw/XMLShapePropertySetContext.cxx
+++ b/xmloff/source/draw/XMLShapePropertySetContext.cxx
@@ -31,19 +31,6 @@ using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
-XMLShapePropertySetContext::XMLShapePropertySetContext(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const Reference< xml::sax::XAttributeList > & xAttrList,
- sal_uInt32 nFam,
- ::std::vector< XMLPropertyState > &rProps,
- const rtl::Reference < SvXMLImportPropertyMapper > &rMap ) :
- SvXMLPropertySetContext( rImport, nPrfx, rLName, xAttrList, nFam,
- rProps, rMap ),
- mnBulletIndex(-1)
-{
-}
-
XMLShapePropertySetContext::XMLShapePropertySetContext(
SvXMLImport& rImport, sal_Int32 nElement,
const Reference< xml::sax::XFastAttributeList > & xAttrList,
@@ -60,7 +47,7 @@ XMLShapePropertySetContext::~XMLShapePropertySetContext()
{
}
-void XMLShapePropertySetContext::EndElement()
+void XMLShapePropertySetContext::endFastElement(sal_Int32 )
{
Reference< container::XIndexReplace > xNumRule;
if( mxBulletStyle.is() )
@@ -77,34 +64,29 @@ void XMLShapePropertySetContext::EndElement()
SvXMLPropertySetContext::EndElement();
}
-SvXMLImportContextRef XMLShapePropertySetContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const Reference< xml::sax::XAttributeList > & xAttrList,
- ::std::vector< XMLPropertyState > &rProperties,
- const XMLPropertyState& rProp )
+css::uno::Reference< css::xml::sax::XFastContextHandler > XMLShapePropertySetContext::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
+ ::std::vector< XMLPropertyState > &rProperties,
+ const XMLPropertyState& rProp )
{
- SvXMLImportContextRef xContext;
-
switch( mxMapper->getPropertySetMapper()->GetEntryContextId( rProp.mnIndex ) )
{
case CTF_NUMBERINGRULES:
mnBulletIndex = rProp.mnIndex;
- mxBulletStyle = xContext = new SvxXMLListStyleContext( GetImport(), nPrefix, rLocalName, xAttrList );
+ mxBulletStyle = new SvxXMLListStyleContext( GetImport(), nElement, xAttrList );
+ return mxBulletStyle.get();
break;
case CTF_TABSTOP:
- xContext = new SvxXMLTabStopImportContext( GetImport(), nPrefix,
- rLocalName, rProp,
+ return new SvxXMLTabStopImportContext( GetImport(), nElement,
+ rProp,
rProperties );
break;
}
- if (!xContext)
- xContext = SvXMLPropertySetContext::CreateChildContext( nPrefix, rLocalName,
+ return SvXMLPropertySetContext::createFastChildContext( nElement,
xAttrList,
rProperties, rProp );
-
- return xContext;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmloff/source/draw/ximpstyl.cxx b/xmloff/source/draw/ximpstyl.cxx
index 7d6435ab024b..f07820a4f428 100644
--- a/xmloff/source/draw/ximpstyl.cxx
+++ b/xmloff/source/draw/ximpstyl.cxx
@@ -67,12 +67,12 @@ public:
::std::vector< XMLPropertyState > &rProps,
const rtl::Reference < SvXMLImportPropertyMapper > &rMap );
- using SvXMLPropertySetContext::CreateChildContext;
- virtual SvXMLImportContextRef CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList,
- ::std::vector< XMLPropertyState > &rProperties,
- const XMLPropertyState& rProp) override;
+ using SvXMLPropertySetContext::createFastChildContext;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
+ ::std::vector< XMLPropertyState > &rProperties,
+ const XMLPropertyState& rProp ) override;
};
}
@@ -87,42 +87,34 @@ SdXMLDrawingPagePropertySetContext::SdXMLDrawingPagePropertySetContext(
{
}
-SvXMLImportContextRef SdXMLDrawingPagePropertySetContext::CreateChildContext(
- sal_uInt16 p_nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList > & xAttrList,
- ::std::vector< XMLPropertyState > &rProperties,
- const XMLPropertyState& rProp )
+css::uno::Reference< css::xml::sax::XFastContextHandler > SdXMLDrawingPagePropertySetContext::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
+ ::std::vector< XMLPropertyState > &rProperties,
+ const XMLPropertyState& rProp )
{
- SvXMLImportContextRef xContext;
-
switch( mxMapper->getPropertySetMapper()->GetEntryContextId( rProp.mnIndex ) )
{
case CTF_PAGE_SOUND_URL:
{
- const sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for(sal_Int16 i=0; i < nAttrCount; i++)
+ for (auto &aIter : sax_fastparser::castToFastAttributeList(xAttrList))
{
- OUString aLocalName;
- sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName(xAttrList->getNameByIndex(i), &aLocalName);
-
- if( (nPrefix == XML_NAMESPACE_XLINK) && IsXMLToken( aLocalName, XML_HREF ) )
+ if( aIter.getToken() == XML_ELEMENT(XLINK, XML_HREF) )
{
- uno::Any aAny( GetImport().GetAbsoluteReference( xAttrList->getValueByIndex(i) ) );
+ uno::Any aAny( GetImport().GetAbsoluteReference( aIter.toString() ) );
XMLPropertyState aPropState( rProp.mnIndex, aAny );
rProperties.push_back( aPropState );
}
+ else
+ SAL_WARN("xmloff", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << aIter.toString());
}
break;
}
}
- if (!xContext)
- xContext = SvXMLPropertySetContext::CreateChildContext( p_nPrefix, rLocalName,
+ return SvXMLPropertySetContext::createFastChildContext( nElement,
xAttrList,
rProperties, rProp );
-
- return xContext;
}
namespace {
diff --git a/xmloff/source/style/PagePropertySetContext.cxx b/xmloff/source/style/PagePropertySetContext.cxx
index 24fbe25bf8c1..31c541f56b35 100644
--- a/xmloff/source/style/PagePropertySetContext.cxx
+++ b/xmloff/source/style/PagePropertySetContext.cxx
@@ -48,12 +48,11 @@ PagePropertySetContext::~PagePropertySetContext()
{
}
-SvXMLImportContextRef PagePropertySetContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const Reference< xml::sax::XAttributeList > & xAttrList,
- ::std::vector< XMLPropertyState > &rProperties,
- const XMLPropertyState& rProp )
+css::uno::Reference< css::xml::sax::XFastContextHandler > PagePropertySetContext::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
+ ::std::vector< XMLPropertyState > &rProperties,
+ const XMLPropertyState& rProp )
{
sal_Int32 nPos = CTF_PM_GRAPHICPOSITION;
sal_Int32 nFil = CTF_PM_GRAPHICFILTER;
@@ -74,7 +73,6 @@ SvXMLImportContextRef PagePropertySetContext::CreateChildContext(
default:
break;
}
- SvXMLImportContextRef xContext;
switch( mxMapper->getPropertySetMapper()
->GetEntryContextId( rProp.mnIndex ) )
@@ -88,9 +86,9 @@ SvXMLImportContextRef PagePropertySetContext::CreateChildContext(
nFil == mxMapper->getPropertySetMapper()
->GetEntryContextId( rProp.mnIndex-1 ),
"invalid property map!");
- xContext =
- new XMLBackgroundImageContext( GetImport(), nPrefix,
- rLocalName, xAttrList,
+ return
+ new XMLBackgroundImageContext( GetImport(), nElement,
+ xAttrList,
rProp,
rProp.mnIndex-2,
rProp.mnIndex-1,
@@ -100,24 +98,21 @@ SvXMLImportContextRef PagePropertySetContext::CreateChildContext(
break;
case CTF_PM_TEXTCOLUMNS:
- xContext = new XMLTextColumnsContext( GetImport(), nPrefix,
- rLocalName, xAttrList, rProp,
+ return new XMLTextColumnsContext( GetImport(), nElement,
+ xAttrList, rProp,
rProperties );
break;
case CTF_PM_FTN_LINE_WEIGHT:
- xContext = new XMLFootnoteSeparatorImport(
- GetImport(), nPrefix, rLocalName, rProperties,
+ return new XMLFootnoteSeparatorImport(
+ GetImport(), nElement, rProperties,
mxMapper->getPropertySetMapper(), rProp.mnIndex);
break;
}
- if (!xContext)
- xContext = SvXMLPropertySetContext::CreateChildContext( nPrefix, rLocalName,
+ return SvXMLPropertySetContext::createFastChildContext( nElement,
xAttrList,
rProperties, rProp );
-
- return xContext;
}
diff --git a/xmloff/source/style/PagePropertySetContext.hxx b/xmloff/source/style/PagePropertySetContext.hxx
index b44828b9130a..8d8cb9a2c67c 100644
--- a/xmloff/source/style/PagePropertySetContext.hxx
+++ b/xmloff/source/style/PagePropertySetContext.hxx
@@ -44,12 +44,12 @@ public:
virtual ~PagePropertySetContext() override;
- using SvXMLPropertySetContext::CreateChildContext;
- virtual SvXMLImportContextRef CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList,
- ::std::vector< XMLPropertyState > &rProperties,
- const XMLPropertyState& rProp) override;
+ using SvXMLPropertySetContext::createFastChildContext;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
+ ::std::vector< XMLPropertyState > &rProperties,
+ const XMLPropertyState& rProp ) override;
};
#endif // INCLUDED_XMLOFF_SOURCE_STYLE_PAGEPROPERTYSETCONTEXT_HXX
diff --git a/xmloff/source/style/XMLBackgroundImageContext.cxx b/xmloff/source/style/XMLBackgroundImageContext.cxx
index e9008326c25d..fdfe43008081 100644
--- a/xmloff/source/style/XMLBackgroundImageContext.cxx
+++ b/xmloff/source/style/XMLBackgroundImageContext.cxx
@@ -23,7 +23,7 @@
#include <com/sun/star/graphic/XGraphic.hpp>
#include <tools/debug.hxx>
-
+#include <sal/log.hxx>
#include <sax/tools/converter.hxx>
#include <xmloff/xmltkmap.hxx>
@@ -169,37 +169,31 @@ static void lcl_xmlbic_MergeVertPos( GraphicLocation& ePos,
void XMLBackgroundImageContext::ProcessAttrs(
- const Reference< xml::sax::XAttributeList >& xAttrList )
+ const Reference< xml::sax::XFastAttributeList >& xAttrList )
{
static const SvXMLTokenMap aTokenMap( aBGImgAttributesAttrTokenMap );
ePos = GraphicLocation_NONE;
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ for (auto &aIter : sax_fastparser::castToFastAttributeList(xAttrList))
{
- const OUString& rAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix =
- GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
- &aLocalName );
- const OUString& rValue = xAttrList->getValueByIndex( i );
-
- switch( aTokenMap.Get( nPrefix, aLocalName ) )
+ const OUString sValue = aIter.toString();
+
+ switch( aIter.getToken() )
{
- case XML_TOK_BGIMG_HREF:
- m_sURL = rValue;
+ case XML_ELEMENT(XLINK, XML_HREF):
+ m_sURL = sValue;
if( GraphicLocation_NONE == ePos )
ePos = GraphicLocation_TILED;
break;
- case XML_TOK_BGIMG_TYPE:
- case XML_TOK_BGIMG_ACTUATE:
- case XML_TOK_BGIMG_SHOW:
+ case XML_ELEMENT(XLINK, XML_TYPE):
+ case XML_ELEMENT(XLINK, XML_ACTUATE):
+ case XML_ELEMENT(XLINK, XML_SHOW):
break;
- case XML_TOK_BGIMG_POSITION:
+ case XML_ELEMENT(STYLE, XML_POSITION):
{
GraphicLocation eNewPos = GraphicLocation_NONE, eTmp;
- SvXMLTokenEnumerator aTokenEnum( rValue );
+ SvXMLTokenEnumerator aTokenEnum( sValue );
OUString aToken;
bool bHori = false, bVert = false;
bool bOK = true;
@@ -283,7 +277,7 @@ void XMLBackgroundImageContext::ProcessAttrs(
ePos = eNewPos;
}
break;
- case XML_TOK_BGIMG_REPEAT:
+ case XML_ELEMENT(STYLE, XML_REPEAT):
{
GraphicLocation nPos = GraphicLocation_NONE;
static const SvXMLEnumMapEntry<GraphicLocation> psXML_BrushRepeat[] =
@@ -293,7 +287,7 @@ void XMLBackgroundImageContext::ProcessAttrs(
{ XML_STRETCH, GraphicLocation_AREA },
{ XML_TOKEN_INVALID, GraphicLocation(0) }
};
- if( SvXMLUnitConverter::convertEnum( nPos, rValue,
+ if( SvXMLUnitConverter::convertEnum( nPos, sValue,
psXML_BrushRepeat ) )
{
if( GraphicLocation_MIDDLE_MIDDLE != nPos ||
@@ -304,36 +298,37 @@ void XMLBackgroundImageContext::ProcessAttrs(
}
}
break;
- case XML_TOK_BGIMG_FILTER:
- sFilter = rValue;
+ case XML_ELEMENT(STYLE, XML_FILTER_NAME):
+ sFilter = sValue;
break;
- case XML_TOK_BGIMG_OPACITY:
+ case XML_ELEMENT(DRAW, XML_OPACITY):
{
sal_Int32 nTmp;
// convert from percent and clip
- if (::sax::Converter::convertPercent( nTmp, rValue ))
+ if (::sax::Converter::convertPercent( nTmp, sValue ))
{
if( (nTmp >= 0) && (nTmp <= 100) )
nTransparency = static_cast<sal_Int8>( 100-nTmp );
}
}
break;
+ default:
+ SAL_WARN("xmloff", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << sValue);
}
}
}
XMLBackgroundImageContext::XMLBackgroundImageContext(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const Reference< xml::sax::XAttributeList > & xAttrList,
+ SvXMLImport& rImport, sal_Int32 nElement,
+ const Reference< xml::sax::XFastAttributeList > & xAttrList,
const XMLPropertyState& rProp,
sal_Int32 nPosIdx,
sal_Int32 nFilterIdx,
sal_Int32 nTransparencyIdx,
sal_Int32 nBitmapModeIdx,
::std::vector< XMLPropertyState > &rProps ) :
- XMLElementPropertyContext( rImport, nPrfx, rLName, rProp, rProps ),
+ XMLElementPropertyContext( rImport, nElement, rProp, rProps ),
aPosProp( nPosIdx ),
m_nBitmapModeIdx(nBitmapModeIdx),
aFilterProp( nFilterIdx ),
@@ -369,7 +364,7 @@ SvXMLImportContextRef XMLBackgroundImageContext::CreateChildContext(
return pContext;
}
-void XMLBackgroundImageContext::EndElement()
+void XMLBackgroundImageContext::endFastElement(sal_Int32 nElement)
{
uno::Reference<graphic::XGraphic> xGraphic;
if (!m_sURL.isEmpty())
@@ -394,7 +389,7 @@ void XMLBackgroundImageContext::EndElement()
aTransparencyProp.maValue <<= nTransparency;
SetInsert( true );
- XMLElementPropertyContext::EndElement();
+ XMLElementPropertyContext::endFastElement(nElement);
if( -1 != aPosProp.mnIndex )
{
diff --git a/xmloff/source/style/XMLElementPropertyContext.cxx b/xmloff/source/style/XMLElementPropertyContext.cxx
index 91af29fe31f4..f065e081d7e3 100644
--- a/xmloff/source/style/XMLElementPropertyContext.cxx
+++ b/xmloff/source/style/XMLElementPropertyContext.cxx
@@ -21,13 +21,12 @@
XMLElementPropertyContext::XMLElementPropertyContext (
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
+ SvXMLImport& rImport, sal_Int32 /*nElement*/,
const XMLPropertyState& rProp,
::std::vector< XMLPropertyState > &rProps ) :
- SvXMLImportContext( rImport, nPrfx, rLName ),
+ SvXMLImportContext( rImport ),
bInsert( false ),
- rProperties( rProps ),
+ rProperties( rProps ),
aProp( rProp )
{
}
@@ -36,11 +35,10 @@ XMLElementPropertyContext::~XMLElementPropertyContext()
{
}
-void XMLElementPropertyContext::EndElement( )
+void XMLElementPropertyContext::endFastElement(sal_Int32 )
{
if( bInsert )
rProperties.push_back( aProp );
}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmloff/source/style/XMLFootnoteSeparatorImport.cxx b/xmloff/source/style/XMLFootnoteSeparatorImport.cxx
index bd52f3cb45d7..b3a790302acd 100644
--- a/xmloff/source/style/XMLFootnoteSeparatorImport.cxx
+++ b/xmloff/source/style/XMLFootnoteSeparatorImport.cxx
@@ -55,12 +55,11 @@ using ::com::sun::star::xml::sax::XAttributeList;
XMLFootnoteSeparatorImport::XMLFootnoteSeparatorImport(
SvXMLImport& rImport,
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
+ sal_Int32 /*nElement*/,
vector<XMLPropertyState> & rProps,
const rtl::Reference<XMLPropertySetMapper> & rMapperRef,
sal_Int32 nIndex) :
- SvXMLImportContext(rImport, nPrefix, rLocalName),
+ SvXMLImportContext(rImport),
rProperties(rProps),
rMapper(rMapperRef),
nPropIndex(nIndex)
@@ -71,8 +70,9 @@ XMLFootnoteSeparatorImport::~XMLFootnoteSeparatorImport()
{
}
-void XMLFootnoteSeparatorImport::StartElement(
- const Reference<XAttributeList> & xAttrList)
+void XMLFootnoteSeparatorImport::startFastElement(
+ sal_Int32 /*nElement*/,
+ const Reference<css::xml::sax::XFastAttributeList> & xAttrList)
{
// get the values from the properties
sal_Int16 nLineWeight = 0;
@@ -87,39 +87,36 @@ void XMLFootnoteSeparatorImport::StartElement(
sal_Int8 nLineStyle = 1;
// iterate over xattribute list and fill values
- 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 );
-
- if (XML_NAMESPACE_STYLE == nPrefix)
+ OUString sAttrValue = aIter.toString();
+ sal_Int32 nTmp;
+ switch (aIter.getToken())
{
- OUString sAttrValue = xAttrList->getValueByIndex(nAttr);
- sal_Int32 nTmp;
- if (IsXMLToken( sLocalName, XML_WIDTH ))
+ case XML_ELEMENT(STYLE, XML_WIDTH):
{
if (GetImport().GetMM100UnitConverter().convertMeasureToCore(
nTmp, sAttrValue))
{
nLineWeight = static_cast<sal_Int16>(nTmp);
}
+ break;
}
- else if (IsXMLToken( sLocalName, XML_DISTANCE_BEFORE_SEP ))
+ case XML_ELEMENT(STYLE, XML_DISTANCE_BEFORE_SEP):
{
if (GetImport().GetMM100UnitConverter().convertMeasureToCore(
nTmp, sAttrValue))
nLineTextDistance = nTmp;
+ break;
}
- else if (IsXMLToken( sLocalName, XML_DISTANCE_AFTER_SEP ))
+ case XML_ELEMENT(STYLE, XML_DISTANCE_AFTER_SEP):
{
if (GetImport().GetMM100UnitConverter().convertMeasureToCore(
nTmp, sAttrValue))
nLineDistance = nTmp;
+ break;
}
- else if (IsXMLToken( sLocalName, XML_ADJUSTMENT ))
+ case XML_ELEMENT(STYLE, XML_ADJUSTMENT ):
{
static const SvXMLEnumMapEntry<text::HorizontalAdjust> aXML_HorizontalAdjust_Enum[] =
{
@@ -131,20 +128,23 @@ void XMLFootnoteSeparatorImport::StartElement(
SvXMLUnitConverter::convertEnum(
eLineAdjust, sAttrValue, aXML_HorizontalAdjust_Enum);
+ break;
}
- else if (IsXMLToken( sLocalName, XML_REL_WIDTH ))
+ case XML_ELEMENT(STYLE, XML_REL_WIDTH ):
{
if (::sax::Converter::convertPercent(nTmp, sAttrValue))
nLineRelWidth = static_cast<sal_uInt8>(nTmp);
+ break;
}
- else if (IsXMLToken( sLocalName, XML_COLOR ))
+ case XML_ELEMENT(STYLE, XML_COLOR):
{
if (::sax::Converter::convertColor(nTmp, sAttrValue))
{
nLineColor = nTmp;
}
+ break;
}
- else if (IsXMLToken( sLocalName, XML_LINE_STYLE ))
+ case XML_ELEMENT(STYLE, XML_LINE_STYLE ):
{
static const SvXMLEnumMapEntry<sal_Int8> aXML_LineStyle_Enum[] =
{
@@ -156,7 +156,10 @@ void XMLFootnoteSeparatorImport::StartElement(
};
SvXMLUnitConverter::convertEnum(nLineStyle, sAttrValue, aXML_LineStyle_Enum);
+ break;
}
+ default:
+ SAL_WARN("xmloff", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << sAttrValue);
}
}
diff --git a/xmloff/source/style/XMLFootnoteSeparatorImport.hxx b/xmloff/source/style/XMLFootnoteSeparatorImport.hxx
index b17d6927dd17..30772b019fed 100644
--- a/xmloff/source/style/XMLFootnoteSeparatorImport.hxx
+++ b/xmloff/source/style/XMLFootnoteSeparatorImport.hxx
@@ -48,16 +48,15 @@ public:
XMLFootnoteSeparatorImport(
SvXMLImport& rImport,
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
+ sal_Int32 nElement,
::std::vector<XMLPropertyState> & rProperties,
const rtl::Reference<XMLPropertySetMapper> & rMapperRef,
sal_Int32 nIndex);
virtual ~XMLFootnoteSeparatorImport() override;
- 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 >& ) override;
};
#endif
diff --git a/xmloff/source/style/xmlprcon.cxx b/xmloff/source/style/xmlprcon.cxx
index 40073803e993..119e5bb86c17 100644
--- a/xmloff/source/style/xmlprcon.cxx
+++ b/xmloff/source/style/xmlprcon.cxx
@@ -17,6 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <sal/log.hxx>
#include <xmloff/xmlprcon.hxx>
#include <xmloff/xmlimp.hxx>
#include <xmloff/xmltypes.hxx>
@@ -27,27 +28,6 @@
using namespace ::com::sun::star;
using namespace ::std;
-SvXMLPropertySetContext::SvXMLPropertySetContext(
- SvXMLImport& rImp, sal_uInt16 nPrfx,
- const OUString& rLName,
- const uno::Reference< xml::sax::XAttributeList >& xAttrList,
- sal_uInt32 nFam,
- vector< XMLPropertyState > &rProps,
- const rtl::Reference < SvXMLImportPropertyMapper > &rMap,
- sal_Int32 nSIdx, sal_Int32 nEIdx )
-: SvXMLImportContext( rImp, nPrfx, rLName )
-, mnStartIdx( nSIdx )
-, mnEndIdx( nEIdx )
-, mnFamily( nFam )
-, mrProperties( rProps )
-, mxMapper( rMap )
-{
- mxMapper->importXML( mrProperties, xAttrList,
- GetImport().GetMM100UnitConverter(),
- GetImport().GetNamespaceMap(), mnFamily,
- mnStartIdx, mnEndIdx );
-}
-
SvXMLPropertySetContext::SvXMLPropertySetContext(
SvXMLImport& rImp, sal_Int32 /*nElement*/,
const uno::Reference< xml::sax::XFastAttributeList >& xAttrList,
@@ -72,24 +52,22 @@ SvXMLPropertySetContext::~SvXMLPropertySetContext()
{
}
-SvXMLImportContextRef SvXMLPropertySetContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList >& xAttrList )
+css::uno::Reference< css::xml::sax::XFastContextHandler > SvXMLPropertySetContext::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList)
{
rtl::Reference< XMLPropertySetMapper > aSetMapper(
mxMapper->getPropertySetMapper() );
- sal_Int32 nEntryIndex = aSetMapper->GetEntryIndex( nPrefix, rLocalName,
- mnFamily, mnStartIdx );
+ sal_Int32 nEntryIndex = aSetMapper->GetEntryIndex( nElement, mnFamily, mnStartIdx );
if( ( nEntryIndex != -1 ) && (-1 == mnEndIdx || nEntryIndex < mnEndIdx ) &&
( 0 != ( aSetMapper->GetEntryFlags( nEntryIndex )
& MID_FLAG_ELEMENT_ITEM_IMPORT ) ) )
{
XMLPropertyState aProp( nEntryIndex );
- return CreateChildContext( nPrefix, rLocalName, xAttrList,
- mrProperties, aProp );
+ return createFastChildContext( nElement, xAttrList, mrProperties, aProp );
}
+ SAL_WARN("xmloff", "unknown element " << SvXMLImport::getPrefixAndNameFromToken(nElement));
return nullptr;
}
@@ -97,13 +75,13 @@ SvXMLImportContextRef SvXMLPropertySetContext::CreateChildContext(
CreateChildContext if the element matches an entry in the
SvXMLImportItemMapper with the mid flag MID_FLAG_ELEMENT
*/
-SvXMLImportContextRef SvXMLPropertySetContext::CreateChildContext(
- sal_uInt16 /*nPrefix*/,
- const OUString& /*rLocalName*/,
- const uno::Reference< xml::sax::XAttributeList >&,
- ::std::vector< XMLPropertyState > &,
- const XMLPropertyState& )
+css::uno::Reference< css::xml::sax::XFastContextHandler > SvXMLPropertySetContext::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& /*xAttrList*/,
+ ::std::vector< XMLPropertyState > &/*rProperties*/,
+ const XMLPropertyState& /*rProp*/ )
{
+ SAL_WARN("xmloff", "unknown element " << SvXMLImport::getPrefixAndNameFromToken(nElement));
return nullptr;
}
diff --git a/xmloff/source/style/xmlprmap.cxx b/xmloff/source/style/xmlprmap.cxx
index b00529bc2f21..7d81ad0f3456 100644
--- a/xmloff/source/style/xmlprmap.cxx
+++ b/xmloff/source/style/xmlprmap.cxx
@@ -25,6 +25,7 @@
#include <xmloff/xmltoken.hxx>
#include <xmloff/maptype.hxx>
#include <xmloff/prhdlfac.hxx>
+#include <xmloff/xmlimp.hxx>
#include <com/sun/star/beans/XPropertySet.hpp>
@@ -270,6 +271,37 @@ sal_Int32 XMLPropertySetMapper::GetEntryIndex(
return -1;
}
+// Search for the given name and the namespace in the list and return
+// the index of the entry
+// If there is no matching entry the method returns -1
+sal_Int32 XMLPropertySetMapper::GetEntryIndex(
+ sal_Int32 nElement,
+ sal_uInt32 nPropType,
+ sal_Int32 nStartAt /* = -1 */ ) const
+{
+ sal_Int32 nEntries = GetEntryCount();
+ sal_Int32 nIndex= nStartAt == - 1? 0 : nStartAt+1;
+
+ if ( nEntries && nIndex < nEntries )
+ {
+ sal_uInt16 nNamespace = (nElement >> NMSP_SHIFT) - 1;
+ const OUString& rStrName = SvXMLImport::getNameFromToken(nElement);
+ do
+ {
+ const XMLPropertySetMapperEntry_Impl& rEntry = mpImpl->maMapEntries[nIndex];
+ if( (!nPropType || nPropType == rEntry.GetPropType()) &&
+ rEntry.nXMLNameSpace == nNamespace &&
+ rStrName == rEntry.sXMLAttributeName )
+ return nIndex;
+ else
+ nIndex++;
+
+ } while( nIndex<nEntries );
+ }
+
+ return -1;
+}
+
/** searches for an entry that matches the given api name, namespace and local name or -1 if nothing found */
sal_Int32 XMLPropertySetMapper::FindEntryIndex(
const char* sApiName,
diff --git a/xmloff/source/style/xmltabi.cxx b/xmloff/source/style/xmltabi.cxx
index 86ded9f2dc19..20b71a3fd494 100644
--- a/xmloff/source/style/xmltabi.cxx
+++ b/xmloff/source/style/xmltabi.cxx
@@ -18,6 +18,7 @@
*/
#include <com/sun/star/style/TabAlign.hpp>
+#include <sal/log.hxx>
#include <xmloff/xmltkmap.hxx>
#include <xmloff/namespacemap.hxx>
#include <xmloff/xmlnamespace.hxx>
@@ -62,19 +63,17 @@ private:
public:
- SvxXMLTabStopContext_Impl( SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const uno::Reference< xml::sax::XAttributeList > & xAttrList );
+ SvxXMLTabStopContext_Impl( SvXMLImport& rImport, sal_Int32 nElement,
+ const uno::Reference< xml::sax::XFastAttributeList > & xAttrList );
const style::TabStop& getTabStop() const { return aTabStop; }
};
SvxXMLTabStopContext_Impl::SvxXMLTabStopContext_Impl(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const uno::Reference< xml::sax::XAttributeList > & xAttrList )
-: SvXMLImportContext( rImport, nPrfx, rLName )
+ SvXMLImport& rImport, sal_Int32 /*nElement*/,
+ const uno::Reference< xml::sax::XFastAttributeList > & xAttrList )
+: SvXMLImportContext( rImport )
{
aTabStop.Position = 0;
aTabStop.Alignment = style::TabAlign_LEFT;
@@ -84,64 +83,60 @@ SvxXMLTabStopContext_Impl::SvxXMLTabStopContext_Impl(
static const SvXMLTokenMap aTokenMap( aTabsAttributesAttrTokenMap );
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ for (auto &aIter : sax_fastparser::castToFastAttributeList(xAttrList))
{
- const OUString& rAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix =
- GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
- &aLocalName );
- const OUString& rValue = xAttrList->getValueByIndex( i );
+ const OUString sValue = aIter.toString();
sal_Int32 nVal;
- switch( aTokenMap.Get( nPrefix, aLocalName ) )
+ switch( aIter.getToken() )
{
- case XML_TOK_TABSTOP_POSITION:
+ case XML_ELEMENT(STYLE, XML_POSITION):
if (GetImport().GetMM100UnitConverter().convertMeasureToCore(
- nVal, rValue))
+ nVal, sValue))
{
aTabStop.Position = nVal;
}
break;
- case XML_TOK_TABSTOP_TYPE:
- if( IsXMLToken( rValue, XML_LEFT ) )
+ case XML_ELEMENT(STYLE, XML_TYPE):
+ if( IsXMLToken( sValue, XML_LEFT ) )
{
aTabStop.Alignment = style::TabAlign_LEFT;
}
- else if( IsXMLToken( rValue, XML_RIGHT ) )
+ else if( IsXMLToken( sValue, XML_RIGHT ) )
{
aTabStop.Alignment = style::TabAlign_RIGHT;
}
- else if( IsXMLToken( rValue, XML_CENTER ) )
+ else if( IsXMLToken( sValue, XML_CENTER ) )
{
aTabStop.Alignment = style::TabAlign_CENTER;
}
- else if( IsXMLToken( rValue, XML_CHAR ) )
+ else if( IsXMLToken( sValue, XML_CHAR ) )
{
aTabStop.Alignment = style::TabAlign_DECIMAL;
}
- else if( IsXMLToken( rValue, XML_DEFAULT ) )
+ else if( IsXMLToken( sValue, XML_DEFAULT ) )
{
aTabStop.Alignment = style::TabAlign_DEFAULT;
}
break;
- case XML_TOK_TABSTOP_CHAR:
- if( !rValue.isEmpty() )
- aTabStop.DecimalChar = rValue[0];
+ case XML_ELEMENT(STYLE, XML_CHAR):
+ if( !sValue.isEmpty() )
+ aTabStop.DecimalChar = sValue[0];
break;
- case XML_TOK_TABSTOP_LEADER_STYLE:
- if( IsXMLToken( rValue, XML_NONE ) )
+ case XML_ELEMENT(STYLE, XML_LEADER_STYLE):
+ if( IsXMLToken( sValue, XML_NONE ) )
aTabStop.FillChar = ' ';
- else if( IsXMLToken( rValue, XML_DOTTED ) )
+ else if( IsXMLToken( sValue, XML_DOTTED ) )
aTabStop.FillChar = '.';
else
aTabStop.FillChar = '_';
break;
- case XML_TOK_TABSTOP_LEADER_TEXT:
- if( !rValue.isEmpty() )
- cTextFillChar = rValue[0];
+ case XML_ELEMENT(STYLE, XML_LEADER_TEXT):
+ if( !sValue.isEmpty() )
+ cTextFillChar = sValue[0];
break;
+ default:
+ SAL_WARN("xmloff", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << sValue);
}
}
@@ -151,27 +146,22 @@ SvxXMLTabStopContext_Impl::SvxXMLTabStopContext_Impl(
SvxXMLTabStopImportContext::SvxXMLTabStopImportContext(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
+ SvXMLImport& rImport, sal_Int32 nElement,
const XMLPropertyState& rProp,
::std::vector< XMLPropertyState > &rProps )
-: XMLElementPropertyContext( rImport, nPrfx, rLName, rProp, rProps )
+: XMLElementPropertyContext( rImport, nElement, rProp, rProps )
{
}
-SvXMLImportContextRef SvxXMLTabStopImportContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList > & xAttrList )
+css::uno::Reference< css::xml::sax::XFastContextHandler > SvxXMLTabStopImportContext::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList)
{
- SvXMLImportContext *pContext = nullptr;
-
- if( XML_NAMESPACE_STYLE == nPrefix && IsXMLToken( rLocalName, XML_TAB_STOP ) )
+ if( nElement == XML_ELEMENT(STYLE, XML_TAB_STOP) )
{
// create new tabstop import context
const rtl::Reference<SvxXMLTabStopContext_Impl> xTabStopContext{
- new SvxXMLTabStopContext_Impl( GetImport(), nPrefix, rLocalName,
- xAttrList )};
+ new SvxXMLTabStopContext_Impl( GetImport(), nElement, xAttrList )};
// add new tabstop to array of tabstops
if( !mpTabStops )
@@ -179,13 +169,15 @@ SvXMLImportContextRef SvxXMLTabStopImportContext::CreateChildContext(
mpTabStops->push_back( xTabStopContext );
- pContext = xTabStopContext.get();
+ return xTabStopContext.get();
}
+ else
+ SAL_WARN("xmloff", "unknown element " << SvXMLImport::getPrefixAndNameFromToken(nElement));
- return pContext;
+ return nullptr;
}
-void SvxXMLTabStopImportContext::EndElement( )
+void SvxXMLTabStopImportContext::endFastElement(sal_Int32 nElement)
{
sal_uInt16 nCount = mpTabStops ? mpTabStops->size() : 0;
uno::Sequence< style::TabStop> aSeq( nCount );
@@ -215,8 +207,7 @@ void SvxXMLTabStopImportContext::EndElement( )
aProp.maValue <<= aSeq;
SetInsert( true );
- XMLElementPropertyContext::EndElement();
-
+ XMLElementPropertyContext::endFastElement(nElement);
}
diff --git a/xmloff/source/text/XMLSectionFootnoteConfigImport.cxx b/xmloff/source/text/XMLSectionFootnoteConfigImport.cxx
index 65678465bf1a..4849e46a4b81 100644
--- a/xmloff/source/text/XMLSectionFootnoteConfigImport.cxx
+++ b/xmloff/source/text/XMLSectionFootnoteConfigImport.cxx
@@ -23,6 +23,7 @@
#include <com/sun/star/uno/Reference.h>
#include <com/sun/star/xml/sax/XAttributeList.hpp>
#include <com/sun/star/style/NumberingType.hpp>
+#include <sal/log.hxx>
#include <sax/tools/converter.hxx>
#include <xmloff/xmlimp.hxx>
#include <xmloff/xmltoken.hxx>
@@ -47,11 +48,10 @@ using ::com::sun::star::xml::sax::XAttributeList;
XMLSectionFootnoteConfigImport::XMLSectionFootnoteConfigImport(
SvXMLImport& rImport,
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
+ sal_Int32 /*nElement*/,
vector<XMLPropertyState> & rProps,
const rtl::Reference<XMLPropertySetMapper> & rMapperRef) :
- SvXMLImportContext(rImport, nPrefix, rLocalName),
+ SvXMLImportContext(rImport),
rProperties(rProps),
rMapper(rMapperRef)
{
@@ -61,8 +61,9 @@ XMLSectionFootnoteConfigImport::~XMLSectionFootnoteConfigImport()
{
}
-void XMLSectionFootnoteConfigImport::StartElement(
- const Reference<XAttributeList> & xAttrList)
+void XMLSectionFootnoteConfigImport::startFastElement(
+ sal_Int32 /*nElement*/,
+ const Reference<css::xml::sax::XFastAttributeList> & xAttrList)
{
bool bNumOwn = false;
bool bNumRestart = false;
@@ -74,18 +75,13 @@ void XMLSectionFootnoteConfigImport::StartElement(
OUString sNumLetterSync;
// iterate over xattribute list and fill values
- 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 );
- OUString sAttrValue = xAttrList->getValueByIndex(nAttr);
+ OUString sAttrValue = aIter.toString();
- if (XML_NAMESPACE_TEXT == nPrefix)
+ switch(aIter.getToken())
{
- if (IsXMLToken(sLocalName, XML_START_VALUE))
+ case XML_ELEMENT(TEXT, XML_START_VALUE):
{
sal_Int32 nTmp;
if (::sax::Converter::convertNumber(nTmp, sAttrValue))
@@ -93,35 +89,40 @@ void XMLSectionFootnoteConfigImport::StartElement(
nNumRestartAt = static_cast< sal_Int16 >( nTmp ) - 1;
bNumRestart = true;
}
+ break;
}
- else if( IsXMLToken( sLocalName, XML_NOTE_CLASS ) )
+ case XML_ELEMENT(TEXT, XML_NOTE_CLASS):
{
if( IsXMLToken( sAttrValue, XML_ENDNOTE ) )
bEndnote = true;
+ break;
}
- }
- else if (XML_NAMESPACE_STYLE == nPrefix)
- {
- if (IsXMLToken(sLocalName, XML_NUM_PREFIX))
+ case XML_ELEMENT(STYLE, XML_NUM_PREFIX):
{
sNumPrefix = sAttrValue;
bNumOwn = true;
+ break;
}
- else if (IsXMLToken(sLocalName, XML_NUM_SUFFIX))
+ case XML_ELEMENT(TEXT, XML_NUM_SUFFIX):
{
sNumSuffix = sAttrValue;
bNumOwn = true;
+ break;
}
- else if (IsXMLToken(sLocalName, XML_NUM_FORMAT))
+ case XML_ELEMENT(TEXT, XML_NUM_FORMAT):
{
sNumFormat = sAttrValue;
bNumOwn = true;
+ break;
}
- else if (IsXMLToken(sLocalName, XML_NUM_LETTER_SYNC))
+ case XML_ELEMENT(TEXT, XML_NUM_LETTER_SYNC):
{
sNumLetterSync = sAttrValue;
bNumOwn = true;
+ break;
}
+ default:
+ SAL_WARN("xmloff", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << sAttrValue);
}
}
diff --git a/xmloff/source/text/XMLSectionFootnoteConfigImport.hxx b/xmloff/source/text/XMLSectionFootnoteConfigImport.hxx
index 095352536f4f..0182c0d8f571 100644
--- a/xmloff/source/text/XMLSectionFootnoteConfigImport.hxx
+++ b/xmloff/source/text/XMLSectionFootnoteConfigImport.hxx
@@ -48,15 +48,14 @@ public:
XMLSectionFootnoteConfigImport(
SvXMLImport& rImport,
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
+ sal_Int32 nElement,
::std::vector<XMLPropertyState> & rProperties,
const rtl::Reference<XMLPropertySetMapper> & rMapperRef);
virtual ~XMLSectionFootnoteConfigImport() override;
- 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 >& ) override;
};
diff --git a/xmloff/source/text/XMLTextColumnsContext.cxx b/xmloff/source/text/XMLTextColumnsContext.cxx
index a94da52f4deb..4bacea3ed965 100644
--- a/xmloff/source/text/XMLTextColumnsContext.cxx
+++ b/xmloff/source/text/XMLTextColumnsContext.cxx
@@ -25,6 +25,7 @@
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/style/VerticalAlignment.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
+#include <sal/log.hxx>
#include <sax/tools/converter.hxx>
#include <xmloff/xmltkmap.hxx>
#include <xmloff/xmluconv.hxx>
@@ -253,41 +254,37 @@ const OUStringLiteral gsAutomaticDistance(u"AutomaticDistance");
const OUStringLiteral gsSeparatorLineStyle(u"SeparatorLineStyle");
XMLTextColumnsContext::XMLTextColumnsContext(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const Reference< xml::sax::XAttributeList >&
- xAttrList,
+ SvXMLImport& rImport, sal_Int32 nElement,
+ const Reference< xml::sax::XFastAttributeList >& xAttrList,
const XMLPropertyState& rProp,
::std::vector< XMLPropertyState > &rProps )
-: XMLElementPropertyContext( rImport, nPrfx, rLName, rProp, rProps )
+: XMLElementPropertyContext( rImport, nElement, rProp, rProps )
, pColumnAttrTokenMap( new SvXMLTokenMap(aColAttrTokenMap) )
, pColumnSepAttrTokenMap( new SvXMLTokenMap(aColSepAttrTokenMap) )
, nCount( 0 )
, bAutomatic( false )
, nAutomaticDistance( 0 )
{
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
sal_Int32 nVal;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ for (auto &aIter : sax_fastparser::castToFastAttributeList(xAttrList))
{
- const OUString& rAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix =
- GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
- &aLocalName );
- const OUString& rValue = xAttrList->getValueByIndex( i );
- if( XML_NAMESPACE_FO == nPrefix )
+ const OUString sValue = aIter.toString();
+ switch(aIter.getToken())
{
- if( IsXMLToken( aLocalName, XML_COLUMN_COUNT ) &&
- ::sax::Converter::convertNumber( nVal, rValue, 0, SHRT_MAX ))
- {
- nCount = static_cast<sal_Int16>(nVal);
- }
- else if( IsXMLToken( aLocalName, XML_COLUMN_GAP ) )
+ case XML_ELEMENT(FO, XML_COLUMN_COUNT):
+ case XML_ELEMENT(FO_COMPAT, XML_COLUMN_COUNT):
+ if(::sax::Converter::convertNumber( nVal, sValue, 0, SHRT_MAX ))
+ nCount = static_cast<sal_Int16>(nVal);
+ break;
+ case XML_ELEMENT(FO, XML_COLUMN_GAP):
+ case XML_ELEMENT(FO_COMPAT, XML_COLUMN_GAP):
{
bAutomatic = GetImport().GetMM100UnitConverter().
- convertMeasureToCore( nAutomaticDistance, rValue );
+ convertMeasureToCore( nAutomaticDistance, sValue );
+ break;
}
+ default:
+ SAL_WARN("xmloff", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << sValue);
}
}
}
@@ -327,7 +324,7 @@ SvXMLImportContextRef XMLTextColumnsContext::CreateChildContext(
return pContext;
}
-void XMLTextColumnsContext::EndElement( )
+void XMLTextColumnsContext::endFastElement(sal_Int32 nElement )
{
Reference<XMultiServiceFactory> xFactory(GetImport().GetModel(),UNO_QUERY);
if( !xFactory.is() )
@@ -436,7 +433,7 @@ void XMLTextColumnsContext::EndElement( )
aProp.maValue <<= xColumns;
SetInsert( true );
- XMLElementPropertyContext::EndElement();
+ XMLElementPropertyContext::endFastElement(nElement);
}
diff --git a/xmloff/source/text/XMLTextPropertySetContext.cxx b/xmloff/source/text/XMLTextPropertySetContext.cxx
index e0d03481c315..2dc3af0eaa3f 100644
--- a/xmloff/source/text/XMLTextPropertySetContext.cxx
+++ b/xmloff/source/text/XMLTextPropertySetContext.cxx
@@ -32,20 +32,6 @@
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star;
-XMLTextPropertySetContext::XMLTextPropertySetContext(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const Reference< xml::sax::XAttributeList > & xAttrList,
- sal_uInt32 nFamily,
- ::std::vector< XMLPropertyState > &rProps,
- const rtl::Reference < SvXMLImportPropertyMapper > &rMap,
- OUString& rDCTextStyleName ) :
- SvXMLPropertySetContext( rImport, nPrfx, rLName, xAttrList, nFamily,
- rProps, rMap ),
- rDropCapTextStyleName( rDCTextStyleName )
-{
-}
-
XMLTextPropertySetContext::XMLTextPropertySetContext(
SvXMLImport& rImport, sal_Int32 nElement,
const Reference< xml::sax::XFastAttributeList > & xAttrList,
@@ -63,12 +49,11 @@ XMLTextPropertySetContext::~XMLTextPropertySetContext()
{
}
-SvXMLImportContextRef XMLTextPropertySetContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const Reference< xml::sax::XAttributeList > & xAttrList,
- ::std::vector< XMLPropertyState > &rProperties,
- const XMLPropertyState& rProp )
+css::uno::Reference< css::xml::sax::XFastContextHandler > XMLTextPropertySetContext::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
+ ::std::vector< XMLPropertyState > &rProperties,
+ const XMLPropertyState& rProp )
{
SvXMLImportContextRef xContext;
@@ -76,13 +61,13 @@ SvXMLImportContextRef XMLTextPropertySetContext::CreateChildContext(
->GetEntryContextId( rProp.mnIndex ) )
{
case CTF_TABSTOP:
- xContext = new SvxXMLTabStopImportContext( GetImport(), nPrefix,
- rLocalName, rProp,
+ return new SvxXMLTabStopImportContext( GetImport(), nElement,
+ rProp,
rProperties );
break;
case CTF_TEXTCOLUMNS:
- xContext = new XMLTextColumnsContext( GetImport(), nPrefix,
- rLocalName, xAttrList, rProp,
+ return new XMLTextColumnsContext( GetImport(), nElement,
+ xAttrList, rProp,
rProperties );
break;
@@ -93,13 +78,13 @@ SvXMLImportContextRef XMLTextPropertySetContext::CreateChildContext(
->GetEntryContextId( rProp.mnIndex-2 ),
"invalid property map!");
XMLTextDropCapImportContext *pDCContext =
- new XMLTextDropCapImportContext( GetImport(), nPrefix,
- rLocalName, xAttrList,
+ new XMLTextDropCapImportContext( GetImport(), nElement,
+ xAttrList,
rProp,
rProp.mnIndex-2,
rProperties );
rDropCapTextStyleName = pDCContext->GetStyleName();
- xContext = pDCContext;
+ return pDCContext;
}
break;
@@ -121,9 +106,9 @@ SvXMLImportContextRef XMLTextPropertySetContext::CreateChildContext(
rProp.mnIndex-3 ) ) )
nTranspIndex = rProp.mnIndex-3;
- xContext =
- new XMLBackgroundImageContext( GetImport(), nPrefix,
- rLocalName, xAttrList,
+ return
+ new XMLBackgroundImageContext( GetImport(), nElement,
+ xAttrList,
rProp,
rProp.mnIndex-2,
rProp.mnIndex-1,
@@ -134,18 +119,15 @@ SvXMLImportContextRef XMLTextPropertySetContext::CreateChildContext(
break;
case CTF_SECTION_FOOTNOTE_END:
case CTF_SECTION_ENDNOTE_END:
- xContext = new XMLSectionFootnoteConfigImport(
- GetImport(), nPrefix, rLocalName, rProperties,
+ return new XMLSectionFootnoteConfigImport(
+ GetImport(), nElement, rProperties,
mxMapper->getPropertySetMapper());
break;
}
- if (!xContext)
- xContext = SvXMLPropertySetContext::CreateChildContext( nPrefix, rLocalName,
+ return SvXMLPropertySetContext::createFastChildContext( nElement,
xAttrList,
rProperties, rProp );
-
- return xContext;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmloff/source/text/XMLTextPropertySetContext.hxx b/xmloff/source/text/XMLTextPropertySetContext.hxx
index f53b6bd7521f..33159f3b319f 100644
--- a/xmloff/source/text/XMLTextPropertySetContext.hxx
+++ b/xmloff/source/text/XMLTextPropertySetContext.hxx
@@ -31,14 +31,6 @@ class XMLTextPropertySetContext : public SvXMLPropertySetContext
OUString& rDropCapTextStyleName;
public:
- XMLTextPropertySetContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference<css::xml::sax::XAttributeList >& xAttrList,
- sal_uInt32 nFamily,
- ::std::vector< XMLPropertyState > &rProps,
- const rtl::Reference < SvXMLImportPropertyMapper > &rMap,
- OUString& rDopCapTextStyleName );
-
XMLTextPropertySetContext( SvXMLImport& rImport, sal_Int32 nElement,
const css::uno::Reference<css::xml::sax::XFastAttributeList >& xAttrList,
sal_uInt32 nFamily,
@@ -48,12 +40,12 @@ public:
virtual ~XMLTextPropertySetContext() override;
- using SvXMLPropertySetContext::CreateChildContext;
- virtual SvXMLImportContextRef CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList,
- ::std::vector< XMLPropertyState > &rProperties,
- const XMLPropertyState& rProp) override;
+ using SvXMLPropertySetContext::createFastChildContext;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
+ ::std::vector< XMLPropertyState > &rProperties,
+ const XMLPropertyState& rProp ) override;
};
diff --git a/xmloff/source/text/XMLTextShapeStyleContext.cxx b/xmloff/source/text/XMLTextShapeStyleContext.cxx
index 72660d060156..cf43c0452e31 100644
--- a/xmloff/source/text/XMLTextShapeStyleContext.cxx
+++ b/xmloff/source/text/XMLTextShapeStyleContext.cxx
@@ -53,12 +53,12 @@ public:
::std::vector< XMLPropertyState > &rProps,
const rtl::Reference < SvXMLImportPropertyMapper > &rMap );
- using SvXMLPropertySetContext::CreateChildContext;
- virtual SvXMLImportContextRef CreateChildContext( sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const Reference< XAttributeList >& xAttrList,
+ using SvXMLPropertySetContext::createFastChildContext;
+ virtual css::uno::Reference< css::xml::sax::XFastContextHandler > createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
::std::vector< XMLPropertyState > &rProperties,
- const XMLPropertyState& rProp) override;
+ const XMLPropertyState& rProp ) override;
};
}
@@ -74,12 +74,11 @@ XMLTextShapePropertySetContext_Impl::XMLTextShapePropertySetContext_Impl(
{
}
-SvXMLImportContextRef XMLTextShapePropertySetContext_Impl::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const Reference< XAttributeList > & xAttrList,
- ::std::vector< XMLPropertyState > &rProperties,
- const XMLPropertyState& rProp )
+css::uno::Reference< css::xml::sax::XFastContextHandler > XMLTextShapePropertySetContext_Impl::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList,
+ ::std::vector< XMLPropertyState > &rProperties,
+ const XMLPropertyState& rProp )
{
SvXMLImportContextRef xContext;
@@ -87,8 +86,8 @@ SvXMLImportContextRef XMLTextShapePropertySetContext_Impl::CreateChildContext(
->GetEntryContextId( rProp.mnIndex ) )
{
case CTF_TEXTCOLUMNS:
- xContext = new XMLTextColumnsContext( GetImport(), nPrefix,
- rLocalName, xAttrList, rProp,
+ return new XMLTextColumnsContext( GetImport(), nElement,
+ xAttrList, rProp,
rProperties );
break;
@@ -102,9 +101,9 @@ SvXMLImportContextRef XMLTextShapePropertySetContext_Impl::CreateChildContext(
CTF_BACKGROUND_FILTER == mxMapper->getPropertySetMapper()
->GetEntryContextId( rProp.mnIndex-1 ),
"invalid property map!");
- xContext =
- new XMLBackgroundImageContext( GetImport(), nPrefix,
- rLocalName, xAttrList,
+ return
+ new XMLBackgroundImageContext( GetImport(), nElement,
+ xAttrList,
rProp,
rProp.mnIndex-2,
rProp.mnIndex-1,
@@ -114,11 +113,8 @@ SvXMLImportContextRef XMLTextShapePropertySetContext_Impl::CreateChildContext(
break;
}
- if (!xContext)
- xContext = XMLShapePropertySetContext::CreateChildContext(
- nPrefix, rLocalName, xAttrList, rProperties, rProp );
-
- return xContext;
+ return XMLShapePropertySetContext::createFastChildContext(
+ nElement, xAttrList, rProperties, rProp );
}
void XMLTextShapeStyleContext::SetAttribute( sal_uInt16 nPrefixKey,
diff --git a/xmloff/source/text/txtdropi.cxx b/xmloff/source/text/txtdropi.cxx
index e68e276975bb..dc58e2cbbaa7 100644
--- a/xmloff/source/text/txtdropi.cxx
+++ b/xmloff/source/text/txtdropi.cxx
@@ -22,6 +22,7 @@
#include <com/sun/star/style/DropCapFormat.hpp>
+#include <sal/log.hxx>
#include <sax/tools/converter.hxx>
#include <xmloff/xmltkmap.hxx>
@@ -59,7 +60,7 @@ const SvXMLTokenMapEntry aDropAttrTokenMap[] =
};
void XMLTextDropCapImportContext::ProcessAttrs(
- const Reference< xml::sax::XAttributeList >& xAttrList )
+ const Reference< xml::sax::XFastAttributeList >& xAttrList )
{
static const SvXMLTokenMap aTokenMap( aDropAttrTokenMap );
@@ -67,48 +68,45 @@ void XMLTextDropCapImportContext::ProcessAttrs(
bool bWholeWord = false;
sal_Int32 nTmp;
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
+ for (auto &aIter : sax_fastparser::castToFastAttributeList(xAttrList))
{
- const OUString& rAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefix =
- GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName,
- &aLocalName );
- const OUString& rValue = xAttrList->getValueByIndex( i );
-
- switch( aTokenMap.Get( nPrefix, aLocalName ) )
+ const OUString sValue = aIter.toString();
+
+ switch( aIter.getToken() )
{
- case XML_TOK_DROP_LINES:
- if (::sax::Converter::convertNumber( nTmp, rValue, 0, 255 ))
+ case XML_ELEMENT(STYLE, XML_LINES):
+ if (::sax::Converter::convertNumber( nTmp, sValue, 0, 255 ))
{
aFormat.Lines = nTmp < 2 ? 0 : static_cast<sal_Int8>(nTmp);
}
break;
- case XML_TOK_DROP_LENGTH:
- if( IsXMLToken( rValue, XML_WORD ) )
+ case XML_ELEMENT(STYLE, XML_LENGTH):
+ if( IsXMLToken( sValue, XML_WORD ) )
{
bWholeWord = true;
}
- else if (::sax::Converter::convertNumber( nTmp, rValue, 1, 255 ))
+ else if (::sax::Converter::convertNumber( nTmp, sValue, 1, 255 ))
{
bWholeWord = false;
aFormat.Count = static_cast<sal_Int8>(nTmp);
}
break;
- case XML_TOK_DROP_DISTANCE:
+ case XML_ELEMENT(STYLE, XML_DISTANCE):
if (GetImport().GetMM100UnitConverter().convertMeasureToCore(
- nTmp, rValue, 0 ))
+ nTmp, sValue, 0 ))
{
aFormat.Distance = static_cast<sal_uInt16>(nTmp);
}
break;
- case XML_TOK_DROP_STYLE:
- sStyleName = rValue;
+ case XML_ELEMENT(STYLE, XML_STYLE_NAME):
+ sStyleName = sValue;
break;
+
+ default:
+ SAL_WARN("xmloff", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << sValue);
}
}
@@ -121,13 +119,12 @@ void XMLTextDropCapImportContext::ProcessAttrs(
}
XMLTextDropCapImportContext::XMLTextDropCapImportContext(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const Reference< xml::sax::XAttributeList > & xAttrList,
+ SvXMLImport& rImport, sal_Int32 nElement,
+ const Reference< xml::sax::XFastAttributeList > & xAttrList,
const XMLPropertyState& rProp,
sal_Int32 nWholeWordIdx,
::std::vector< XMLPropertyState > &rProps ) :
- XMLElementPropertyContext( rImport, nPrfx, rLName, rProp, rProps ),
+ XMLElementPropertyContext( rImport, nElement, rProp, rProps ),
aWholeWordProp( nWholeWordIdx )
{
ProcessAttrs( xAttrList );
@@ -137,10 +134,10 @@ XMLTextDropCapImportContext::~XMLTextDropCapImportContext()
{
}
-void XMLTextDropCapImportContext::EndElement()
+void XMLTextDropCapImportContext::endFastElement(sal_Int32 nElement)
{
SetInsert( true );
- XMLElementPropertyContext::EndElement();
+ XMLElementPropertyContext::endFastElement(nElement);
if( -1 != aWholeWordProp.mnIndex )
rProperties.push_back( aWholeWordProp );
diff --git a/xmloff/source/text/txtdropi.hxx b/xmloff/source/text/txtdropi.hxx
index f2f0f9228e50..c15d83dc95a9 100644
--- a/xmloff/source/text/txtdropi.hxx
+++ b/xmloff/source/text/txtdropi.hxx
@@ -30,21 +30,22 @@ class XMLTextDropCapImportContext :public XMLElementPropertyContext
private:
void ProcessAttrs(
- const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList );
+ const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList );
public:
XMLTextDropCapImportContext(
- SvXMLImport& rImport, sal_uInt16 nPrfx,
- const OUString& rLName,
- const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList,
+ SvXMLImport& rImport, sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList > & xAttrList,
const XMLPropertyState& rProp,
sal_Int32 nWholeWOrdIdx,
::std::vector< XMLPropertyState > &rProps );
virtual ~XMLTextDropCapImportContext() override;
- virtual void EndElement() override;
+ virtual void SAL_CALL startFastElement( sal_Int32 /*nElement*/,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) override {}
+ virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
const OUString& GetStyleName() const { return sStyleName; }
};
More information about the Libreoffice-commits
mailing list