Using fast tokens directly:

Replacing integer-to-integer mapped tokens with
fast Tokens direcly for branching.
Adding a macro XML_ELEMENT that combines namespace
and element tokens.

Change-Id: I8701c8af9607392843460fe726bffb6556cf9b33
Reviewed-on: https://gerrit.libreoffice.org/39275
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
This commit is contained in:
Mohammed Abdul Azeem
2017-06-27 00:46:25 +05:30
committed by Michael Meeks
parent d109948f0d
commit c44d9f9e62
11 changed files with 75 additions and 83 deletions

View File

@@ -64,6 +64,7 @@
#include <memory> #include <memory>
#define NAMESPACE_TOKEN( prefixToken ) ( ( sal_Int32( prefixToken + 1 ) ) << NMSP_SHIFT ) #define NAMESPACE_TOKEN( prefixToken ) ( ( sal_Int32( prefixToken + 1 ) ) << NMSP_SHIFT )
#define XML_ELEMENT( prefix, name ) ( NAMESPACE_TOKEN( XML_NAMESPACE_##prefix ) | name )
const size_t NMSP_SHIFT = 16; const size_t NMSP_SHIFT = 16;
const sal_Int32 TOKEN_MASK = 0xffff; const sal_Int32 TOKEN_MASK = 0xffff;

View File

