[Libreoffice-commits] libcdr.git: 8 commits - src/lib

David Tardon dtardon at redhat.com
Sat Mar 24 16:23:16 UTC 2018


 src/lib/CDRContentCollector.cpp  |   13 --
 src/lib/CDRContentCollector.h    |    3 
 src/lib/CDRDocument.cpp          |   11 +-
 src/lib/CDROutputElementList.cpp |  179 +++++++++++----------------------------
 src/lib/CDROutputElementList.h   |    7 -
 src/lib/CDRParser.cpp            |    4 
 src/lib/CDRParser.h              |    7 -
 src/lib/CDRPath.cpp              |  168 +++++++++++++++++-------------------
 src/lib/CDRPath.h                |    9 +
 src/lib/libcdr_utils.h           |    7 +
 10 files changed, 164 insertions(+), 244 deletions(-)

New commits:
commit 517dbbed46ee34710d0346dbe84c9fbe6a426e7d
Author: David Tardon <dtardon at redhat.com>
Date:   Sat Mar 24 17:22:15 2018 +0100

    drop unused headers
    
    Change-Id: I44a999f25ea14a73737019350d40dd4ebb982854

diff --git a/src/lib/CDRParser.h b/src/lib/CDRParser.h
index 4bb79d6..242736d 100644
--- a/src/lib/CDRParser.h
+++ b/src/lib/CDRParser.h
@@ -10,8 +10,6 @@
 #ifndef __CDRPARSER_H__
 #define __CDRPARSER_H__
 
-#include <stdio.h>
-#include <iostream>
 #include <memory>
 #include <vector>
 #include <map>
commit 7c9f013d8924407c88515533a1a5703282b075dc
Author: David Tardon <dtardon at redhat.com>
Date:   Sat Mar 24 17:21:45 2018 +0100

    use unique_ptr
    
    Change-Id: I8954729882f578f59ec15bef193737736281a940

