From 49ba005c111b50c2d7b6c8c68d0a09d4eafa7288 Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Sat, 17 Oct 2020 15:46:00 +0200 Subject: TransformerBase: use the fastparser API when possible part of the process of making SvXMLImport fastparser-only Change-Id: Ie93e846e745b4388b891a68740c17742bbd62e82 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104465 Tested-by: Jenkins Reviewed-by: Noel Grandin --- xmloff/source/transform/TransformerBase.cxx | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'xmloff') diff --git a/xmloff/source/transform/TransformerBase.cxx b/xmloff/source/transform/TransformerBase.cxx index 1b9e43fc9c19..c55e29562558 100644 --- a/xmloff/source/transform/TransformerBase.cxx +++ b/xmloff/source/transform/TransformerBase.cxx @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -382,22 +383,23 @@ void SAL_CALL XMLTransformerBase::initialize( const Sequence< Any >& aArguments // The Any shift operator can't be used to query the type because it // uses queryInterface, and the model also has a XPropertySet interface. + css::uno::Reference< XFastDocumentHandler > xFastHandler; + if( (rArgument >>= xFastHandler) && xFastHandler ) + { + SvXMLImport *pFastHandler = dynamic_cast( xFastHandler.get() ); + assert(pFastHandler); + m_xHandler.set( new SvXMLLegacyToFastDocHandler( pFastHandler ) ); + } // document handler - if( cppu::UnoType::get().isAssignableFrom( rArgument.getValueType() ) ) + else if( cppu::UnoType::get().isAssignableFrom( rArgument.getValueType() ) ) { m_xHandler.set( rArgument, UNO_QUERY ); - // Type change to avoid crashing of dynamic_cast - if (SvXMLImport *pFastHandler = dynamic_cast( - uno::Reference< XFastDocumentHandler >( m_xHandler, uno::UNO_QUERY ).get() ) ) - m_xHandler.set( new SvXMLLegacyToFastDocHandler( pFastHandler ) ); } - // property set to transport data across - if( cppu::UnoType::get().isAssignableFrom( rArgument.getValueType() ) ) + else if( cppu::UnoType::get().isAssignableFrom( rArgument.getValueType() ) ) m_xPropSet.set( rArgument, UNO_QUERY ); - // xmodel - if( cppu::UnoType::get().isAssignableFrom( rArgument.getValueType() ) ) + else if( cppu::UnoType::get().isAssignableFrom( rArgument.getValueType() ) ) mxModel.set( rArgument, UNO_QUERY ); } -- cgit