summaryrefslogtreecommitdiff
path: root/xmloff
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2020-11-18 20:46:19 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-11-19 14:00:50 +0100
commit85c02385564f42dcaad270e8123fc3109b9ebbba (patch)
treebd2288e01c205df90a8b71dbfa2c2e0e5055a14a /xmloff
parentbb124fe673d69f8a79478bf25329978a452b82da (diff)
fastparser in SchXMLTableContext
Change-Id: I6cccd109218a9f3adea311df86408ee1d1fe332f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106076 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'xmloff')
-rw-r--r--xmloff/source/chart/SchXMLTableContext.cxx141
-rw-r--r--xmloff/source/chart/SchXMLTableContext.hxx40
-rw-r--r--xmloff/source/chart/SchXMLTextListContext.cxx3
-rw-r--r--xmloff/source/chart/SchXMLTextListContext.hxx1
4 files changed, 80 insertions, 105 deletions
diff --git a/xmloff/source/chart/SchXMLTableContext.cxx b/xmloff/source/chart/SchXMLTableContext.cxx
index a6119fae5eb2..1c2b912a7717 100644
--- a/xmloff/source/chart/SchXMLTableContext.cxx
+++ b/xmloff/source/chart/SchXMLTableContext.cxx
@@ -214,37 +214,37 @@ SchXMLTableContext::~SchXMLTableContext()
{
}
-SvXMLImportContextRef SchXMLTableContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList >& )
+css::uno::Reference< css::xml::sax::XFastContextHandler > SchXMLTableContext::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& )
{
SvXMLImportContext* pContext = nullptr;
- const SvXMLTokenMap& rTokenMap = mrImportHelper.GetTableElemTokenMap();
- switch( rTokenMap.Get( nPrefix, rLocalName ))
+ switch(nElement)
{
- case XML_TOK_TABLE_HEADER_COLS:
+ case XML_ELEMENT(TABLE, XML_TABLE_HEADER_COLUMNS):
mrTable.bHasHeaderColumn = true;
[[fallthrough]];
- case XML_TOK_TABLE_COLUMNS:
- pContext = new SchXMLTableColumnsContext( GetImport(), rLocalName, mrTable );
+ case XML_ELEMENT(TABLE, XML_TABLE_COLUMNS):
+ pContext = new SchXMLTableColumnsContext( GetImport(), mrTable );
break;
- case XML_TOK_TABLE_COLUMN:
- pContext = new SchXMLTableColumnContext( GetImport(), rLocalName, mrTable );
+ case XML_ELEMENT(TABLE, XML_TABLE_COLUMN):
+ pContext = new SchXMLTableColumnContext( GetImport(), mrTable );
break;
- case XML_TOK_TABLE_HEADER_ROWS:
+ case XML_ELEMENT(TABLE, XML_TABLE_HEADER_ROWS):
mrTable.bHasHeaderRow = true;
[[fallthrough]];
- case XML_TOK_TABLE_ROWS:
- pContext = new SchXMLTableRowsContext( mrImportHelper, GetImport(), rLocalName, mrTable );
+ case XML_ELEMENT(TABLE, XML_TABLE_ROWS):
+ pContext = new SchXMLTableRowsContext( mrImportHelper, GetImport(), mrTable );
break;
- case XML_TOK_TABLE_ROW:
- pContext = new SchXMLTableRowContext( mrImportHelper, GetImport(), rLocalName, mrTable );
+ case XML_ELEMENT(TABLE, XML_TABLE_ROW):
+ pContext = new SchXMLTableRowContext( mrImportHelper, GetImport(), mrTable );
break;
+ default:
+ XMLOFF_WARN_UNKNOWN_ELEMENT("xmloff", nElement);
}
return pContext;
@@ -386,9 +386,8 @@ void SchXMLTableContext::setColumnPermutation( const uno::Sequence< sal_Int32 >
// class SchXMLTableColumnsContext
SchXMLTableColumnsContext::SchXMLTableColumnsContext(
SvXMLImport& rImport,
- const OUString& rLocalName,
SchXMLTable& aTable ) :
- SvXMLImportContext( rImport, XML_NAMESPACE_TABLE, rLocalName ),
+ SvXMLImportContext( rImport ),
mrTable( aTable )
{
}
@@ -397,18 +396,16 @@ SchXMLTableColumnsContext::~SchXMLTableColumnsContext()
{
}
-SvXMLImportContextRef SchXMLTableColumnsContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList >& )
+css::uno::Reference< css::xml::sax::XFastContextHandler > SchXMLTableColumnsContext::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& )
{
SvXMLImportContext* pContext = nullptr;
- if( nPrefix == XML_NAMESPACE_TABLE &&
- IsXMLToken( rLocalName, XML_TABLE_COLUMN ) )
- {
- pContext = new SchXMLTableColumnContext( GetImport(), rLocalName, mrTable );
- }
+ if( nElement == XML_ELEMENT(TABLE, XML_TABLE_COLUMN) )
+ pContext = new SchXMLTableColumnContext( GetImport(), mrTable );
+ else
+ XMLOFF_WARN_UNKNOWN_ELEMENT("xmloff", nElement);
return pContext;
}
@@ -416,9 +413,8 @@ SvXMLImportContextRef SchXMLTableColumnsContext::CreateChildContext(
// class SchXMLTableColumnContext
SchXMLTableColumnContext::SchXMLTableColumnContext(
SvXMLImport& rImport,
- const OUString& rLocalName,
SchXMLTable& aTable ) :
- SvXMLImportContext( rImport, XML_NAMESPACE_TABLE, rLocalName ),
+ SvXMLImportContext( rImport ),
mrTable( aTable )
{
}
@@ -477,9 +473,8 @@ SchXMLTableColumnContext::~SchXMLTableColumnContext()
SchXMLTableRowsContext::SchXMLTableRowsContext(
SchXMLImportHelper& rImpHelper,
SvXMLImport& rImport,
- const OUString& rLocalName,
SchXMLTable& aTable ) :
- SvXMLImportContext( rImport, XML_NAMESPACE_TABLE, rLocalName ),
+ SvXMLImportContext( rImport ),
mrImportHelper( rImpHelper ),
mrTable( aTable )
{
@@ -489,18 +484,16 @@ SchXMLTableRowsContext::~SchXMLTableRowsContext()
{
}
-SvXMLImportContextRef SchXMLTableRowsContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList >& )
+css::uno::Reference< css::xml::sax::XFastContextHandler > SchXMLTableRowsContext::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& )
{
SvXMLImportContext* pContext = nullptr;
- if( nPrefix == XML_NAMESPACE_TABLE &&
- IsXMLToken( rLocalName, XML_TABLE_ROW ) )
- {
- pContext = new SchXMLTableRowContext( mrImportHelper, GetImport(), rLocalName, mrTable );
- }
+ if( nElement == XML_ELEMENT(TABLE, XML_TABLE_ROW) )
+ pContext = new SchXMLTableRowContext( mrImportHelper, GetImport(), mrTable );
+ else
+ XMLOFF_WARN_UNKNOWN_ELEMENT("xmloff", nElement);
return pContext;
}
@@ -509,9 +502,8 @@ SvXMLImportContextRef SchXMLTableRowsContext::CreateChildContext(
SchXMLTableRowContext::SchXMLTableRowContext(
SchXMLImportHelper& rImpHelper,
SvXMLImport& rImport,
- const OUString& rLocalName,
SchXMLTable& aTable ) :
- SvXMLImportContext( rImport, XML_NAMESPACE_TABLE, rLocalName ),
+ SvXMLImportContext( rImport ),
mrImportHelper( rImpHelper ),
mrTable( aTable )
{
@@ -528,21 +520,20 @@ SchXMLTableRowContext::~SchXMLTableRowContext()
{
}
-SvXMLImportContextRef SchXMLTableRowContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList >& )
+css::uno::Reference< css::xml::sax::XFastContextHandler > SchXMLTableRowContext::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& )
{
SvXMLImportContext* pContext = nullptr;
// <table:table-cell> element
- if( nPrefix == XML_NAMESPACE_TABLE &&
- IsXMLToken(rLocalName, XML_TABLE_CELL ) )
+ if( nElement == XML_ELEMENT(TABLE, XML_TABLE_CELL) )
{
- pContext = new SchXMLTableCellContext( mrImportHelper, GetImport(), rLocalName, mrTable );
+ pContext = new SchXMLTableCellContext( mrImportHelper, GetImport(), mrTable );
}
else
{
+ XMLOFF_WARN_UNKNOWN_ELEMENT("xmloff", nElement);
assert(false);
}
@@ -564,14 +555,11 @@ private:
public:
SchXMLRangeSomewhereContext( SvXMLImport& rImport,
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
OUString& rRangeString );
- 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 SAL_CALL endFastElement(sal_Int32 nElement) override;
};
@@ -581,8 +569,8 @@ public:
// class SchXMLTableCellContext
SchXMLTableCellContext::SchXMLTableCellContext(
SchXMLImportHelper& rImpHelper, SvXMLImport& rImport,
- const OUString& rLocalName, SchXMLTable& aTable)
- : SvXMLImportContext(rImport, XML_NAMESPACE_TABLE, rLocalName)
+ SchXMLTable& aTable)
+ : SvXMLImportContext(rImport)
, mrImportHelper(rImpHelper)
, mrTable(aTable)
, mbReadText(false)
@@ -644,35 +632,36 @@ void SchXMLTableCellContext::StartElement( const uno::Reference< xml::sax::XAttr
mrTable.nMaxColumnIndex = mrTable.nColumnIndex;
}
-SvXMLImportContextRef SchXMLTableCellContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList >& )
+css::uno::Reference< css::xml::sax::XFastContextHandler > SchXMLTableCellContext::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& )
{
SvXMLImportContext* pContext = nullptr;
// <text:list> element
- if( nPrefix == XML_NAMESPACE_TEXT && IsXMLToken( rLocalName, XML_LIST ) && mbReadText )
+ if( nElement == XML_ELEMENT(TEXT, XML_LIST ) && mbReadText )
{
SchXMLCell& rCell = mrTable.aData[ mrTable.nRowIndex ][ mrTable.nColumnIndex ];
rCell.aComplexString = Sequence< OUString >();
rCell.eType = SCH_CELL_TYPE_COMPLEX_STRING;
- pContext = new SchXMLTextListContext( GetImport(), rLocalName, rCell.aComplexString );
+ pContext = new SchXMLTextListContext( GetImport(), rCell.aComplexString );
mbReadText = false;//don't apply text from <text:p>
}
// <text:p> element - read text (and range from text:id old version)
- else if( (nPrefix == XML_NAMESPACE_TEXT ||
- nPrefix == XML_NAMESPACE_LO_EXT) && IsXMLToken( rLocalName, XML_P ) )
+ else if( nElement == XML_ELEMENT(TEXT, XML_P) ||
+ nElement == XML_ELEMENT(LO_EXT, XML_P) )
{
pContext = new SchXMLParagraphContext( GetImport(), maCellContent, &maRangeId );
}
// <draw:g> element - read range
- else if( nPrefix == XML_NAMESPACE_DRAW && IsXMLToken( rLocalName, XML_G ) )
+ else if( nElement == XML_ELEMENT(DRAW, XML_G) )
{
//#i113950# previously the range was exported to attribute text:id, but that attribute does not allow arbitrary strings anymore
//so we need to find an alternative to save that range info for copy/paste scenario ... -> use description at an empty group element for now
- pContext = new SchXMLRangeSomewhereContext( GetImport(), nPrefix, rLocalName, maRangeId );
+ pContext = new SchXMLRangeSomewhereContext( GetImport(), maRangeId );
}
+ else
+ XMLOFF_WARN_UNKNOWN_ELEMENT("xmloff", nElement);
return pContext;
}
@@ -1044,24 +1033,22 @@ void SchXMLTableHelper::switchRangesFromOuterToInternalIfNecessary(
}
SchXMLRangeSomewhereContext::SchXMLRangeSomewhereContext( SvXMLImport& rImport,
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
OUString& rRangeString ) :
- SvXMLImportContext( rImport, nPrefix, rLocalName ),
+ SvXMLImportContext( rImport ),
mrRangeString( rRangeString )
{
}
-SvXMLImportContextRef SchXMLRangeSomewhereContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList >& )
+css::uno::Reference< css::xml::sax::XFastContextHandler > SchXMLRangeSomewhereContext::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& )
{
- if( XML_NAMESPACE_SVG == nPrefix && IsXMLToken( rLocalName, XML_DESC ) )
+ if( nElement == XML_ELEMENT(SVG, XML_DESC) )
{
- return new XMLStringBufferImportContext(
- GetImport(), nPrefix, rLocalName, maRangeStringBuffer );
+ return new XMLStringBufferImportContext( GetImport(), maRangeStringBuffer );
}
+ else
+ XMLOFF_WARN_UNKNOWN_ELEMENT("xmloff", nElement);
return nullptr;
}
diff --git a/xmloff/source/chart/SchXMLTableContext.hxx b/xmloff/source/chart/SchXMLTableContext.hxx
index e9d2eb004387..179a071f3046 100644
--- a/xmloff/source/chart/SchXMLTableContext.hxx
+++ b/xmloff/source/chart/SchXMLTableContext.hxx
@@ -53,10 +53,9 @@ public:
SchXMLTable& aTable );
virtual ~SchXMLTableContext() 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;
virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
@@ -93,14 +92,12 @@ private:
public:
SchXMLTableColumnsContext( SvXMLImport& rImport,
- const OUString& rLocalName,
SchXMLTable& aTable );
virtual ~SchXMLTableColumnsContext() 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;
};
class SchXMLTableColumnContext : public SvXMLImportContext
@@ -110,7 +107,6 @@ private:
public:
SchXMLTableColumnContext( SvXMLImport& rImport,
- const OUString& rLocalName,
SchXMLTable& aTable );
virtual ~SchXMLTableColumnContext() override;
virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
@@ -127,14 +123,12 @@ private:
public:
SchXMLTableRowsContext( SchXMLImportHelper& rImpHelper,
SvXMLImport& rImport,
- const OUString& rLocalName,
SchXMLTable& aTable );
virtual ~SchXMLTableRowsContext() 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;
};
class SchXMLTableRowContext : public SvXMLImportContext
@@ -146,14 +140,12 @@ private:
public:
SchXMLTableRowContext( SchXMLImportHelper& rImpHelper,
SvXMLImport& rImport,
- const OUString& rLocalName,
SchXMLTable& aTable );
virtual ~SchXMLTableRowContext() 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;
};
// classes for cells and their content
@@ -170,14 +162,12 @@ private:
public:
SchXMLTableCellContext( SchXMLImportHelper& rImpHelper,
SvXMLImport& rImport,
- const OUString& rLocalName,
SchXMLTable& aTable );
virtual ~SchXMLTableCellContext() 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;
virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
};
diff --git a/xmloff/source/chart/SchXMLTextListContext.cxx b/xmloff/source/chart/SchXMLTextListContext.cxx
index b49964726e72..29c2321e1196 100644
--- a/xmloff/source/chart/SchXMLTextListContext.cxx
+++ b/xmloff/source/chart/SchXMLTextListContext.cxx
@@ -68,9 +68,8 @@ SvXMLImportContextRef SchXMLListItemContext::CreateChildContext(
SchXMLTextListContext::SchXMLTextListContext(
SvXMLImport& rImport
- , const OUString& rLocalName
, Sequence< OUString>& rTextList )
- : SvXMLImportContext( rImport, XML_NAMESPACE_TEXT, rLocalName )
+ : SvXMLImportContext( rImport )
, m_rTextList( rTextList )
, m_aTextVector()
{
diff --git a/xmloff/source/chart/SchXMLTextListContext.hxx b/xmloff/source/chart/SchXMLTextListContext.hxx
index 05893eb6c415..90ebd17bb9cc 100644
--- a/xmloff/source/chart/SchXMLTextListContext.hxx
+++ b/xmloff/source/chart/SchXMLTextListContext.hxx
@@ -31,7 +31,6 @@ class SchXMLTextListContext : public SvXMLImportContext
{
public:
SchXMLTextListContext( SvXMLImport& rImport,
- const OUString& rLocalName,
css::uno::Sequence< OUString>& rTextList );
virtual ~SchXMLTextListContext() override;
virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;