diff --git a/src/lib/CDRDocument.cpp b/src/lib/CDRDocument.cpp
index 96f652e..73a9527 100644
--- a/src/lib/CDRDocument.cpp
+++ b/src/lib/CDRDocument.cpp
@@ -117,7 +117,7 @@ CDRAPI bool libcdr::CDRDocument::parse(librevenge::RVNGInputStream *input_, libr
       input->seek(0, librevenge::RVNG_SEEK_SET);
       CDRParserState ps;
       CDRStylesCollector stylesCollector(ps);
-      CDRParser stylesParser(std::vector<librevenge::RVNGInputStream *>(), &stylesCollector);
+      CDRParser stylesParser(std::vector<std::unique_ptr<librevenge::RVNGInputStream>>(), &stylesCollector);
       if (version >= 300)
         retVal = stylesParser.parseRecords(input.get());
       else
@@ -128,7 +128,7 @@ CDRAPI bool libcdr::CDRDocument::parse(librevenge::RVNGInputStream *input_, libr
       {
         input->seek(0, librevenge::RVNG_SEEK_SET);
         CDRContentCollector contentCollector(ps, painter);
-        CDRParser contentParser(std::vector<librevenge::RVNGInputStream *>(), &contentCollector);
+        CDRParser contentParser(std::vector<std::unique_ptr<librevenge::RVNGInputStream>>(), &contentCollector);
         if (version >= 300)
           retVal = contentParser.parseRecords(input.get());
         else
@@ -144,7 +144,6 @@ CDRAPI bool libcdr::CDRDocument::parse(librevenge::RVNGInputStream *input_, libr
   }
 
   librevenge::RVNGInputStream *tmpInput = input_;
-  std::vector<librevenge::RVNGInputStream *> dataStreams;
   try
   {
     std::vector<std::string> dataFiles;
@@ -179,6 +178,7 @@ CDRAPI bool libcdr::CDRDocument::parse(librevenge::RVNGInputStream *input_, libr
         }
       }
     }
+    std::vector<std::unique_ptr<librevenge::RVNGInputStream>> dataStreams;
     dataStreams.reserve(dataFiles.size());
     for (const auto &dataFile : dataFiles)
     {
@@ -186,7 +186,8 @@ CDRAPI bool libcdr::CDRDocument::parse(librevenge::RVNGInputStream *input_, libr
       streamName += dataFile;
       CDR_DEBUG_MSG(("Extracting stream: %s\n", streamName.c_str()));
       tmpInput->seek(0, librevenge::RVNG_SEEK_SET);
-      dataStreams.push_back(tmpInput->getSubStreamByName(streamName.c_str()));
+      std::unique_ptr<librevenge::RVNGInputStream> strm(tmpInput->getSubStreamByName(streamName.c_str()));
+      dataStreams.push_back(std::move(strm));
     }
     if (!input)
       input.reset(tmpInput, CDRDummyDeleter());
@@ -223,8 +224,6 @@ CDRAPI bool libcdr::CDRDocument::parse(librevenge::RVNGInputStream *input_, libr
   {
     retVal = false;
   }
-  for (auto &dataStream : dataStreams)
-    delete dataStream;
   return retVal;
 }
 
diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp
index 4e7956e..e58fbca 100644
--- a/src/lib/CDRParser.cpp
+++ b/src/lib/CDRParser.cpp
@@ -157,7 +157,7 @@ void normalizeAngle(double &angle)
 
 } // anonymous namespace
 
-libcdr::CDRParser::CDRParser(const std::vector<librevenge::RVNGInputStream *> &externalStreams, libcdr::CDRCollector *collector)
+libcdr::CDRParser::CDRParser(const std::vector<std::unique_ptr<librevenge::RVNGInputStream>> &externalStreams, libcdr::CDRCollector *collector)
   : CommonParser(collector), m_externalStreams(externalStreams),
     m_fonts(), m_fillStyles(), m_lineStyles(), m_arrows(), m_version(0), m_waldoOutlId(0), m_waldoFillId(0) {}
 
@@ -2427,7 +2427,7 @@ bool libcdr::CDRParser::_redirectX6Chunk(librevenge::RVNGInputStream **input, un
     if (streamNumber < m_externalStreams.size())
     {
       unsigned streamOffset = readU32(*input);
-      *input = m_externalStreams[streamNumber];
+      *input = m_externalStreams[streamNumber].get();
       if (*input)
       {
         (*input)->seek(streamOffset, librevenge::RVNG_SEEK_SET);
diff --git a/src/lib/CDRParser.h b/src/lib/CDRParser.h
index 8ce7887..4bb79d6 100644
--- a/src/lib/CDRParser.h
+++ b/src/lib/CDRParser.h
@@ -12,6 +12,7 @@
 
 #include <stdio.h>
 #include <iostream>
+#include <memory>
 #include <vector>
 #include <map>
 #include <stack>
@@ -27,7 +28,7 @@ class CDRCollector;
 class CDRParser : protected CommonParser
 {
 public:
-  explicit CDRParser(const std::vector<librevenge::RVNGInputStream *> &externalStreams, CDRCollector *collector);
+  explicit CDRParser(const std::vector<std::unique_ptr<librevenge::RVNGInputStream>> &externalStreams, CDRCollector *collector);
   ~CDRParser() override;
   bool parseRecords(librevenge::RVNGInputStream *input, const std::vector<unsigned> &blockLengths = std::vector<unsigned>(), unsigned level = 0);
   bool parseWaldo(librevenge::RVNGInputStream *input);
@@ -96,7 +97,7 @@ private:
   bool _redirectX6Chunk(librevenge::RVNGInputStream **input, unsigned &length);
   void _readX6StyleString(librevenge::RVNGInputStream *input, unsigned length, CDRStyle &style);
 
-  std::vector<librevenge::RVNGInputStream *> m_externalStreams;
+  const std::vector<std::unique_ptr<librevenge::RVNGInputStream>> &m_externalStreams;
 
   std::map<unsigned, CDRFont> m_fonts;
   std::map<unsigned, CDRFillStyle> m_fillStyles;
commit fe04e802d5be570709a07d40237ef6bf468578f7
Author: David Tardon <dtardon at redhat.com>
Date:   Sat Mar 24 17:11:55 2018 +0100

    use unique_ptr
    
    Change-Id: I4b1dafc395c8dc2a891ea6541abfee23e30b2353

diff --git a/src/lib/CDRContentCollector.cpp b/src/lib/CDRContentCollector.cpp
index c8a556f..683d8fd 100644
--- a/src/lib/CDRContentCollector.cpp
+++ b/src/lib/CDRContentCollector.cpp
@@ -66,7 +66,7 @@ libcdr::CDRContentCollector::CDRContentCollector(libcdr::CDRParserState &ps, lib
     m_ignorePage(false), m_page(ps.m_pages[0]), m_pageIndex(0), m_currentFillStyle(), m_currentLineStyle(),
     m_spnd(0), m_currentObjectLevel(0), m_currentGroupLevel(0), m_currentVectLevel(0), m_currentPageLevel(0),
     m_currentStyleId(0), m_currentImage(), m_currentText(nullptr), m_currentBBox(), m_currentTextBox(), m_currentPath(),
-    m_currentTransforms(), m_fillTransforms(), m_polygon(nullptr), m_isInPolygon(false), m_isInSpline(false),
+    m_currentTransforms(), m_fillTransforms(), m_polygon(), m_isInPolygon(false), m_isInSpline(false),
     m_outputElementsStack(nullptr), m_contentOutputElementsStack(), m_fillOutputElementsStack(),
     m_outputElementsQueue(nullptr), m_contentOutputElementsQueue(), m_fillOutputElementsQueue(),
     m_groupLevels(), m_groupTransforms(), m_splineData(), m_fillOpacity(1.0), m_reverseOrder(reverseOrder),
@@ -82,7 +82,6 @@ libcdr::CDRContentCollector::~CDRContentCollector()
     _endPage();
   if (m_isDocumentStarted)
     _endDocument();
-  delete m_polygon;
 }
 
 void libcdr::CDRContentCollector::_startDocument()
@@ -222,11 +221,7 @@ void libcdr::CDRContentCollector::_flushCurrentPath()
   {
     if (m_polygon && m_isInPolygon)
       m_polygon->create(m_currentPath);
-    if (m_polygon)
-    {
-      delete m_polygon;
-      m_polygon = nullptr;
-    }
+    m_polygon.reset();
     m_isInPolygon = false;
     if (!m_splineData.empty() && m_isInSpline)
       m_splineData.create(m_currentPath);
@@ -682,9 +677,7 @@ void libcdr::CDRContentCollector::collectSpline()
 
 void libcdr::CDRContentCollector::collectPolygonTransform(unsigned numAngles, unsigned nextPoint, double rx, double ry, double cx, double cy)
 {
-  if (m_polygon)
-    delete m_polygon;
-  m_polygon = new CDRPolygon(numAngles, nextPoint, rx, ry, cx, cy);
+  m_polygon.reset(new CDRPolygon(numAngles, nextPoint, rx, ry, cx, cy));
 }
 
 void libcdr::CDRContentCollector::_fillProperties(librevenge::RVNGPropertyList &propList)
diff --git a/src/lib/CDRContentCollector.h b/src/lib/CDRContentCollector.h
index e0cbf86..2eae18c 100644
--- a/src/lib/CDRContentCollector.h
+++ b/src/lib/CDRContentCollector.h
@@ -11,6 +11,7 @@
 #define __CDRCONTENTCOLLECTOR_H__
 
 #include <map>
+#include <memory>
 #include <utility>
 #include <vector>
 #include <stack>
@@ -107,7 +108,7 @@ private:
   CDRPath m_currentPath;
   CDRTransforms m_currentTransforms;
   CDRTransforms m_fillTransforms;
-  CDRPolygon *m_polygon;
+  std::unique_ptr<CDRPolygon> m_polygon;
   bool m_isInPolygon;
   bool m_isInSpline;
   std::stack<CDROutputElementList> *m_outputElementsStack;
commit 7807ebc00aafe62d8c54f66c1297e49e48f9cc43
Author: David Tardon <dtardon at redhat.com>
Date:   Sat Mar 24 17:07:52 2018 +0100

    use shared_ptr
    
    Change-Id: I40a15f55f3681bc8a70a079d8ee8a80c748639df

diff --git a/src/lib/CDROutputElementList.cpp b/src/lib/CDROutputElementList.cpp
index 12b142e..001f9dc 100644
--- a/src/lib/CDROutputElementList.cpp
+++ b/src/lib/CDROutputElementList.cpp
@@ -102,7 +102,6 @@ public:
   CDROutputElement() {}
   virtual ~CDROutputElement() {}
   virtual void draw(librevenge::RVNGDrawingInterface *painter) = 0;
-  virtual CDROutputElement *clone() = 0;
 };
 
 
@@ -112,10 +111,6 @@ public:
   CDRStyleOutputElement(const librevenge::RVNGPropertyList &propList);
   ~CDRStyleOutputElement() override {}
   void draw(librevenge::RVNGDrawingInterface *painter) override;
-  CDROutputElement *clone() override
-  {
-    return new CDRStyleOutputElement(m_propList);
-  }
 private:
   librevenge::RVNGPropertyList m_propList;
 };
@@ -127,10 +122,6 @@ public:
   CDRPathOutputElement(const librevenge::RVNGPropertyList &propList);
   ~CDRPathOutputElement() override {}
   void draw(librevenge::RVNGDrawingInterface *painter) override;
-  CDROutputElement *clone() override
-  {
-    return new CDRPathOutputElement(m_propList);
-  }
 private:
   librevenge::RVNGPropertyList m_propList;
 };
@@ -142,10 +133,6 @@ public:
   CDRGraphicObjectOutputElement(const librevenge::RVNGPropertyList &propList);
   ~CDRGraphicObjectOutputElement() override {}
   void draw(librevenge::RVNGDrawingInterface *painter) override;
-  CDROutputElement *clone() override
-  {
-    return new CDRGraphicObjectOutputElement(m_propList);
-  }
 private:
   librevenge::RVNGPropertyList m_propList;
 };
@@ -157,10 +144,6 @@ public:
   CDRStartTextObjectOutputElement(const librevenge::RVNGPropertyList &propList);
   ~CDRStartTextObjectOutputElement() override {}
   void draw(librevenge::RVNGDrawingInterface *painter) override;
-  CDROutputElement *clone() override
-  {
-    return new CDRStartTextObjectOutputElement(m_propList);
-  }
 private:
   librevenge::RVNGPropertyList m_propList;
 };
@@ -172,10 +155,6 @@ public:
   CDROpenParagraphOutputElement(const librevenge::RVNGPropertyList &propList);
   ~CDROpenParagraphOutputElement() override {}
   void draw(librevenge::RVNGDrawingInterface *painter) override;
-  CDROutputElement *clone() override
-  {
-    return new CDROpenParagraphOutputElement(m_propList);
-  }
 private:
   librevenge::RVNGPropertyList m_propList;
 };
@@ -187,10 +166,6 @@ public:
   CDROpenSpanOutputElement(const librevenge::RVNGPropertyList &propList);
   ~CDROpenSpanOutputElement() override {}
   void draw(librevenge::RVNGDrawingInterface *painter) override;
-  CDROutputElement *clone() override
-  {
-    return new CDROpenSpanOutputElement(m_propList);
-  }
 private:
   librevenge::RVNGPropertyList m_propList;
 };
@@ -202,10 +177,6 @@ public:
   CDRInsertTextOutputElement(const librevenge::RVNGString &text);
   ~CDRInsertTextOutputElement() override {}
   void draw(librevenge::RVNGDrawingInterface *painter) override;
-  CDROutputElement *clone() override
-  {
-    return new CDRInsertTextOutputElement(m_text);
-  }
 private:
   librevenge::RVNGString m_text;
 };
@@ -217,10 +188,6 @@ public:
   CDRCloseSpanOutputElement();
   ~CDRCloseSpanOutputElement() override {}
   void draw(librevenge::RVNGDrawingInterface *painter) override;
