Kaydet (Commit) 6cc5c6de authored tarafından Noel Grandin's avatar Noel Grandin

loplugin:useuniqueptr in SvgDocument

Change-Id: I299e97c276b60be86491bfeee22d46774739ca44
Reviewed-on: https://gerrit.libreoffice.org/60969
Tested-by: Jenkins
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 0699a18c
...@@ -21,12 +21,16 @@ ...@@ -21,12 +21,16 @@
#define INCLUDED_SVGIO_INC_SVGDOCUMENT_HXX #define INCLUDED_SVGIO_INC_SVGDOCUMENT_HXX
#include "svgnode.hxx" #include "svgnode.hxx"
#include <memory>
#include <unordered_map> #include <unordered_map>
#include <vector>
namespace svgio namespace svgio
{ {
namespace svgreader namespace svgreader
{ {
typedef std::vector< std::unique_ptr<SvgNode> > SvgNodeVector;
class SvgDocument class SvgDocument
{ {
private: private:
...@@ -52,7 +56,7 @@ namespace svgio ...@@ -52,7 +56,7 @@ namespace svgio
SvgDocument& operator=(const SvgDocument&) = delete; SvgDocument& operator=(const SvgDocument&) = delete;
/// append another root node, ownership changes /// append another root node, ownership changes
void appendNode(SvgNode* pNode); void appendNode(std::unique_ptr<SvgNode> pNode);
/// add/remove nodes with Id to mapper /// add/remove nodes with Id to mapper
void addSvgNodeToMapper(const OUString& rStr, const SvgNode& rNode); void addSvgNodeToMapper(const OUString& rStr, const SvgNode& rNode);
......
...@@ -45,8 +45,6 @@ namespace svgio ...@@ -45,8 +45,6 @@ namespace svgio
{ {
namespace svgreader namespace svgreader
{ {
typedef ::std::vector< SvgNode* > SvgNodeVector;
enum XmlSpace enum XmlSpace
{ {
XmlSpace_notset, XmlSpace_notset,
......
...@@ -33,18 +33,12 @@ namespace svgio ...@@ -33,18 +33,12 @@ namespace svgio
SvgDocument::~SvgDocument() SvgDocument::~SvgDocument()
{ {
while(!maNodes.empty())
{
SvgNode* pCandidate = maNodes[maNodes.size() - 1];
delete pCandidate;
maNodes.pop_back();
}
} }
void SvgDocument::appendNode(SvgNode* pNode) void SvgDocument::appendNode(std::unique_ptr<SvgNode> pNode)
{ {
OSL_ENSURE(pNode, "OOps, empty node added (!)"); assert(pNode);
maNodes.push_back(pNode); maNodes.push_back(std::move(pNode));
} }
void SvgDocument::addSvgNodeToMapper(const OUString& rStr, const SvgNode& rNode) void SvgDocument::addSvgNodeToMapper(const OUString& rStr, const SvgNode& rNode)
......
...@@ -153,7 +153,8 @@ namespace svgio ...@@ -153,7 +153,8 @@ namespace svgio
mpTarget = const_cast< SvgNode* >(mpTarget->getParent()); mpTarget = const_cast< SvgNode* >(mpTarget->getParent());
const SvgNodeVector& rOwnedTopLevels = maDocument.getSvgNodeVector(); const SvgNodeVector& rOwnedTopLevels = maDocument.getSvgNodeVector();
if (std::find(rOwnedTopLevels.begin(), rOwnedTopLevels.end(), mpTarget) == rOwnedTopLevels.end()) if (std::none_of(rOwnedTopLevels.begin(), rOwnedTopLevels.end(),
[&](std::unique_ptr<SvgNode> const & p) { return p.get() == mpTarget; }))
delete mpTarget; delete mpTarget;
} }
OSL_ENSURE(!maCssContents.size(), "SvgDocHdl destructed with active css style stack entry (!)"); OSL_ENSURE(!maCssContents.size(), "SvgDocHdl destructed with active css style stack entry (!)");
...@@ -487,7 +488,7 @@ namespace svgio ...@@ -487,7 +488,7 @@ namespace svgio
if(!mpTarget->getParent()) if(!mpTarget->getParent())
{ {
// last element closing, save this tree // last element closing, save this tree
maDocument.appendNode(mpTarget); maDocument.appendNode(std::unique_ptr<SvgNode>(mpTarget));
} }
mpTarget = const_cast< SvgNode* >(mpTarget->getParent()); mpTarget = const_cast< SvgNode* >(mpTarget->getParent());
......
...@@ -143,13 +143,8 @@ namespace svgio ...@@ -143,13 +143,8 @@ namespace svgio
} }
// decompose to primitives // decompose to primitives
const SvgNodeVector& rResults = pSvgDocHdl->getSvgDocument().getSvgNodeVector(); for(std::unique_ptr<SvgNode> const & pCandidate : pSvgDocHdl->getSvgDocument().getSvgNodeVector())
const sal_uInt32 nCount(rResults.size());
for(sal_uInt32 a(0); a < nCount; a++)
{ {
SvgNode* pCandidate = rResults[a];
if(Display_none != pCandidate->getDisplay()) if(Display_none != pCandidate->getDisplay())
{ {
pCandidate->decomposeSvgNode(aRetval, false); pCandidate->decomposeSvgNode(aRetval, false);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment