summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/xmloff/XMLEventExport.hxx8
-rw-r--r--xmloff/source/core/xmlexp.cxx5
-rw-r--r--xmloff/source/script/XMLEventExport.cxx13
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(