-  CDROutputElement *clone() override
-  {
-    return new CDRCloseSpanOutputElement();
-  }
 };
 
 
@@ -230,10 +197,6 @@ public:
   CDRCloseParagraphOutputElement();
   ~CDRCloseParagraphOutputElement() override {}
   void draw(librevenge::RVNGDrawingInterface *painter) override;
-  CDROutputElement *clone() override
-  {
-    return new CDRCloseParagraphOutputElement();
-  }
 };
 
 
@@ -243,10 +206,6 @@ public:
   CDREndTextObjectOutputElement();
   ~CDREndTextObjectOutputElement() override {}
   void draw(librevenge::RVNGDrawingInterface *painter) override;
-  CDROutputElement *clone() override
-  {
-    return new CDREndTextObjectOutputElement();
-  }
 };
 
 class CDRStartLayerOutputElement : public CDROutputElement
@@ -255,10 +214,6 @@ public:
   CDRStartLayerOutputElement(const librevenge::RVNGPropertyList &propList);
   ~CDRStartLayerOutputElement() override {}
   void draw(librevenge::RVNGDrawingInterface *painter) override;
-  CDROutputElement *clone() override
-  {
-    return new CDRStartLayerOutputElement(m_propList);
-  }
 private:
   librevenge::RVNGPropertyList m_propList;
 };
@@ -269,10 +224,6 @@ public:
   CDREndLayerOutputElement();
   ~CDREndLayerOutputElement() override {}
   void draw(librevenge::RVNGDrawingInterface *painter) override;
-  CDROutputElement *clone() override
-  {
-    return new CDREndLayerOutputElement();
-  }
 };
 
 CDRStyleOutputElement::CDRStyleOutputElement(const librevenge::RVNGPropertyList &propList) :
@@ -394,32 +345,8 @@ CDROutputElementList::CDROutputElementList()
 {
 }
 
-CDROutputElementList::CDROutputElementList(const CDROutputElementList &elementList)
-  : m_elements()
-{
-  std::vector<CDROutputElement *>::const_iterator iter;
-  for (iter = elementList.m_elements.begin(); iter != elementList.m_elements.end(); ++iter)
-    m_elements.push_back((*iter)->clone());
-}
-
-CDROutputElementList &CDROutputElementList::operator=(const CDROutputElementList &elementList)
-{
-  for (auto &element : m_elements)
-    delete element;
-
-  m_elements.clear();
-
-  for (auto element : elementList.m_elements)
-    m_elements.push_back(element->clone());
-
-  return *this;
-}
-
 CDROutputElementList::~CDROutputElementList()
 {
-  for (auto &element : m_elements)
-    delete element;
-  m_elements.clear();
 }
 
 void CDROutputElementList::draw(librevenge::RVNGDrawingInterface *painter) const
@@ -430,62 +357,62 @@ void CDROutputElementList::draw(librevenge::RVNGDrawingInterface *painter) const
 
 void CDROutputElementList::addStyle(const librevenge::RVNGPropertyList &propList)
 {
-  m_elements.push_back(new CDRStyleOutputElement(propList));
+  m_elements.push_back(std::make_shared<CDRStyleOutputElement>(propList));
 }
 
 void CDROutputElementList::addPath(const librevenge::RVNGPropertyList &propList)
 {
-  m_elements.push_back(new CDRPathOutputElement(propList));
+  m_elements.push_back(std::make_shared<CDRPathOutputElement>(propList));
 }
 
 void CDROutputElementList::addGraphicObject(const librevenge::RVNGPropertyList &propList)
 {
-  m_elements.push_back(new CDRGraphicObjectOutputElement(propList));
+  m_elements.push_back(std::make_shared<CDRGraphicObjectOutputElement>(propList));
 }
 
 void CDROutputElementList::addStartTextObject(const librevenge::RVNGPropertyList &propList)
 {
-  m_elements.push_back(new CDRStartTextObjectOutputElement(propList));
+  m_elements.push_back(std::make_shared<CDRStartTextObjectOutputElement>(propList));
 }
 
 void CDROutputElementList::addOpenParagraph(const librevenge::RVNGPropertyList &propList)
 {
-  m_elements.push_back(new CDROpenParagraphOutputElement(propList));
+  m_elements.push_back(std::make_shared<CDROpenParagraphOutputElement>(propList));
 }
 
 void CDROutputElementList::addOpenSpan(const librevenge::RVNGPropertyList &propList)
 {
-  m_elements.push_back(new CDROpenSpanOutputElement(propList));
+  m_elements.push_back(std::make_shared<CDROpenSpanOutputElement>(propList));
 }
 
 void CDROutputElementList::addInsertText(const librevenge::RVNGString &text)
 {
-  m_elements.push_back(new CDRInsertTextOutputElement(text));
+  m_elements.push_back(std::make_shared<CDRInsertTextOutputElement>(text));
 }
 
 void CDROutputElementList::addCloseSpan()
 {
-  m_elements.push_back(new CDRCloseSpanOutputElement());
+  m_elements.push_back(std::make_shared<CDRCloseSpanOutputElement>());
 }
 
 void CDROutputElementList::addCloseParagraph()
 {
-  m_elements.push_back(new CDRCloseParagraphOutputElement());
+  m_elements.push_back(std::make_shared<CDRCloseParagraphOutputElement>());
 }
 
 void CDROutputElementList::addEndTextObject()
 {
-  m_elements.push_back(new CDREndTextObjectOutputElement());
+  m_elements.push_back(std::make_shared<CDREndTextObjectOutputElement>());
 }
 
 void CDROutputElementList::addStartGroup(const librevenge::RVNGPropertyList &propList)
 {
-  m_elements.push_back(new CDRStartLayerOutputElement(propList));
+  m_elements.push_back(std::make_shared<CDRStartLayerOutputElement>(propList));
 }
 
 void CDROutputElementList::addEndGroup()
 {
-  m_elements.push_back(new CDREndLayerOutputElement());
+  m_elements.push_back(std::make_shared<CDREndLayerOutputElement>());
 }
 
 } // namespace libcdr
diff --git a/src/lib/CDROutputElementList.h b/src/lib/CDROutputElementList.h
index d1a4991..f5bba06 100644
--- a/src/lib/CDROutputElementList.h
+++ b/src/lib/CDROutputElementList.h
@@ -10,6 +10,7 @@
 #ifndef __CDROUTPUTELEMENTLIST_H__
 #define __CDROUTPUTELEMENTLIST_H__
 
+#include <memory>
 #include <vector>
 
 #include <librevenge/librevenge.h>
@@ -23,9 +24,7 @@ class CDROutputElementList
 {
 public:
   CDROutputElementList();
-  CDROutputElementList(const CDROutputElementList &elementList);
-  CDROutputElementList &operator=(const CDROutputElementList &elementList);
-  virtual ~CDROutputElementList();
+  ~CDROutputElementList();
   void draw(librevenge::RVNGDrawingInterface *painter) const;
   void addStyle(const librevenge::RVNGPropertyList &propList);
   void addPath(const librevenge::RVNGPropertyList &propList);
@@ -44,7 +43,7 @@ public:
     return m_elements.empty();
   }
 private:
-  std::vector<CDROutputElement *> m_elements;
+  std::vector<std::shared_ptr<CDROutputElement>> m_elements;
 };
 
 
commit 7bd7f56e86d5f6b87d402c34072d4054474ae473
Author: David Tardon <dtardon at redhat.com>
Date:   Sat Mar 24 17:04:36 2018 +0100

    put the whole impl. in libcdr namespace
    
    Change-Id: Id0571b26ed037c5ec9d455599d96bad6eaf8ae3d

diff --git a/src/lib/CDROutputElementList.cpp b/src/lib/CDROutputElementList.cpp
index c1de564..12b142e 100644
--- a/src/lib/CDROutputElementList.cpp
+++ b/src/lib/CDROutputElementList.cpp
@@ -275,136 +275,134 @@ public:
   }
 };
 
