summaryrefslogtreecommitdiff
path: root/xmloff
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-12-13 09:48:54 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-12-18 07:22:32 +0100
commitb06b3bcc6900014989da8060d126a45f31c9b8b7 (patch)
treee55aff0c04494c1008d298b6521d92610be6e45e /xmloff
parent80d44971b6e857a40f2716645fb22b84ac15deef (diff)
use unique_ptr in XMLPropertyBackpatcher
and drop what looks like a very old (from 2000) workaround for long typenames and linker problems Change-Id: I9b4b42b0c37cacaa447a104bd2cf0d4aa76ba5fc Reviewed-on: https://gerrit.libreoffice.org/65142 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'xmloff')
-rw-r--r--xmloff/source/text/XMLPropertyBackpatcher.cxx16
-rw-r--r--xmloff/source/text/XMLPropertyBackpatcher.hxx8
2 files changed, 8 insertions, 16 deletions
diff --git a/xmloff/source/text/XMLPropertyBackpatcher.cxx b/xmloff/source/text/XMLPropertyBackpatcher.cxx
index a456283b2afc..a9f245d7229e 100644
--- a/xmloff/source/text/XMLPropertyBackpatcher.cxx
+++ b/xmloff/source/text/XMLPropertyBackpatcher.cxx
@@ -54,14 +54,14 @@ void XMLPropertyBackpatcher<A>::ResolveId(
aIDMap[sName] = aValue;
// backpatch old references, if backpatch list exists
- if (aBackpatchListMap.count(sName))
+ auto it = aBackpatchListMap.find(sName);
+ if (it != aBackpatchListMap.end())
{
// aah, we have a backpatch list!
- BackpatchListType* pList =
- static_cast<BackpatchListType*>(aBackpatchListMap[sName]);
+ std::unique_ptr<BackpatchListType> pList = std::move(it->second);
// a) remove list from list map
- aBackpatchListMap.erase(sName);
+ aBackpatchListMap.erase(it);
// b) for every item, set SequenceNumber
// (and preserve Property, if appropriate)
@@ -71,9 +71,6 @@ void XMLPropertyBackpatcher<A>::ResolveId(
{
rBackpatch->setPropertyValue(sPropertyName, aAny);
}
-
- // c) delete list
- delete pList;
}
// else: no backpatch list -> then we're finished
}
@@ -103,12 +100,11 @@ void XMLPropertyBackpatcher<A>::SetProperty(
if (! aBackpatchListMap.count(sName))
{
// create backpatch list for this name
- BackpatchListType* pTmp = new BackpatchListType;
- aBackpatchListMap[sName] = static_cast<void*>(pTmp);
+ aBackpatchListMap.emplace(sName, new BackpatchListType);
}
// insert footnote
- static_cast<BackpatchListType*>(aBackpatchListMap[sName])->push_back(xPropSet);
+ aBackpatchListMap[sName]->push_back(xPropSet);
}
}
diff --git a/xmloff/source/text/XMLPropertyBackpatcher.hxx b/xmloff/source/text/XMLPropertyBackpatcher.hxx
index 8747b8aad00b..029f25e66e4a 100644
--- a/xmloff/source/text/XMLPropertyBackpatcher.hxx
+++ b/xmloff/source/text/XMLPropertyBackpatcher.hxx
@@ -22,6 +22,7 @@
#define INCLUDED_XMLOFF_SOURCE_TEXT_XMLPROPERTYBACKPATCHER_HXX
#include <map>
+#include <memory>
#include <vector>
namespace com { namespace sun { namespace star {
@@ -65,13 +66,8 @@ class XMLPropertyBackpatcher
typedef ::std::vector<
css::uno::Reference<css::beans::XPropertySet> > BackpatchListType;
- /* use void* instead of BackpatchListType to avoid linker problems
- with long typenames. The real typename (commented out) contains
- >1200 chars. */
-
/// backpatch list for unresolved IDs
- //::std::map<const OUString, BackpatchListType*> aBackpatchListMap;
- ::std::map<const OUString, void*> aBackpatchListMap;
+ ::std::map<const OUString, std::unique_ptr<BackpatchListType>> aBackpatchListMap;
/// mapping of names -> IDs
::std::map<const OUString, A> aIDMap;