From 288c1e92bd08755482a1d8c2d34411ed507556b9 Mon Sep 17 00:00:00 2001 From: Nicolas Jager <nicolas.jager@savoirfairelinux.com> Date: Thu, 31 Aug 2017 13:58:26 -0400 Subject: [PATCH] Lrc: implementation - Pimpl - make const the return type of getAccountModel() Change-Id: Id38179ea9271e906f52a2c4ace64b3860c8bebc4 Reviewed-by: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com> Signed-off-by: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com> --- src/api/lrc.h | 9 +++++---- src/lrc.cpp | 20 ++++++++++++-------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/api/lrc.h b/src/api/lrc.h index 67b7a50b..39dc20a9 100644 --- a/src/api/lrc.h +++ b/src/api/lrc.h @@ -27,8 +27,6 @@ namespace lrc { -class Database; -class CallbacksHandler; class LrcPimpl; namespace api @@ -40,8 +38,11 @@ class LIB_EXPORT Lrc { public: Lrc(); ~Lrc(); - - NewAccountModel& getAccountModel(); + /** + * get a reference on account model. + * @return a NewAccountModel&. + */ + const NewAccountModel& getAccountModel() const; private: std::unique_ptr<LrcPimpl> lrcPipmpl_; diff --git a/src/lrc.cpp b/src/lrc.cpp index e73838d2..8275afaf 100644 --- a/src/lrc.cpp +++ b/src/lrc.cpp @@ -32,16 +32,16 @@ class LrcPimpl { public: - LrcPimpl(); + LrcPimpl(const Lrc& linked); - std::unique_ptr<Lrc> parent; + const Lrc& linked; std::unique_ptr<Database> database; - std::unique_ptr<NewAccountModel> accountModel; std::unique_ptr<CallbacksHandler> callbackHandler; + std::unique_ptr<NewAccountModel> accountModel; }; Lrc::Lrc() -: lrcPipmpl_(std::make_unique<LrcPimpl>()) +: lrcPipmpl_(std::make_unique<LrcPimpl>(*this)) { } @@ -49,15 +49,19 @@ Lrc::~Lrc() { } -NewAccountModel& -Lrc::getAccountModel() +const NewAccountModel& +Lrc::getAccountModel() const { return *lrcPipmpl_->accountModel; } -LrcPimpl::LrcPimpl() +LrcPimpl::LrcPimpl(const Lrc& linked) +: linked(linked) +, database(std::make_unique<Database>()) +, callbackHandler(std::make_unique<CallbacksHandler>()) +, accountModel(std::make_unique<NewAccountModel>(*database)) { - database = std::make_unique<Database>(); + } } // namespace lrc -- GitLab