-} // namespace libcdr
-
-libcdr::CDRStyleOutputElement::CDRStyleOutputElement(const librevenge::RVNGPropertyList &propList) :
+CDRStyleOutputElement::CDRStyleOutputElement(const librevenge::RVNGPropertyList &propList) :
   m_propList(propList) {}
 
-void libcdr::CDRStyleOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDRStyleOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
 {
   if (painter)
     painter->setStyle(m_propList);
 }
 
 
-libcdr::CDRPathOutputElement::CDRPathOutputElement(const librevenge::RVNGPropertyList &propList) :
+CDRPathOutputElement::CDRPathOutputElement(const librevenge::RVNGPropertyList &propList) :
   m_propList(propList) {}
 
-void libcdr::CDRPathOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDRPathOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
 {
   if (painter)
     painter->drawPath(m_propList);
 }
 
 
-libcdr::CDRGraphicObjectOutputElement::CDRGraphicObjectOutputElement(const librevenge::RVNGPropertyList &propList) :
+CDRGraphicObjectOutputElement::CDRGraphicObjectOutputElement(const librevenge::RVNGPropertyList &propList) :
   m_propList(propList) {}
 
-void libcdr::CDRGraphicObjectOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDRGraphicObjectOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
 {
   if (painter)
     painter->drawGraphicObject(m_propList);
 }
 
 
-libcdr::CDRStartTextObjectOutputElement::CDRStartTextObjectOutputElement(const librevenge::RVNGPropertyList &propList) :
+CDRStartTextObjectOutputElement::CDRStartTextObjectOutputElement(const librevenge::RVNGPropertyList &propList) :
   m_propList(propList) {}
 
-void libcdr::CDRStartTextObjectOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDRStartTextObjectOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
 {
   if (painter)
     painter->startTextObject(m_propList);
 }
 
-libcdr::CDROpenSpanOutputElement::CDROpenSpanOutputElement(const librevenge::RVNGPropertyList &propList) :
+CDROpenSpanOutputElement::CDROpenSpanOutputElement(const librevenge::RVNGPropertyList &propList) :
   m_propList(propList) {}
 
-void libcdr::CDROpenSpanOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDROpenSpanOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
 {
   if (painter)
     painter->openSpan(m_propList);
 }
 
 
-libcdr::CDROpenParagraphOutputElement::CDROpenParagraphOutputElement(const librevenge::RVNGPropertyList &propList) :
+CDROpenParagraphOutputElement::CDROpenParagraphOutputElement(const librevenge::RVNGPropertyList &propList) :
   m_propList(propList) {}
 
-void libcdr::CDROpenParagraphOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDROpenParagraphOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
 {
   if (painter)
     painter->openParagraph(m_propList);
 }
 
 
-libcdr::CDRInsertTextOutputElement::CDRInsertTextOutputElement(const librevenge::RVNGString &text) :
+CDRInsertTextOutputElement::CDRInsertTextOutputElement(const librevenge::RVNGString &text) :
   m_text(text) {}
 
-void libcdr::CDRInsertTextOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDRInsertTextOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
 {
   if (painter)
     separateSpacesAndInsertText(painter, m_text);
 }
 
-libcdr::CDRCloseSpanOutputElement::CDRCloseSpanOutputElement() {}
+CDRCloseSpanOutputElement::CDRCloseSpanOutputElement() {}
 
-void libcdr::CDRCloseSpanOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDRCloseSpanOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
 {
   if (painter)
     painter->closeSpan();
 }
 
 
-libcdr::CDRCloseParagraphOutputElement::CDRCloseParagraphOutputElement() {}
+CDRCloseParagraphOutputElement::CDRCloseParagraphOutputElement() {}
 
-void libcdr::CDRCloseParagraphOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDRCloseParagraphOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
 {
   if (painter)
     painter->closeParagraph();
 }
 
 
-libcdr::CDREndTextObjectOutputElement::CDREndTextObjectOutputElement() {}
+CDREndTextObjectOutputElement::CDREndTextObjectOutputElement() {}
 
-void libcdr::CDREndTextObjectOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDREndTextObjectOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
 {
   if (painter)
     painter->endTextObject();
 }
 
 
-libcdr::CDREndLayerOutputElement::CDREndLayerOutputElement() {}
+CDREndLayerOutputElement::CDREndLayerOutputElement() {}
 
-void libcdr::CDREndLayerOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDREndLayerOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
 {
   if (painter)
     painter->endLayer();
 }
 
 
-libcdr::CDRStartLayerOutputElement::CDRStartLayerOutputElement(const librevenge::RVNGPropertyList &propList) :
+CDRStartLayerOutputElement::CDRStartLayerOutputElement(const librevenge::RVNGPropertyList &propList) :
   m_propList(propList) {}
 
-void libcdr::CDRStartLayerOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
+void CDRStartLayerOutputElement::draw(librevenge::RVNGDrawingInterface *painter)
 {
   if (painter)
     painter->startLayer(m_propList);
 }
 
 
-libcdr::CDROutputElementList::CDROutputElementList()
+CDROutputElementList::CDROutputElementList()
   : m_elements()
 {
 }
 
-libcdr::CDROutputElementList::CDROutputElementList(const libcdr::CDROutputElementList &elementList)
+CDROutputElementList::CDROutputElementList(const CDROutputElementList &elementList)
   : m_elements()
 {
-  std::vector<libcdr::CDROutputElement *>::const_iterator iter;
+  std::vector<CDROutputElement *>::const_iterator iter;
   for (iter = elementList.m_elements.begin(); iter != elementList.m_elements.end(); ++iter)
     m_elements.push_back((*iter)->clone());
 }
 
-libcdr::CDROutputElementList &libcdr::CDROutputElementList::operator=(const libcdr::CDROutputElementList &elementList)
+CDROutputElementList &CDROutputElementList::operator=(const CDROutputElementList &elementList)
 {
   for (auto &element : m_elements)
     delete element;
@@ -417,77 +415,79 @@ libcdr::CDROutputElementList &libcdr::CDROutputElementList::operator=(const libc
   return *this;
 }
 
-libcdr::CDROutputElementList::~CDROutputElementList()
+CDROutputElementList::~CDROutputElementList()
 {
   for (auto &element : m_elements)
     delete element;
   m_elements.clear();
 }
 
-void libcdr::CDROutputElementList::draw(librevenge::RVNGDrawingInterface *painter) const
+void CDROutputElementList::draw(librevenge::RVNGDrawingInterface *painter) const
 {
   for (auto element : m_elements)
     element->draw(painter);
 }
 
-void libcdr::CDROutputElementList::addStyle(const librevenge::RVNGPropertyList &propList)
+void CDROutputElementList::addStyle(const librevenge::RVNGPropertyList &propList)
 {
   m_elements.push_back(new CDRStyleOutputElement(propList));
 }
 
-void libcdr::CDROutputElementList::addPath(const librevenge::RVNGPropertyList &propList)
+void CDROutputElementList::addPath(const librevenge::RVNGPropertyList &propList)
 {
   m_elements.push_back(new CDRPathOutputElement(propList));
 }
 
-void libcdr::CDROutputElementList::addGraphicObject(const librevenge::RVNGPropertyList &propList)
+void CDROutputElementList::addGraphicObject(const librevenge::RVNGPropertyList &propList)
 {
   m_elements.push_back(new CDRGraphicObjectOutputElement(propList));
 }
 
-void libcdr::CDROutputElementList::addStartTextObject(const librevenge::RVNGPropertyList &propList)
+void CDROutputElementList::addStartTextObject(const librevenge::RVNGPropertyList &propList)
 {
   m_elements.push_back(new CDRStartTextObjectOutputElement(propList));
 }
 
-void libcdr::CDROutputElementList::addOpenParagraph(const librevenge::RVNGPropertyList &propList)
+void CDROutputElementList::addOpenParagraph(const librevenge::RVNGPropertyList &propList)
 {
   m_elements.push_back(new CDROpenParagraphOutputElement(propList));
 }
 
-void libcdr::CDROutputElementList::addOpenSpan(const librevenge::RVNGPropertyList &propList)
+void CDROutputElementList::addOpenSpan(const librevenge::RVNGPropertyList &propList)
 {
   m_elements.push_back(new CDROpenSpanOutputElement(propList));
 }
 
-void libcdr::CDROutputElementList::addInsertText(const librevenge::RVNGString &text)
+void CDROutputElementList::addInsertText(const librevenge::RVNGString &text)
 {
   m_elements.push_back(new CDRInsertTextOutputElement(text));
 }
 
-void libcdr::CDROutputElementList::addCloseSpan()
+void CDROutputElementList::addCloseSpan()
 {
   m_elements.push_back(new CDRCloseSpanOutputElement());
 }
 
-void libcdr::CDROutputElementList::addCloseParagraph()
+void CDROutputElementList::addCloseParagraph()
 {
   m_elements.push_back(new CDRCloseParagraphOutputElement());
 }
 
-void libcdr::CDROutputElementList::addEndTextObject()
+void CDROutputElementList::addEndTextObject()
 {
   m_elements.push_back(new CDREndTextObjectOutputElement());
 }
 
-void libcdr::CDROutputElementList::addStartGroup(const librevenge::RVNGPropertyList &propList)
+void CDROutputElementList::addStartGroup(const librevenge::RVNGPropertyList &propList)
 {
   m_elements.push_back(new CDRStartLayerOutputElement(propList));
 }
 
-void libcdr::CDROutputElementList::addEndGroup()
+void CDROutputElementList::addEndGroup()
 {
   m_elements.push_back(new CDREndLayerOutputElement());
 }
 
+} // namespace libcdr
+
 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
