[gnote] Use unique_ptr for NoteData



commit 008c6e2ed4fd4e6b8dce39b9646b9f455924e95a
Author: Aurimas Černius <aurisc4 gmail com>
Date:   Mon Dec 23 18:22:29 2019 +0200

    Use unique_ptr for NoteData

 src/note.cpp     | 21 ++++++++++-----------
 src/note.hpp     |  9 ++++-----
 src/notebase.cpp |  3 +--
 src/notebase.hpp |  6 +++---
 4 files changed, 18 insertions(+), 21 deletions(-)
---
diff --git a/src/note.cpp b/src/note.cpp
index 900bf06c..384601a2 100644
--- a/src/note.cpp
+++ b/src/note.cpp
@@ -246,10 +246,10 @@ namespace gnote {
     }
   }
 
-  Note::Note(NoteData * _data, const Glib::ustring & filepath, NoteManager & _manager, IGnote & g)
+  Note::Note(std::unique_ptr<NoteData> _data, const Glib::ustring & filepath, NoteManager & _manager, IGnote 
& g)
     : NoteBase(filepath, _manager)
     , m_gnote(g)
-    , m_data(_data)
+    , m_data(std::move(_data))
     , m_save_needed(false)
     , m_is_deleting(false)
     , m_note_window_embedded(false)
@@ -257,9 +257,8 @@ namespace gnote {
     , m_window(NULL)
     , m_tag_table(NULL)
   {
-    for(NoteData::TagMap::const_iterator iter = _data->tags().begin();
-        iter != _data->tags().end(); ++iter) {
-      add_tag(iter->second);
+    for(const auto & iter : m_data.data().tags()) {
+      add_tag(iter.second);
     }
     m_save_timeout = new utils::InterruptableTimeout();
     m_save_timeout->signal_timeout.connect(sigc::mem_fun(*this, &Note::on_save_timeout));
@@ -276,16 +275,16 @@ namespace gnote {
                                   NoteManager & manager,
                                   IGnote & g)
   {
-    NoteData * note_data = new NoteData(url_from_path(filename));
+    auto note_data = std::make_unique<NoteData>(url_from_path(filename));
     note_data->title() = title;
     sharp::DateTime date(sharp::DateTime::now());
     note_data->create_date() = date;
     note_data->set_change_date(date);
       
-    return Note::Ptr(new Note(note_data, filename, manager, g));
+    return Note::Ptr(new Note(std::move(note_data), filename, manager, g));
   }
 
-  Note::Ptr Note::create_existing_note(NoteData *data, Glib::ustring filepath, NoteManager & manager, IGnote 
& g)
+  Note::Ptr Note::create_existing_note(std::unique_ptr<NoteData> data, Glib::ustring filepath, NoteManager & 
manager, IGnote & g)
   {
     if (!data->change_date().is_valid()) {
       sharp::DateTime d(sharp::file_modification_time(filepath));
@@ -300,7 +299,7 @@ namespace gnote {
         data->create_date() = d;
       }
     }
-    return Note::Ptr(new Note(data, filepath, manager, g));
+    return Note::Ptr(new Note(std::move(data), filepath, manager, g));
   }
 
   void Note::delete_note()
@@ -334,9 +333,9 @@ namespace gnote {
   
   Note::Ptr Note::load(const Glib::ustring & read_file, NoteManager & manager, IGnote & g)
   {
-    NoteData *data = new NoteData(url_from_path(read_file));
+    auto data = std::make_unique<NoteData>(url_from_path(read_file));
     manager.note_archiver().read_file(read_file, *data);
-    return create_existing_note(data, read_file, manager, g);
+    return create_existing_note(std::move(data), read_file, manager, g);
   }
 
   
diff --git a/src/note.hpp b/src/note.hpp
index 548caa94..fbd1fe33 100644
--- a/src/note.hpp
+++ b/src/note.hpp
@@ -45,9 +45,8 @@ class NoteDataBufferSynchronizer
   : public NoteDataBufferSynchronizerBase
 {
 public:
-  // takes ownership
-  NoteDataBufferSynchronizer(NoteData * _data)
-    : NoteDataBufferSynchronizerBase(_data)
+  NoteDataBufferSynchronizer(std::unique_ptr<NoteData> _data)
+    : NoteDataBufferSynchronizerBase(std::move(_data))
     {
     }
 
@@ -102,7 +101,7 @@ public:
                                    NoteManager & manager,
                                    IGnote & g);
 
-  static Note::Ptr create_existing_note(NoteData *data,
+  static Note::Ptr create_existing_note(std::unique_ptr<NoteData> data,
                                         Glib::ustring filepath,
                                         NoteManager & manager,
                                         IGnote & g);
@@ -185,7 +184,7 @@ private:
   void on_note_window_embedded();
   void on_note_window_foregrounded();
 
-  Note(NoteData * data, const Glib::ustring & filepath, NoteManager & manager, IGnote & g);
+  Note(std::unique_ptr<NoteData> _data, const Glib::ustring & filepath, NoteManager & manager, IGnote & g);
 
   struct ChildWidgetData
   {
diff --git a/src/notebase.cpp b/src/notebase.cpp
index 56a88692..f33fe81c 100644
--- a/src/notebase.cpp
+++ b/src/notebase.cpp
@@ -42,7 +42,6 @@ namespace gnote {
 
 NoteDataBufferSynchronizerBase::~NoteDataBufferSynchronizerBase()
 {
-  delete m_data;
 }
 
 const Glib::ustring & NoteDataBufferSynchronizerBase::text()
@@ -85,7 +84,7 @@ std::vector<Glib::ustring> NoteBase::parse_tags(const xmlNodePtr tagnodes)
 }
 
 
-NoteBase::NoteBase(NoteData *, const Glib::ustring & filepath, NoteManagerBase & _manager)
+NoteBase::NoteBase(const Glib::ustring & filepath, NoteManagerBase & _manager)
   : m_manager(_manager)
   , m_file_path(filepath)
   , m_enabled(true)
diff --git a/src/notebase.hpp b/src/notebase.hpp
index d5f55718..81633113 100644
--- a/src/notebase.hpp
+++ b/src/notebase.hpp
@@ -155,8 +155,8 @@ private:
 class NoteDataBufferSynchronizerBase
 {
 public:
-  NoteDataBufferSynchronizerBase(NoteData *_data)
-    : m_data(_data)
+  NoteDataBufferSynchronizerBase(std::unique_ptr<NoteData> && _data)
+    : m_data(std::move(_data))
     {}
   virtual ~NoteDataBufferSynchronizerBase();
   const NoteData & data() const
@@ -178,7 +178,7 @@ public:
   virtual const Glib::ustring & text();
   virtual void set_text(const Glib::ustring & t);
 private:
-  NoteData *m_data;
+  std::unique_ptr<NoteData> m_data;
 };
 
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]