@@ -111,8 +111,7 @@ ScXMLBodyContext::ScXMLBodyContext( ScXMLImport& rImport,
else if ( nLocalToken == XML_PROTECTION_KEY_DIGEST_ALGORITHM_2 ) else if ( nLocalToken == XML_PROTECTION_KEY_DIGEST_ALGORITHM_2 )
meHash2 = ScPassHashHelper::getHashTypeFromURI( it.toString() ); meHash2 = ScPassHashHelper::getHashTypeFromURI( it.toString() );
} }
else if ( nToken == ( NAMESPACE_TOKEN( XML_NAMESPACE_LO_EXT ) | else if ( nToken == XML_ELEMENT( LO_EXT, XML_PROTECTION_KEY_DIGEST_ALGORITHM_2 ) )
XML_PROTECTION_KEY_DIGEST_ALGORITHM_2 ) )
{ {
meHash2 = ScPassHashHelper::getHashTypeFromURI( it.toString() ); meHash2 = ScPassHashHelper::getHashTypeFromURI( it.toString() );
} }
@@ -205,10 +204,9 @@ uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
SvXMLImportContext *pContext = nullptr; SvXMLImportContext *pContext = nullptr;
const SvXMLTokenMap& rTokenMap = GetScImport().GetBodyElemTokenMap(); switch( nElement )
switch( rTokenMap.Get( nElement ) )
{ {
case XML_TOK_BODY_TABLE: case XML_ELEMENT( TABLE, XML_TABLE ):
if (GetScImport().GetTables().GetCurrentSheet() >= MAXTAB) if (GetScImport().GetTables().GetCurrentSheet() >= MAXTAB)
{ {
GetScImport().SetRangeOverflowType(SCWARN_IMPORT_SHEET_OVERFLOW); GetScImport().SetRangeOverflowType(SCWARN_IMPORT_SHEET_OVERFLOW);

View File

@@ -158,7 +158,6 @@ ScXMLTableRowCellContext::ScXMLTableRowCellContext( ScXMLImport& rImport,
std::unique_ptr<OUString> xStyleName; std::unique_ptr<OUString> xStyleName;
std::unique_ptr<OUString> xCurrencySymbol; std::unique_ptr<OUString> xCurrencySymbol;
const SvXMLTokenMap& rTokenMap = rImport.GetTableRowCellAttrTokenMap();
if( xAttrList.is() ) if( xAttrList.is() )
{ {
sax_fastparser::FastAttributeList *pAttribList; sax_fastparser::FastAttributeList *pAttribList;
@@ -167,43 +166,42 @@ ScXMLTableRowCellContext::ScXMLTableRowCellContext( ScXMLImport& rImport,
for ( auto it = pAttribList->begin(); it != pAttribList->end(); ++it) for ( auto it = pAttribList->begin(); it != pAttribList->end(); ++it)
{ {
sal_uInt16 nToken = rTokenMap.Get( it.getToken() ); switch ( it.getToken() )
switch ( nToken )
{ {
case XML_TOK_TABLE_ROW_CELL_ATTR_STYLE_NAME: case XML_ELEMENT( TABLE, XML_STYLE_NAME ):
xStyleName.reset( new OUString( it.toString() ) ); xStyleName.reset( new OUString( it.toString() ) );
mbHasStyle = true; mbHasStyle = true;
break; break;
case XML_TOK_TABLE_ROW_CELL_ATTR_CONTENT_VALIDATION_NAME: case XML_ELEMENT( TABLE, XML_CONTENT_VALIDATION_NAME ):
OSL_ENSURE(!maContentValidationName, "here should be only one Validation Name"); OSL_ENSURE(!maContentValidationName, "here should be only one Validation Name");
if (!it.isEmpty()) if (!it.isEmpty())
maContentValidationName.reset(it.toString()); maContentValidationName.reset(it.toString());
break; break;
case XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_ROWS: case XML_ELEMENT( TABLE, XML_NUMBER_ROWS_SPANNED ):
bIsMerged = true; bIsMerged = true;
nMergedRows = static_cast<SCROW>(it.toInt32()); nMergedRows = static_cast<SCROW>(it.toInt32());
break; break;
case XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_COLS: case XML_ELEMENT( TABLE, XML_NUMBER_COLUMNS_SPANNED ):
bIsMerged = true; bIsMerged = true;
nMergedCols = static_cast<SCCOL>(it.toInt32()); nMergedCols = static_cast<SCCOL>(it.toInt32());
break; break;
case XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_MATRIX_COLS: case XML_ELEMENT( TABLE, XML_NUMBER_MATRIX_COLUMNS_SPANNED ):
bIsMatrix = true; bIsMatrix = true;
nMatrixCols = static_cast<SCCOL>(it.toInt32()); nMatrixCols = static_cast<SCCOL>(it.toInt32());
break; break;
case XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_MATRIX_ROWS: case XML_ELEMENT( TABLE, XML_NUMBER_MATRIX_ROWS_SPANNED ):
bIsMatrix = true; bIsMatrix = true;
nMatrixRows = static_cast<SCROW>(it.toInt32()); nMatrixRows = static_cast<SCROW>(it.toInt32());
break; break;
case XML_TOK_TABLE_ROW_CELL_ATTR_REPEATED: case XML_ELEMENT( TABLE, XML_NUMBER_COLUMNS_REPEATED ):
nColsRepeated = static_cast<SCCOL>(std::min<sal_Int32>( MAXCOLCOUNT, nColsRepeated = static_cast<SCCOL>(std::min<sal_Int32>( MAXCOLCOUNT,
std::max( it.toInt32(), static_cast<sal_Int32>(1) ) )); std::max( it.toInt32(), static_cast<sal_Int32>(1) ) ));
break; break;
case XML_TOK_TABLE_ROW_CELL_ATTR_VALUE_TYPE: case XML_ELEMENT( OFFICE, XML_VALUE_TYPE ):
nCellType = GetScImport().GetCellType(it.toString()); nCellType = GetScImport().GetCellType(it.toString());
bIsEmpty = false; bIsEmpty = false;
break; break;
case XML_TOK_TABLE_ROW_CELL_ATTR_NEW_VALUE_TYPE: case XML_ELEMENT( CALC_EXT, XML_VALUE_TYPE ):
if(it.isString( "error" ) ) if(it.isString( "error" ) )
mbErrorValue = true; mbErrorValue = true;
else else
@@ -211,7 +209,7 @@ ScXMLTableRowCellContext::ScXMLTableRowCellContext( ScXMLImport& rImport,
bIsEmpty = false; bIsEmpty = false;
mbNewValueType = true; mbNewValueType = true;
break; break;
case XML_TOK_TABLE_ROW_CELL_ATTR_VALUE: case XML_ELEMENT( OFFICE, XML_VALUE ):
{ {
if (!it.isEmpty()) if (!it.isEmpty())
{ {
@@ -226,7 +224,7 @@ ScXMLTableRowCellContext::ScXMLTableRowCellContext( ScXMLImport& rImport,
} }
} }
break; break;
case XML_TOK_TABLE_ROW_CELL_ATTR_DATE_VALUE: case XML_ELEMENT( OFFICE, XML_DATE_VALUE ):
{ {
if (!it.isEmpty() && rXMLImport.SetNullDateOnUnitConverter()) if (!it.isEmpty() && rXMLImport.SetNullDateOnUnitConverter())
{ {
@@ -235,7 +233,7 @@ ScXMLTableRowCellContext::ScXMLTableRowCellContext( ScXMLImport& rImport,
} }
} }
break; break;
case XML_TOK_TABLE_ROW_CELL_ATTR_TIME_VALUE: case XML_ELEMENT( OFFICE, XML_TIME_VALUE ):
{ {
if (!it.isEmpty()) if (!it.isEmpty())
{ {
@@ -244,7 +242,7 @@ ScXMLTableRowCellContext::ScXMLTableRowCellContext( ScXMLImport& rImport,
} }
} }
break; break;
case XML_TOK_TABLE_ROW_CELL_ATTR_STRING_VALUE: case XML_ELEMENT( OFFICE, XML_STRING_VALUE ):
{ {
if (!it.isEmpty()) if (!it.isEmpty())
{ {
@@ -254,7 +252,7 @@ ScXMLTableRowCellContext::ScXMLTableRowCellContext( ScXMLImport& rImport,
} }
} }
break; break;
case XML_TOK_TABLE_ROW_CELL_ATTR_BOOLEAN_VALUE: case XML_ELEMENT( OFFICE , XML_BOOLEAN_VALUE ):
{ {
if (!it.isEmpty()) if (!it.isEmpty())
{ {
@@ -268,7 +266,7 @@ ScXMLTableRowCellContext::ScXMLTableRowCellContext( ScXMLImport& rImport,
} }
} }
break; break;
case XML_TOK_TABLE_ROW_CELL_ATTR_FORMULA: case XML_ELEMENT( TABLE, XML_FORMULA ):
{ {
if (!it.isEmpty()) if (!it.isEmpty())
{ {
@@ -279,7 +277,7 @@ ScXMLTableRowCellContext::ScXMLTableRowCellContext( ScXMLImport& rImport,
} }
} }
break; break;
case XML_TOK_TABLE_ROW_CELL_ATTR_CURRENCY: case XML_ELEMENT( OFFICE, XML_CURRENCY ):
xCurrencySymbol.reset( new OUString( it.toString() ) ); xCurrencySymbol.reset( new OUString( it.toString() ) );
break; break;
default: default:

View File

@@ -57,13 +57,13 @@ ScXMLExternalRefTabSourceContext::ScXMLExternalRefTabSourceContext(
for ( auto it = pAttribList->begin(); it != pAttribList->end(); ++it) for ( auto it = pAttribList->begin(); it != pAttribList->end(); ++it)
{ {
sal_Int32 nAttrToken = it.getToken(); sal_Int32 nAttrToken = it.getToken();
if ( nAttrToken == ( NAMESPACE_TOKEN( XML_NAMESPACE_XLINK ) | XML_HREF ) ) if ( nAttrToken == XML_ELEMENT( XLINK, XML_HREF ) )
maRelativeUrl = it.toString(); maRelativeUrl = it.toString();
else if ( nAttrToken == ( NAMESPACE_TOKEN( XML_NAMESPACE_TABLE ) | XML_TABLE_NAME ) ) else if ( nAttrToken == XML_ELEMENT( TABLE, XML_TABLE_NAME ) )
maTableName = it.toString(); maTableName = it.toString();
else if ( nAttrToken == ( NAMESPACE_TOKEN( XML_NAMESPACE_TABLE ) | XML_FILTER_NAME ) ) else if ( nAttrToken == XML_ELEMENT( TABLE, XML_FILTER_NAME ) )
maFilterName = it.toString(); maFilterName = it.toString();
else if ( nAttrToken == ( NAMESPACE_TOKEN( XML_NAMESPACE_TABLE ) | XML_FILTER_OPTIONS ) ) else if ( nAttrToken == XML_ELEMENT( TABLE, XML_FILTER_OPTIONS ) )
maFilterOptions = it.toString(); maFilterOptions = it.toString();
} }
} }

View File

@@ -332,7 +332,7 @@ uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
ScXMLFlatDocContext_Impl::createFastChildContext( sal_Int32 nElement, ScXMLFlatDocContext_Impl::createFastChildContext( sal_Int32 nElement,
const uno::Reference< xml::sax::XFastAttributeList > & xAttrList ) const uno::Reference< xml::sax::XFastAttributeList > & xAttrList )
{ {
if ( nElement != ( NAMESPACE_TOKEN( XML_NAMESPACE_OFFICE ) | XML_META ) ) if ( nElement != XML_ELEMENT( OFFICE, XML_META ) )
return ScXMLDocContext_Impl::createFastChildContext( nElement, xAttrList ); return ScXMLDocContext_Impl::createFastChildContext( nElement, xAttrList );
else else
return new SvXMLImportContext( GetImport() ); return new SvXMLImportContext( GetImport() );
@@ -422,10 +422,9 @@ uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
{ {
SvXMLImportContext *pContext(nullptr); SvXMLImportContext *pContext(nullptr);
const SvXMLTokenMap& rTokenMap(GetScImport().GetDocElemTokenMap()); switch( nElement )
switch( rTokenMap.Get( nElement ) )
{ {
case XML_TOK_DOC_BODY: case XML_ELEMENT( OFFICE, XML_BODY ):
if (GetScImport().getImportFlags() & SvXMLImportFlags::CONTENT) if (GetScImport().getImportFlags() & SvXMLImportFlags::CONTENT)
pContext = new ScXMLBodyContext_Impl( GetScImport() ); pContext = new ScXMLBodyContext_Impl( GetScImport() );
break; break;
@@ -2046,13 +2045,13 @@ SvXMLImportContext *ScXMLImport::CreateFastContext( sal_Int32 nElement,
switch( nElement ) switch( nElement )
{ {
case ( NAMESPACE_TOKEN( XML_NAMESPACE_OFFICE ) | XML_DOCUMENT_STYLES ): case XML_ELEMENT( OFFICE, XML_DOCUMENT_STYLES ):
case ( NAMESPACE_TOKEN( XML_NAMESPACE_OFFICE ) | XML_DOCUMENT_CONTENT ): case XML_ELEMENT( OFFICE, XML_DOCUMENT_CONTENT ):
case ( NAMESPACE_TOKEN( XML_NAMESPACE_OFFICE ) | XML_DOCUMENT_SETTINGS ): case XML_ELEMENT( OFFICE, XML_DOCUMENT_SETTINGS ):
pContext = new ScXMLDocContext_Impl( *this ); pContext = new ScXMLDocContext_Impl( *this );
break; break;
case ( NAMESPACE_TOKEN( XML_NAMESPACE_OFFICE ) | XML_DOCUMENT ): case XML_ELEMENT( OFFICE, XML_DOCUMENT ):
{ {
uno::Reference<document::XDocumentPropertiesSupplier> xDPS( uno::Reference<document::XDocumentPropertiesSupplier> xDPS(
GetModel(), uno::UNO_QUERY_THROW); GetModel(), uno::UNO_QUERY_THROW);

View File

@@ -51,7 +51,6 @@ ScXMLTableRowContext::ScXMLTableRowContext( ScXMLImport& rImport,
bHasCell(false) bHasCell(false)
{ {
OUString sCellStyleName; OUString sCellStyleName;
const SvXMLTokenMap& rAttrTokenMap(GetScImport().GetTableRowAttrTokenMap());
if ( xAttrList.is() ) if ( xAttrList.is() )
{ {
sax_fastparser::FastAttributeList *pAttribList; sax_fastparser::FastAttributeList *pAttribList;
@@ -60,30 +59,30 @@ ScXMLTableRowContext::ScXMLTableRowContext( ScXMLImport& rImport,
for ( auto it = pAttribList->begin(); it != pAttribList->end(); ++it) for ( auto it = pAttribList->begin(); it != pAttribList->end(); ++it)
{ {
switch( rAttrTokenMap.Get( it.getToken() ) ) switch( it.getToken() )
{ {
case XML_TOK_TABLE_ROW_ATTR_STYLE_NAME: case XML_ELEMENT( TABLE, XML_STYLE_NAME ):
{ {
sStyleName = it.toString(); sStyleName = it.toString();
} }
break; break;
case XML_TOK_TABLE_ROW_ATTR_VISIBILITY: case XML_ELEMENT( TABLE, XML_VISIBILITY ):
{ {
sVisibility = it.toString(); sVisibility = it.toString();
} }
break; break;
case XML_TOK_TABLE_ROW_ATTR_REPEATED: case XML_ELEMENT( TABLE, XML_NUMBER_ROWS_REPEATED ):
{ {
nRepeatedRows = std::max( it.toInt32(), (sal_Int32) 1 ); nRepeatedRows = std::max( it.toInt32(), (sal_Int32) 1 );
nRepeatedRows = std::min( nRepeatedRows, MAXROWCOUNT ); nRepeatedRows = std::min( nRepeatedRows, MAXROWCOUNT );
} }
break; break;
case XML_TOK_TABLE_ROW_ATTR_DEFAULT_CELL_STYLE_NAME: case XML_ELEMENT( TABLE, XML_DEFAULT_CELL_STYLE_NAME ):
{ {
sCellStyleName = it.toString(); sCellStyleName = it.toString();
} }
break; break;
/*case XML_TOK_TABLE_ROW_ATTR_USE_OPTIMAL_HEIGHT: /*case XML_ELEMENT( TABLE, XML_USE_OPTIMAL_HEIGHT ):
{ {
sOptimalHeight = it.toString(); sOptimalHeight = it.toString();
} }
@@ -106,10 +105,9 @@ uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
{ {
SvXMLImportContext *pContext(nullptr); SvXMLImportContext *pContext(nullptr);
const SvXMLTokenMap& rTokenMap(GetScImport().GetTableRowElemTokenMap()); switch( nElement )
switch( rTokenMap.Get( nElement ) )
{ {
case XML_TOK_TABLE_ROW_CELL: case XML_ELEMENT( TABLE, XML_TABLE_CELL ):
// if( IsInsertCellPossible() ) // if( IsInsertCellPossible() )
{ {
bHasCell = true; bHasCell = true;
@@ -119,7 +117,7 @@ uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
); );
} }
break; break;
case XML_TOK_TABLE_ROW_COVERED_CELL: case XML_ELEMENT( TABLE, XML_COVERED_TABLE_CELL ):
// if( IsInsertCellPossible() ) // if( IsInsertCellPossible() )
{ {
bHasCell = true; bHasCell = true;
@@ -231,10 +229,10 @@ ScXMLTableRowsContext::ScXMLTableRowsContext( ScXMLImport& rImport,
nGroupStartRow = rImport.GetTables().GetCurrentRow(); nGroupStartRow = rImport.GetTables().GetCurrentRow();
++nGroupStartRow; ++nGroupStartRow;
if ( xAttrList.is() && if ( xAttrList.is() &&
xAttrList->hasAttribute( NAMESPACE_TOKEN( XML_NAMESPACE_TABLE ) | XML_DISPLAY ) ) xAttrList->hasAttribute( XML_ELEMENT( TABLE, XML_DISPLAY ) ) )
{ {
bGroupDisplay = IsXMLToken( xAttrList->getValue( bGroupDisplay = IsXMLToken( xAttrList->getValue(
NAMESPACE_TOKEN( XML_NAMESPACE_TABLE ) | XML_DISPLAY ), XML_TRUE ); XML_ELEMENT( TABLE, XML_DISPLAY ) ), XML_TRUE );
} }
} }
} }
@@ -249,22 +247,21 @@ uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
{ {
SvXMLImportContext *pContext(nullptr); SvXMLImportContext *pContext(nullptr);
const SvXMLTokenMap& rTokenMap(GetScImport().GetTableRowsElemTokenMap()); switch( nElement )
switch( rTokenMap.Get( nElement ) )
{ {
case XML_TOK_TABLE_ROWS_ROW_GROUP: case XML_ELEMENT( TABLE, XML_TABLE_ROW_GROUP ):
pContext = new ScXMLTableRowsContext( GetScImport(), xAttrList, pContext = new ScXMLTableRowsContext( GetScImport(), xAttrList,
false, true ); false, true );
break; break;
case XML_TOK_TABLE_ROWS_HEADER_ROWS: case XML_ELEMENT( TABLE, XML_TABLE_HEADER_ROWS ):
pContext = new ScXMLTableRowsContext( GetScImport(), xAttrList, pContext = new ScXMLTableRowsContext( GetScImport(), xAttrList,
true, false ); true, false );
break; break;
case XML_TOK_TABLE_ROWS_ROWS: case XML_ELEMENT( TABLE, XML_TABLE_ROWS ):
pContext = new ScXMLTableRowsContext( GetScImport(), xAttrList, pContext = new ScXMLTableRowsContext( GetScImport(), xAttrList,
false, false ); false, false );
break; break;
case XML_TOK_TABLE_ROWS_ROW: case XML_ELEMENT( TABLE, XML_TABLE_ROW ):
pContext = new ScXMLTableRowContext( GetScImport(), xAttrList ); pContext = new ScXMLTableRowContext( GetScImport(), xAttrList );
break; break;
} }

View File

@@ -39,6 +39,7 @@
#include <xmloff/xmltkmap.hxx> #include <xmloff/xmltkmap.hxx>
#include <xmloff/nmspmap.hxx> #include <xmloff/nmspmap.hxx>
#include <xmloff/xmltoken.hxx> #include <xmloff/xmltoken.hxx>
#include <xmloff/xmlnmspe.hxx>
#include <xmloff/XMLEventsImportContext.hxx> #include <xmloff/XMLEventsImportContext.hxx>
#include <tools/urlobj.hxx> #include <tools/urlobj.hxx>
@@ -149,33 +150,33 @@ ScXMLTableContext::ScXMLTableContext( ScXMLImport& rImport,
assert( dynamic_cast< sax_fastparser::FastAttributeList *>( xAttrList.get() ) != nullptr ); assert( dynamic_cast< sax_fastparser::FastAttributeList *>( xAttrList.get() ) != nullptr );
pAttribList = static_cast< sax_fastparser::FastAttributeList *>( xAttrList.get() ); pAttribList = static_cast< sax_fastparser::FastAttributeList *>( xAttrList.get() );
const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetTableAttrTokenMap();
for ( auto it = pAttribList->begin(); it != pAttribList->end(); ++it) for ( auto it = pAttribList->begin(); it != pAttribList->end(); ++it)
{ {
switch( rAttrTokenMap.Get( it.getToken() ) ) switch( it.getToken() )
{ {
case XML_TOK_TABLE_NAME: case XML_ELEMENT( TABLE, XML_NAME ):
sName = it.toString(); sName = it.toString();
break; break;
case XML_TOK_TABLE_STYLE_NAME: case XML_ELEMENT( TABLE, XML_STYLE_NAME ):
sStyleName = it.toString(); sStyleName = it.toString();
break; break;
case XML_TOK_TABLE_PROTECTED: case XML_ELEMENT( TABLE, XML_PROTECTED ):
aProtectData.mbProtected = IsXMLToken( it.toCString(), XML_TRUE ); aProtectData.mbProtected = IsXMLToken( it.toCString(), XML_TRUE );
break; break;
case XML_TOK_TABLE_PRINT_RANGES: case XML_ELEMENT( TABLE, XML_PRINT_RANGES ):
sPrintRanges = it.toString(); sPrintRanges = it.toString();
break; break;
case XML_TOK_TABLE_PASSWORD: case XML_ELEMENT( TABLE, XML_PROTECTION_KEY ):
aProtectData.maPassword = it.toString(); aProtectData.maPassword = it.toString();
break; break;
case XML_TOK_TABLE_PASSHASH: case XML_ELEMENT( TABLE, XML_PROTECTION_KEY_DIGEST_ALGORITHM ):
aProtectData.meHash1 = ScPassHashHelper::getHashTypeFromURI( it.toString() ); aProtectData.meHash1 = ScPassHashHelper::getHashTypeFromURI( it.toString() );
break; break;
case XML_TOK_TABLE_PASSHASH_2: case XML_ELEMENT( TABLE, XML_PROTECTION_KEY_DIGEST_ALGORITHM_2 ):
case XML_ELEMENT( LO_EXT, XML_PROTECTION_KEY_DIGEST_ALGORITHM_2 ):
aProtectData.meHash2 = ScPassHashHelper::getHashTypeFromURI( it.toString() ); aProtectData.meHash2 = ScPassHashHelper::getHashTypeFromURI( it.toString() );
break; break;
case XML_TOK_TABLE_PRINT: case XML_ELEMENT( TABLE, XML_PRINT ):
{ {
if (IsXMLToken( it.toCString(), XML_FALSE) ) if (IsXMLToken( it.toCString(), XML_FALSE) )
bPrintEntireSheet = false; bPrintEntireSheet = false;
@@ -300,24 +301,22 @@ uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
ScXMLTableContext::createFastChildContext( sal_Int32 nElement, ScXMLTableContext::createFastChildContext( sal_Int32 nElement,
const uno::Reference< xml::sax::XFastAttributeList > & xAttrList ) const uno::Reference< xml::sax::XFastAttributeList > & xAttrList )
{ {
const SvXMLTokenMap& rTokenMap(GetScImport().GetTableElemTokenMap());
sal_uInt16 nToken = rTokenMap.Get( nElement );
if (pExternalRefInfo.get()) if (pExternalRefInfo.get())
{ {
// We only care about the table-row and table-source elements for // We only care about the table-row and table-source elements for
// external cache data. // external cache data.
switch (nToken) switch ( nElement )
{ {
case XML_TOK_TABLE_ROW_GROUP: case XML_ELEMENT( TABLE, XML_TABLE_ROW_GROUP ):
case XML_TOK_TABLE_HEADER_ROWS: case XML_ELEMENT( TABLE, XML_TABLE_HEADER_ROWS ):
case XML_TOK_TABLE_ROWS: case XML_ELEMENT( TABLE, XML_TABLE_ROWS ):
// #i101319# don't discard rows in groups or header (repeat range) // #i101319# don't discard rows in groups or header (repeat range)
return new ScXMLExternalRefRowsContext( return new ScXMLExternalRefRowsContext(
GetScImport(), nElement, xAttrList, *pExternalRefInfo); GetScImport(), nElement, xAttrList, *pExternalRefInfo);
case XML_TOK_TABLE_ROW: case XML_ELEMENT( TABLE, XML_TABLE_ROW ):
return new ScXMLExternalRefRowContext( return new ScXMLExternalRefRowContext(
GetScImport(), nElement, xAttrList, *pExternalRefInfo); GetScImport(), nElement, xAttrList, *pExternalRefInfo);
case XML_TOK_TABLE_SOURCE: case XML_ELEMENT( TABLE, XML_TABLE_SOURCE ):
return new ScXMLExternalRefTabSourceContext( return new ScXMLExternalRefTabSourceContext(
GetScImport(), nElement, xAttrList, *pExternalRefInfo); GetScImport(), nElement, xAttrList, *pExternalRefInfo);
default: default:
@@ -328,21 +327,21 @@ uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
SvXMLImportContext *pContext(nullptr); SvXMLImportContext *pContext(nullptr);
switch (nToken) switch ( nElement )
{ {
case XML_TOK_TABLE_ROW_GROUP: case XML_ELEMENT( TABLE, XML_TABLE_ROW_GROUP ):
pContext = new ScXMLTableRowsContext( GetScImport(), xAttrList, pContext = new ScXMLTableRowsContext( GetScImport(), xAttrList,
false, true ); false, true );
break; break;
case XML_TOK_TABLE_HEADER_ROWS: case XML_ELEMENT( TABLE, XML_TABLE_HEADER_ROWS ):
pContext = new ScXMLTableRowsContext( GetScImport(), xAttrList, pContext = new ScXMLTableRowsContext( GetScImport(), xAttrList,
true, false ); true, false );
break; break;
case XML_TOK_TABLE_ROWS: case XML_ELEMENT( TABLE, XML_TABLE_ROWS ):
pContext = new ScXMLTableRowsContext( GetScImport(), xAttrList, pContext = new ScXMLTableRowsContext( GetScImport(), xAttrList,
false, false ); false, false );
break; break;
case XML_TOK_TABLE_ROW: case XML_ELEMENT( TABLE, XML_TABLE_ROW ):
pContext = new ScXMLTableRowContext( GetScImport(),xAttrList ); pContext = new ScXMLTableRowContext( GetScImport(),xAttrList );
break; break;
default: default:

View File

@@ -789,9 +789,9 @@ void SAL_CALL SvXMLImport::setDocumentLocator( const uno::Reference< xml::sax::X
void SAL_CALL SvXMLImport::startFastElement (sal_Int32 Element, void SAL_CALL SvXMLImport::startFastElement (sal_Int32 Element,
const uno::Reference< xml::sax::XFastAttributeList > & Attribs) const uno::Reference< xml::sax::XFastAttributeList > & Attribs)
{ {
if ( Attribs.is() && Attribs->hasAttribute( NAMESPACE_TOKEN( XML_NAMESPACE_OFFICE ) | XML_VERSION ) ) if ( Attribs.is() && Attribs->hasAttribute( XML_ELEMENT( OFFICE, XML_VERSION ) ) )
{ {
mpImpl->aODFVersion = Attribs->getValue( NAMESPACE_TOKEN( XML_NAMESPACE_OFFICE ) | XML_VERSION ); mpImpl->aODFVersion = Attribs->getValue( XML_ELEMENT( OFFICE, XML_VERSION ) );
// the ODF version in content.xml and manifest.xml must be the same starting from ODF1.2 // the ODF version in content.xml and manifest.xml must be the same starting from ODF1.2
if ( mpImpl->mStreamName == "content.xml" && !IsODFVersionConsistent( mpImpl->aODFVersion ) ) if ( mpImpl->mStreamName == "content.xml" && !IsODFVersionConsistent( mpImpl->aODFVersion ) )

View File

@@ -94,7 +94,7 @@ void XMLGradientStyleImport::importXML(
{ XML_NAMESPACE_DRAW, XML_END_INTENSITY, XML_TOK_GRADIENT_ENDINT }, { XML_NAMESPACE_DRAW, XML_END_INTENSITY, XML_TOK_GRADIENT_ENDINT },
{ XML_NAMESPACE_DRAW, XML_GRADIENT_ANGLE, XML_TOK_GRADIENT_ANGLE }, { XML_NAMESPACE_DRAW, XML_GRADIENT_ANGLE, XML_TOK_GRADIENT_ANGLE },
{ XML_NAMESPACE_DRAW, XML_GRADIENT_BORDER, XML_TOK_GRADIENT_BORDER, { XML_NAMESPACE_DRAW, XML_GRADIENT_BORDER, XML_TOK_GRADIENT_BORDER,
NAMESPACE_TOKEN( XML_NAMESPACE_DRAW ) | XML_BORDER }, XML_ELEMENT( DRAW, XML_BORDER ) },
// XML_GRADIENT_BORDER is a duplicate of XML_BORDER // XML_GRADIENT_BORDER is a duplicate of XML_BORDER
XML_TOKEN_MAP_END XML_TOKEN_MAP_END
}; };

View File

@@ -79,7 +79,7 @@ void XMLHatchStyleImport::importXML(
{ XML_NAMESPACE_DRAW, XML_STYLE, XML_TOK_HATCH_STYLE }, { XML_NAMESPACE_DRAW, XML_STYLE, XML_TOK_HATCH_STYLE },
{ XML_NAMESPACE_DRAW, XML_COLOR, XML_TOK_HATCH_COLOR }, { XML_NAMESPACE_DRAW, XML_COLOR, XML_TOK_HATCH_COLOR },
{ XML_NAMESPACE_DRAW, XML_HATCH_DISTANCE, XML_TOK_HATCH_DISTANCE, { XML_NAMESPACE_DRAW, XML_HATCH_DISTANCE, XML_TOK_HATCH_DISTANCE,
NAMESPACE_TOKEN( XML_NAMESPACE_DRAW ) | XML_DISTANCE }, XML_ELEMENT( DRAW, XML_DISTANCE ) },
// XML_HATCH_DISTANCE is a duplicate of XML_DISTANCE // XML_HATCH_DISTANCE is a duplicate of XML_DISTANCE
{ XML_NAMESPACE_DRAW, XML_ROTATION, XML_TOK_HATCH_ROTATION }, { XML_NAMESPACE_DRAW, XML_ROTATION, XML_TOK_HATCH_ROTATION },
XML_TOKEN_MAP_END XML_TOKEN_MAP_END

View File

@@ -99,7 +99,7 @@ void XMLTransGradientStyleImport::importXML(
{ XML_NAMESPACE_DRAW, XML_END, XML_TOK_GRADIENT_END }, { XML_NAMESPACE_DRAW, XML_END, XML_TOK_GRADIENT_END },
{ XML_NAMESPACE_DRAW, XML_GRADIENT_ANGLE, XML_TOK_GRADIENT_ANGLE }, { XML_NAMESPACE_DRAW, XML_GRADIENT_ANGLE, XML_TOK_GRADIENT_ANGLE },
{ XML_NAMESPACE_DRAW, XML_GRADIENT_BORDER, XML_TOK_GRADIENT_BORDER, { XML_NAMESPACE_DRAW, XML_GRADIENT_BORDER, XML_TOK_GRADIENT_BORDER,
NAMESPACE_TOKEN( XML_NAMESPACE_DRAW ) | XML_BORDER }, XML_ELEMENT( DRAW, XML_BORDER ) },
// XML_GRADIENT_BORDER is a duplicate of XML_BORDER // XML_GRADIENT_BORDER is a duplicate of XML_BORDER
XML_TOKEN_MAP_END XML_TOKEN_MAP_END
}; };