commit 53426f781068a9d72456b020223569d4d52252c0
Author: David Tardon <dtardon at redhat.com>
Date:   Sat Mar 24 17:02:00 2018 +0100

    put the whole impl. in libcdr namespace
    
    Change-Id: Ibf8e335d7ca43e1c6405da5d2137744ca995df47

diff --git a/src/lib/CDRPath.cpp b/src/lib/CDRPath.cpp
index 7d2f7a4..7cff9cf 100644
--- a/src/lib/CDRPath.cpp
+++ b/src/lib/CDRPath.cpp
@@ -19,6 +19,9 @@
 #define DEBUG_SPLINES 0
 #endif
 
+namespace libcdr
+{
+
 namespace
 {
 
@@ -219,9 +222,6 @@ static void getCubicBezierBBox(double x0, double y0, double x1, double y1, doubl
 
 } // anonymous namespace
 
-namespace libcdr
-{
-
 class CDRMoveToElement : public CDRPathElement
 {
 public:
@@ -350,10 +350,7 @@ public:
   std::unique_ptr<CDRPathElement> clone() override;
 };
 
-} // namespace libcdr
-
-
-void libcdr::CDRMoveToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
+void CDRMoveToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
 {
   librevenge::RVNGPropertyList node;
   node.insert("librevenge:path-action", "M");
@@ -362,22 +359,22 @@ void libcdr::CDRMoveToElement::writeOut(librevenge::RVNGPropertyListVector &vec)
   vec.append(node);
 }
 
-void libcdr::CDRMoveToElement::transform(const CDRTransforms &trafos)
+void CDRMoveToElement::transform(const CDRTransforms &trafos)
 {
   trafos.applyToPoint(m_x,m_y);
 }
 
-void libcdr::CDRMoveToElement::transform(const CDRTransform &trafo)
+void CDRMoveToElement::transform(const CDRTransform &trafo)
 {
   trafo.applyToPoint(m_x,m_y);
 }
 
-std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRMoveToElement::clone()
+std::unique_ptr<CDRPathElement> CDRMoveToElement::clone()
 {
   return make_unique<CDRMoveToElement>(m_x, m_y);
 }
 
-void libcdr::CDRLineToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
+void CDRLineToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
 {
   librevenge::RVNGPropertyList node;
   node.insert("librevenge:path-action", "L");
@@ -386,22 +383,22 @@ void libcdr::CDRLineToElement::writeOut(librevenge::RVNGPropertyListVector &vec)
   vec.append(node);
 }
 
-void libcdr::CDRLineToElement::transform(const CDRTransforms &trafos)
+void CDRLineToElement::transform(const CDRTransforms &trafos)
 {
   trafos.applyToPoint(m_x,m_y);
 }
 
-void libcdr::CDRLineToElement::transform(const CDRTransform &trafo)
+void CDRLineToElement::transform(const CDRTransform &trafo)
 {
   trafo.applyToPoint(m_x,m_y);
 }
 
-std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRLineToElement::clone()
+std::unique_ptr<CDRPathElement> CDRLineToElement::clone()
 {
   return make_unique<CDRLineToElement>(m_x, m_y);
 }
 
-void libcdr::CDRCubicBezierToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
+void CDRCubicBezierToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
 {
   librevenge::RVNGPropertyList node;
   node.insert("librevenge:path-action", "C");
@@ -414,26 +411,26 @@ void libcdr::CDRCubicBezierToElement::writeOut(librevenge::RVNGPropertyListVecto
   vec.append(node);
 }
 
-void libcdr::CDRCubicBezierToElement::transform(const CDRTransforms &trafos)
+void CDRCubicBezierToElement::transform(const CDRTransforms &trafos)
 {
   trafos.applyToPoint(m_x1,m_y1);
   trafos.applyToPoint(m_x2,m_y2);
   trafos.applyToPoint(m_x,m_y);
 }
 
-void libcdr::CDRCubicBezierToElement::transform(const CDRTransform &trafo)
+void CDRCubicBezierToElement::transform(const CDRTransform &trafo)
 {
   trafo.applyToPoint(m_x1,m_y1);
   trafo.applyToPoint(m_x2,m_y2);
   trafo.applyToPoint(m_x,m_y);
 }
 
-std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRCubicBezierToElement::clone()
+std::unique_ptr<CDRPathElement> CDRCubicBezierToElement::clone()
 {
   return make_unique<CDRCubicBezierToElement>(m_x1, m_y1, m_x2, m_y2, m_x, m_y);
 }
 
-void libcdr::CDRQuadraticBezierToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
+void CDRQuadraticBezierToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
 {
   librevenge::RVNGPropertyList node;
   node.insert("librevenge:path-action", "Q");
@@ -444,26 +441,26 @@ void libcdr::CDRQuadraticBezierToElement::writeOut(librevenge::RVNGPropertyListV
   vec.append(node);
 }
 
-void libcdr::CDRQuadraticBezierToElement::transform(const CDRTransforms &trafos)
+void CDRQuadraticBezierToElement::transform(const CDRTransforms &trafos)
 {
   trafos.applyToPoint(m_x1,m_y1);
   trafos.applyToPoint(m_x,m_y);
 }
 
-void libcdr::CDRQuadraticBezierToElement::transform(const CDRTransform &trafo)
+void CDRQuadraticBezierToElement::transform(const CDRTransform &trafo)
 {
   trafo.applyToPoint(m_x1,m_y1);
   trafo.applyToPoint(m_x,m_y);
 }
 
-std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRQuadraticBezierToElement::clone()
+std::unique_ptr<CDRPathElement> CDRQuadraticBezierToElement::clone()
 {
   return make_unique<CDRQuadraticBezierToElement>(m_x1, m_y1, m_x, m_y);
 }
 
 #define CDR_SPLINE_DEGREE 3
 
-unsigned libcdr::CDRSplineToElement::knot(unsigned i) const
+unsigned CDRSplineToElement::knot(unsigned i) const
 {
   /* Emulates knot vector of an uniform B-Spline of degree 3 */
   if (i < CDR_SPLINE_DEGREE)
@@ -473,7 +470,7 @@ unsigned libcdr::CDRSplineToElement::knot(unsigned i) const
   return i - CDR_SPLINE_DEGREE;
 }
 
-void libcdr::CDRSplineToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
+void CDRSplineToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
 {
   librevenge::RVNGPropertyList node;
 
@@ -570,24 +567,24 @@ void libcdr::CDRSplineToElement::writeOut(librevenge::RVNGPropertyListVector &ve
   }
 }
 
-void libcdr::CDRSplineToElement::transform(const CDRTransforms &trafos)
+void CDRSplineToElement::transform(const CDRTransforms &trafos)
 {
   for (auto &point : m_points)
     trafos.applyToPoint(point.first, point.second);
 }
 
-void libcdr::CDRSplineToElement::transform(const CDRTransform &trafo)
+void CDRSplineToElement::transform(const CDRTransform &trafo)
 {
   for (auto &point : m_points)
     trafo.applyToPoint(point.first, point.second);
 }
 
-std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRSplineToElement::clone()
+std::unique_ptr<CDRPathElement> CDRSplineToElement::clone()
 {
   return libcdr::make_unique<CDRSplineToElement>(m_points);
 }
 
-void libcdr::CDRArcToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
+void CDRArcToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
 {
   librevenge::RVNGPropertyList node;
   node.insert("librevenge:path-action", "A");
@@ -601,84 +598,84 @@ void libcdr::CDRArcToElement::writeOut(librevenge::RVNGPropertyListVector &vec)
   vec.append(node);
 }
 
-void libcdr::CDRArcToElement::transform(const CDRTransforms &trafos)
+void CDRArcToElement::transform(const CDRTransforms &trafos)
 {
   trafos.applyToArc(m_rx, m_ry, m_rotation, m_sweep, m_x, m_y);
 }
 
-void libcdr::CDRArcToElement::transform(const CDRTransform &trafo)
+void CDRArcToElement::transform(const CDRTransform &trafo)
 {
   trafo.applyToArc(m_rx, m_ry, m_rotation, m_sweep, m_x, m_y);
 }
 
-std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRArcToElement::clone()
+std::unique_ptr<CDRPathElement> CDRArcToElement::clone()
 {
   return make_unique<CDRArcToElement>(m_rx, m_ry, m_rotation, m_largeArc, m_sweep, m_x, m_y);
 }
 
-void libcdr::CDRClosePathElement::transform(const CDRTransforms &)
+void CDRClosePathElement::transform(const CDRTransforms &)
 {
 }
 
-void libcdr::CDRClosePathElement::transform(const CDRTransform &)
+void CDRClosePathElement::transform(const CDRTransform &)
 {
 }
 
-std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRClosePathElement::clone()
+std::unique_ptr<CDRPathElement> CDRClosePathElement::clone()
 {
   return make_unique<CDRClosePathElement>();
 }
 
-void libcdr::CDRClosePathElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
+void CDRClosePathElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
 {
   librevenge::RVNGPropertyList node;
   node.insert("librevenge:path-action", "Z");
   vec.append(node);
 }
 
-void libcdr::CDRPath::appendMoveTo(double x, double y)
+void CDRPath::appendMoveTo(double x, double y)
 {
-  m_elements.push_back(make_unique<libcdr::CDRMoveToElement>(x, y));
+  m_elements.push_back(make_unique<CDRMoveToElement>(x, y));
 }
 
-void libcdr::CDRPath::appendLineTo(double x, double y)
+void CDRPath::appendLineTo(double x, double y)
 {
-  m_elements.push_back(make_unique<libcdr::CDRLineToElement>(x, y));
+  m_elements.push_back(make_unique<CDRLineToElement>(x, y));
 }
 
-void libcdr::CDRPath::appendCubicBezierTo(double x1, double y1, double x2, double y2, double x, double y)
+void CDRPath::appendCubicBezierTo(double x1, double y1, double x2, double y2, double x, double y)
 {
-  m_elements.push_back(make_unique<libcdr::CDRCubicBezierToElement>(x1, y1, x2, y2, x, y));
+  m_elements.push_back(make_unique<CDRCubicBezierToElement>(x1, y1, x2, y2, x, y));
 }
 
-void libcdr::CDRPath::appendQuadraticBezierTo(double x1, double y1, double x, double y)
+void CDRPath::appendQuadraticBezierTo(double x1, double y1, double x, double y)
 {
-  m_elements.push_back(make_unique<libcdr::CDRQuadraticBezierToElement>(x1, y1, x, y));
+  m_elements.push_back(make_unique<CDRQuadraticBezierToElement>(x1, y1, x, y));
 }
 
-void libcdr::CDRPath::appendArcTo(double rx, double ry, double rotation, bool longAngle, bool sweep, double x, double y)
+void CDRPath::appendArcTo(double rx, double ry, double rotation, bool longAngle, bool sweep, double x, double y)
 {
-  m_elements.push_back(make_unique<libcdr::CDRArcToElement>(rx, ry, rotation, longAngle, sweep, x, y));
+  m_elements.push_back(make_unique<CDRArcToElement>(rx, ry, rotation, longAngle, sweep, x, y));
 }
 
-void libcdr::CDRPath::appendSplineTo(const std::vector<std::pair<double, double> > &points)
+void CDRPath::appendSplineTo(const std::vector<std::pair<double, double> > &points)
 {
-  m_elements.push_back(libcdr::make_unique<libcdr::CDRSplineToElement>(points));
+  m_elements.push_back(libcdr::make_unique<CDRSplineToElement>(points));
 }
 
-void libcdr::CDRPath::appendClosePath()
+void CDRPath::appendClosePath()
 {
-  m_elements.push_back(make_unique<libcdr::CDRClosePathElement>());
+  m_elements.push_back(make_unique<CDRClosePathElement>());
   m_isClosed = true;
 }
 
-libcdr::CDRPath::CDRPath(const libcdr::CDRPath &path) : m_elements(), m_isClosed(false)
+CDRPath::CDRPath(const CDRPath &path) : m_elements(), m_isClosed(false)
 {
   appendPath(path);
   m_isClosed = path.isClosed();
 }
 
-libcdr::CDRPath &libcdr::CDRPath::operator=(const libcdr::CDRPath &path)
+CDRPath &CDRPath::operator=(const CDRPath &path)
 {
   // Check for self-assignment
   if (this == &path)
@@ -690,17 +687,17 @@ libcdr::CDRPath &libcdr::CDRPath::operator=(const libcdr::CDRPath &path)
 }
 
 
-libcdr::CDRPath::~CDRPath()
+CDRPath::~CDRPath()
 {
 }
 
-void libcdr::CDRPath::appendPath(const CDRPath &path)
+void CDRPath::appendPath(const CDRPath &path)
 {
   for (const auto &element : path.m_elements)
     m_elements.push_back(element->clone());
 }
 
-void libcdr::CDRPath::writeOut(librevenge::RVNGPropertyListVector &vec) const
+void CDRPath::writeOut(librevenge::RVNGPropertyListVector &vec) const
 {
   bool wasZ = true;
   for (const auto &element : m_elements)
@@ -721,7 +718,7 @@ void libcdr::CDRPath::writeOut(librevenge::RVNGPropertyListVector &vec) const
   }
 }
 
-void libcdr::CDRPath::writeOut(librevenge::RVNGString &path, librevenge::RVNGString &viewBox, double &width) const
+void CDRPath::writeOut(librevenge::RVNGString &path, librevenge::RVNGString &viewBox, double &width) const
 {
   librevenge::RVNGPropertyListVector vec;
   writeOut(vec);
@@ -848,37 +845,39 @@ void libcdr::CDRPath::writeOut(librevenge::RVNGString &path, librevenge::RVNGStr
   }
 }
 
-void libcdr::CDRPath::transform(const CDRTransforms &trafos)
+void CDRPath::transform(const CDRTransforms &trafos)
 {
   for (auto &element : m_elements)
     element->transform(trafos);
 }
 
-void libcdr::CDRPath::transform(const CDRTransform &trafo)
+void CDRPath::transform(const CDRTransform &trafo)
 {
   for (auto &element : m_elements)
     element->transform(trafo);
 }
 
-std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRPath::clone()
+std::unique_ptr<CDRPathElement> CDRPath::clone()
 {
   return make_unique<CDRPath>(*this);
 }
 
-void libcdr::CDRPath::clear()
+void CDRPath::clear()
 {
   m_elements.clear();
   m_isClosed = false;
 }
 
-bool libcdr::CDRPath::empty() const
+bool CDRPath::empty() const
 {
   return m_elements.empty();
 }
 
-bool libcdr::CDRPath::isClosed() const
+bool CDRPath::isClosed() const
 {
   return m_isClosed;
 }
 
+}
+
 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
commit add9661aace5a96ca17976dad48a057ca4b548c3
Author: David Tardon <dtardon at redhat.com>
Date:   Sat Mar 24 17:00:18 2018 +0100

    use unique_ptr
    
    Change-Id: I83187bbbbe3c0dfdf7d1c4c59ddd4d8679ae9018

diff --git a/src/lib/CDRPath.cpp b/src/lib/CDRPath.cpp
index 1028b1f..7d2f7a4 100644
--- a/src/lib/CDRPath.cpp
+++ b/src/lib/CDRPath.cpp
@@ -13,6 +13,7 @@
 #include <map>
 
 #include "CDRTransforms.h"
+#include "libcdr_utils.h"
 
 #ifndef DEBUG_SPLINES
 #define DEBUG_SPLINES 0
@@ -231,7 +232,7 @@ public:
   void writeOut(librevenge::RVNGPropertyListVector &vec) const override;
   void transform(const CDRTransforms &trafos) override;
   void transform(const CDRTransform &trafo) override;
-  CDRPathElement *clone() override;
+  std::unique_ptr<CDRPathElement> clone() override;
 private:
   double m_x;
   double m_y;
@@ -247,7 +248,7 @@ public:
   void writeOut(librevenge::RVNGPropertyListVector &vec) const override;
   void transform(const CDRTransforms &trafos) override;
   void transform(const CDRTransform &trafo) override;
-  CDRPathElement *clone() override;
+  std::unique_ptr<CDRPathElement> clone() override;
 private:
   double m_x;
   double m_y;
@@ -267,7 +268,7 @@ public:
   void writeOut(librevenge::RVNGPropertyListVector &vec) const override;
   void transform(const CDRTransforms &trafos) override;
   void transform(const CDRTransform &trafo) override;
-  CDRPathElement *clone() override;
+  std::unique_ptr<CDRPathElement> clone() override;
 private:
   double m_x1;
   double m_y1;
@@ -289,7 +290,7 @@ public:
   void writeOut(librevenge::RVNGPropertyListVector &vec) const override;
   void transform(const CDRTransforms &trafos) override;
   void transform(const CDRTransform &trafo) override;
-  CDRPathElement *clone() override;
+  std::unique_ptr<CDRPathElement> clone() override;
 private:
   double m_x1;
   double m_y1;
@@ -306,7 +307,7 @@ public:
   void writeOut(librevenge::RVNGPropertyListVector &vec) const override;
   void transform(const CDRTransforms &trafos) override;
   void transform(const CDRTransform &trafo) override;
-  CDRPathElement *clone() override;
+  std::unique_ptr<CDRPathElement> clone() override;
 private:
   std::vector<std::pair<double, double> > m_points;
   unsigned knot(unsigned i) const;
@@ -327,7 +328,7 @@ public:
   void writeOut(librevenge::RVNGPropertyListVector &vec) const override;
   void transform(const CDRTransforms &trafos) override;
   void transform(const CDRTransform &trafo) override;
-  CDRPathElement *clone() override;
+  std::unique_ptr<CDRPathElement> clone() override;
 private:
   double m_rx;
   double m_ry;
@@ -346,7 +347,7 @@ public:
   void writeOut(librevenge::RVNGPropertyListVector &vec) const override;
   void transform(const CDRTransforms &trafos) override;
   void transform(const CDRTransform &trafo) override;
-  CDRPathElement *clone() override;
+  std::unique_ptr<CDRPathElement> clone() override;
 };
 
 } // namespace libcdr
