[gnote] Use unique_ptr for NoteData
- From: Aurimas Černius <aurimasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnote] Use unique_ptr for NoteData
- Date: Mon, 23 Dec 2019 16:40:45 +0000 (UTC)
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]