diff options
-rw-r--r-- | include/xmloff/XMLEventExport.hxx | 8 | ||||
-rw-r--r-- | xmloff/source/core/xmlexp.cxx | 5 | ||||
-rw-r--r-- | xmloff/source/script/XMLEventExport.cxx | 13 |
3 files changed, 12 insertions, 14 deletions
diff --git a/include/xmloff/XMLEventExport.hxx b/include/xmloff/XMLEventExport.hxx index 797fc4a6dde3..8dba84465ace 100644 --- a/include/xmloff/XMLEventExport.hxx +++ b/include/xmloff/XMLEventExport.hxx @@ -29,6 +29,7 @@ #include <xmloff/xmlevent.hxx> #include <map> +#include <memory> class SvXMLExport; namespace com { namespace sun { namespace star { @@ -38,7 +39,7 @@ namespace com { namespace sun { namespace star { namespace beans { struct PropertyValue; } } } } -typedef ::std::map< OUString, XMLEventExportHandler* > HandlerMap; +typedef ::std::map< OUString, std::unique_ptr<XMLEventExportHandler> > HandlerMap; typedef ::std::map< OUString, XMLEventName > NameMap; /** @@ -69,13 +70,16 @@ public: XMLEventExport(SvXMLExport& rExport); ~XMLEventExport(); + XMLEventExport& operator=( XMLEventExport const & ) = delete; // MSVC2017 workaround + XMLEventExport( XMLEventExport const & ) = delete; // MSVC2017 workaround + /// register an EventExportHandler for a particular script type /// /// The handlers will be deleted when the object is destroyed, hence /// no pointers to a handler registered with AddHandler() should be /// held by anyone. void AddHandler( const OUString& rName, - XMLEventExportHandler* rHandler ); + std::unique_ptr<XMLEventExportHandler> pHandler ); /// register additional event names void AddTranslationTable( const XMLEventNameTranslation* pTransTable ); diff --git a/xmloff/source/core/xmlexp.cxx b/xmloff/source/core/xmlexp.cxx index fc30db7b8bb2..c3b82f214246 100644 --- a/xmloff/source/core/xmlexp.cxx +++ b/xmloff/source/core/xmlexp.cxx @@ -95,6 +95,7 @@ #include <comphelper/xmltools.hxx> #include <comphelper/graphicmimetype.hxx> +#include <o3tl/make_unique.hxx> using namespace ::osl; using namespace ::com::sun::star; @@ -2010,8 +2011,8 @@ XMLEventExport& SvXMLExport::GetEventExport() mpEventExport.reset( new XMLEventExport(*this) ); // and register standard handlers + names - mpEventExport->AddHandler("StarBasic", new XMLStarBasicExportHandler()); - mpEventExport->AddHandler("Script", new XMLScriptExportHandler()); + mpEventExport->AddHandler("StarBasic", o3tl::make_unique<XMLStarBasicExportHandler>()); + mpEventExport->AddHandler("Script", o3tl::make_unique<XMLScriptExportHandler>()); mpEventExport->AddTranslationTable(aStandardEventTable); } diff --git a/xmloff/source/script/XMLEventExport.cxx b/xmloff/source/script/XMLEventExport.cxx index 64e47a45919c..72d550527bd1 100644 --- a/xmloff/source/script/XMLEventExport.cxx +++ b/xmloff/source/script/XMLEventExport.cxx @@ -52,21 +52,14 @@ XMLEventExport::XMLEventExport(SvXMLExport& rExp) : XMLEventExport::~XMLEventExport() { // delete all handlers - for( auto& rEntry : aHandlerMap ) - { - delete rEntry.second; - } aHandlerMap.clear(); } void XMLEventExport::AddHandler( const OUString& rName, - XMLEventExportHandler* pHandler ) + std::unique_ptr<XMLEventExportHandler> pHandler ) { - DBG_ASSERT(pHandler != nullptr, "Need EventExportHandler"); - if (pHandler != nullptr) - { - aHandlerMap[rName] = pHandler; - } + assert(pHandler); + aHandlerMap[rName] = std::move(pHandler); } void XMLEventExport::AddTranslationTable( |