@@ -371,9 +372,9 @@ void libcdr::CDRMoveToElement::transform(const CDRTransform &trafo)
   trafo.applyToPoint(m_x,m_y);
 }
 
-libcdr::CDRPathElement *libcdr::CDRMoveToElement::clone()
+std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRMoveToElement::clone()
 {
-  return new CDRMoveToElement(m_x, m_y);
+  return make_unique<CDRMoveToElement>(m_x, m_y);
 }
 
 void libcdr::CDRLineToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
@@ -395,9 +396,9 @@ void libcdr::CDRLineToElement::transform(const CDRTransform &trafo)
   trafo.applyToPoint(m_x,m_y);
 }
 
-libcdr::CDRPathElement *libcdr::CDRLineToElement::clone()
+std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRLineToElement::clone()
 {
-  return new CDRLineToElement(m_x, m_y);
+  return make_unique<CDRLineToElement>(m_x, m_y);
 }
 
 void libcdr::CDRCubicBezierToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
@@ -427,9 +428,9 @@ void libcdr::CDRCubicBezierToElement::transform(const CDRTransform &trafo)
   trafo.applyToPoint(m_x,m_y);
 }
 
-libcdr::CDRPathElement *libcdr::CDRCubicBezierToElement::clone()
+std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRCubicBezierToElement::clone()
 {
-  return new CDRCubicBezierToElement(m_x1, m_y1, m_x2, m_y2, m_x, m_y);
+  return make_unique<CDRCubicBezierToElement>(m_x1, m_y1, m_x2, m_y2, m_x, m_y);
 }
 
 void libcdr::CDRQuadraticBezierToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
@@ -455,9 +456,9 @@ void libcdr::CDRQuadraticBezierToElement::transform(const CDRTransform &trafo)
   trafo.applyToPoint(m_x,m_y);
 }
 
-libcdr::CDRPathElement *libcdr::CDRQuadraticBezierToElement::clone()
+std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRQuadraticBezierToElement::clone()
 {
-  return new CDRQuadraticBezierToElement(m_x1, m_y1, m_x, m_y);
+  return make_unique<CDRQuadraticBezierToElement>(m_x1, m_y1, m_x, m_y);
 }
 
 #define CDR_SPLINE_DEGREE 3
@@ -581,9 +582,9 @@ void libcdr::CDRSplineToElement::transform(const CDRTransform &trafo)
     trafo.applyToPoint(point.first, point.second);
 }
 
-libcdr::CDRPathElement *libcdr::CDRSplineToElement::clone()
+std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRSplineToElement::clone()
 {
-  return new CDRSplineToElement(m_points);
+  return libcdr::make_unique<CDRSplineToElement>(m_points);
 }
 
 void libcdr::CDRArcToElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
@@ -610,9 +611,9 @@ void libcdr::CDRArcToElement::transform(const CDRTransform &trafo)
   trafo.applyToArc(m_rx, m_ry, m_rotation, m_sweep, m_x, m_y);
 }
 
-libcdr::CDRPathElement *libcdr::CDRArcToElement::clone()
+std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRArcToElement::clone()
 {
-  return new CDRArcToElement(m_rx, m_ry, m_rotation, m_largeArc, m_sweep, m_x, m_y);
+  return make_unique<CDRArcToElement>(m_rx, m_ry, m_rotation, m_largeArc, m_sweep, m_x, m_y);
 }
 
 void libcdr::CDRClosePathElement::transform(const CDRTransforms &)
@@ -623,9 +624,9 @@ void libcdr::CDRClosePathElement::transform(const CDRTransform &)
 {
 }
 
-libcdr::CDRPathElement *libcdr::CDRClosePathElement::clone()
+std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRClosePathElement::clone()
 {
-  return new CDRClosePathElement();
+  return make_unique<CDRClosePathElement>();
 }
 
 void libcdr::CDRClosePathElement::writeOut(librevenge::RVNGPropertyListVector &vec) const
@@ -637,37 +638,37 @@ void libcdr::CDRClosePathElement::writeOut(librevenge::RVNGPropertyListVector &v
 
 void libcdr::CDRPath::appendMoveTo(double x, double y)
 {
-  m_elements.push_back(new libcdr::CDRMoveToElement(x, y));
+  m_elements.push_back(make_unique<libcdr::CDRMoveToElement>(x, y));
 }
 
 void libcdr::CDRPath::appendLineTo(double x, double y)
 {
-  m_elements.push_back(new libcdr::CDRLineToElement(x, y));
+  m_elements.push_back(make_unique<libcdr::CDRLineToElement>(x, y));
 }
 
 void libcdr::CDRPath::appendCubicBezierTo(double x1, double y1, double x2, double y2, double x, double y)
 {
-  m_elements.push_back(new libcdr::CDRCubicBezierToElement(x1, y1, x2, y2, x, y));
+  m_elements.push_back(make_unique<libcdr::CDRCubicBezierToElement>(x1, y1, x2, y2, x, y));
 }
 
 void libcdr::CDRPath::appendQuadraticBezierTo(double x1, double y1, double x, double y)
 {
-  m_elements.push_back(new libcdr::CDRQuadraticBezierToElement(x1, y1, x, y));
+  m_elements.push_back(make_unique<libcdr::CDRQuadraticBezierToElement>(x1, y1, x, y));
 }
 
 void libcdr::CDRPath::appendArcTo(double rx, double ry, double rotation, bool longAngle, bool sweep, double x, double y)
 {
-  m_elements.push_back(new libcdr::CDRArcToElement(rx, ry, rotation, longAngle, sweep, x, y));
+  m_elements.push_back(make_unique<libcdr::CDRArcToElement>(rx, ry, rotation, longAngle, sweep, x, y));
 }
 
-void libcdr::CDRPath::appendSplineTo(std::vector<std::pair<double, double> > &points)
+void libcdr::CDRPath::appendSplineTo(const std::vector<std::pair<double, double> > &points)
 {
-  m_elements.push_back(new libcdr::CDRSplineToElement(points));
+  m_elements.push_back(libcdr::make_unique<libcdr::CDRSplineToElement>(points));
 }
 
 void libcdr::CDRPath::appendClosePath()
 {
-  m_elements.push_back(new libcdr::CDRClosePathElement());
+  m_elements.push_back(make_unique<libcdr::CDRClosePathElement>());
   m_isClosed = true;
 }
 
@@ -691,21 +692,20 @@ libcdr::CDRPath &libcdr::CDRPath::operator=(const libcdr::CDRPath &path)
 
 libcdr::CDRPath::~CDRPath()
 {
-  clear();
 }
 
 void libcdr::CDRPath::appendPath(const CDRPath &path)
 {
-  for (auto element : path.m_elements)
+  for (const auto &element : path.m_elements)
     m_elements.push_back(element->clone());
 }
 
 void libcdr::CDRPath::writeOut(librevenge::RVNGPropertyListVector &vec) const
 {
   bool wasZ = true;
-  for (auto element : m_elements)
+  for (const auto &element : m_elements)
   {
-    if (dynamic_cast<CDRClosePathElement *>(element))
+    if (dynamic_cast<CDRClosePathElement *>(element.get()))
     {
       if (!wasZ)
       {
@@ -860,16 +860,13 @@ void libcdr::CDRPath::transform(const CDRTransform &trafo)
     element->transform(trafo);
 }
 
-libcdr::CDRPathElement *libcdr::CDRPath::clone()
+std::unique_ptr<libcdr::CDRPathElement> libcdr::CDRPath::clone()
 {
-  return new CDRPath(*this);
+  return make_unique<CDRPath>(*this);
 }
 
 void libcdr::CDRPath::clear()
 {
-  for (auto &element : m_elements)
-    if (element)
-      delete element;
   m_elements.clear();
   m_isClosed = false;
 }
diff --git a/src/lib/CDRPath.h b/src/lib/CDRPath.h
index 90fe0de..f336803 100644
--- a/src/lib/CDRPath.h
+++ b/src/lib/CDRPath.h
@@ -10,6 +10,7 @@
 #ifndef __CDRPATH_H__
 #define __CDRPATH_H__
 
+#include <memory>
 #include <utility>
 #include <vector>
 #include <librevenge/librevenge.h>
@@ -28,7 +29,7 @@ public:
   virtual void writeOut(librevenge::RVNGPropertyListVector &vec) const = 0;
   virtual void transform(const CDRTransforms &trafos) = 0;
   virtual void transform(const CDRTransform &trafo) = 0;
-  virtual CDRPathElement *clone() = 0;
+  virtual std::unique_ptr<CDRPathElement> clone() = 0;
 };
 
 
@@ -45,7 +46,7 @@ public:
   void appendLineTo(double x, double y);
   void appendCubicBezierTo(double x1, double y1, double x2, double y2, double x, double y);
   void appendQuadraticBezierTo(double x1, double y1, double x, double y);
-  void appendSplineTo(std::vector<std::pair<double, double> > &points);
+  void appendSplineTo(const std::vector<std::pair<double, double> > &points);
   void appendArcTo(double rx, double ry, double rotation, bool longAngle, bool sweep, double x, double y);
   void appendClosePath();
   void appendPath(const CDRPath &path);
@@ -54,14 +55,14 @@ public:
   void writeOut(librevenge::RVNGString &path, librevenge::RVNGString &viewBox, double &width) const;
   void transform(const CDRTransforms &trafos) override;
   void transform(const CDRTransform &trafo) override;
-  CDRPathElement *clone() override;
+  std::unique_ptr<CDRPathElement> clone() override;
 
   void clear();
   bool empty() const;
   bool isClosed() const;
 
 private:
-  std::vector<CDRPathElement *> m_elements;
+  std::vector<std::unique_ptr<CDRPathElement>> m_elements;
   bool m_isClosed;
 };
 
diff --git a/src/lib/libcdr_utils.h b/src/lib/libcdr_utils.h
index a475112..a4472fc 100644
--- a/src/lib/libcdr_utils.h
+++ b/src/lib/libcdr_utils.h
@@ -15,6 +15,7 @@
 #endif
 
 #include <math.h>
+#include <memory>
 #include <vector>
 
 #include <boost/cstdint.hpp>
@@ -64,6 +65,12 @@ struct CDRDummyDeleter
   void operator()(void *) const {}
 };
 
+template<typename T, typename... Args>
+std::unique_ptr<T> make_unique(Args &&... args)
+{
+  return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
+}
+
 uint8_t readU8(librevenge::RVNGInputStream *input, bool bigEndian=false);
 uint16_t readU16(librevenge::RVNGInputStream *input, bool bigEndian=false);
 uint32_t readU32(librevenge::RVNGInputStream *input, bool bigEndian=false);
commit f2de6ec61fac666f2093fd25533df26cd610bde7
Author: David Tardon <dtardon at redhat.com>
Date:   Sat Mar 24 16:49:47 2018 +0100

    reduce the amount of copypasta
    
    Change-Id: I03f35156e7aa006d515e866009b03ce825c19dab

diff --git a/src/lib/CDRPath.cpp b/src/lib/CDRPath.cpp
index e31581e..1028b1f 100644
--- a/src/lib/CDRPath.cpp
+++ b/src/lib/CDRPath.cpp
@@ -673,8 +673,7 @@ void libcdr::CDRPath::appendClosePath()
 
 libcdr::CDRPath::CDRPath(const libcdr::CDRPath &path) : m_elements(), m_isClosed(false)
 {
-  for (auto element : path.m_elements)
-    m_elements.push_back(element->clone());
+  appendPath(path);
   m_isClosed = path.isClosed();
 }
 
@@ -684,8 +683,7 @@ libcdr::CDRPath &libcdr::CDRPath::operator=(const libcdr::CDRPath &path)
   if (this == &path)
     return *this;
   clear();
-  for (auto element : path.m_elements)
-    m_elements.push_back(element->clone());
+  appendPath(path);
   m_isClosed = path.isClosed();
   return *this;
 }


More information about the Libreoffice-commits mailing list