From e316b81af93d5a51cb88b90861f2ad83ccaac81f Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Wed, 8 Jul 2020 18:32:19 +0900 Subject: [PATCH] DSCanvas: make the DSCanvasPrivate. use Pimpl pattern on DSCanvas Change-Id: I3b9811531ddf784f5f36b0c800540eca5bf41b99 --- src/DSCanvas/DSCanvas.cpp | 42 ++++++++++++++++++++++++++++++++++++------ src/DSCanvas/DSCanvas.h | 19 +++++++++++-------- src/DSCanvas/DSCanvasPrivate.h | 27 +++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 14 deletions(-) create mode 100644 src/DSCanvas/DSCanvasPrivate.h diff --git a/src/DSCanvas/DSCanvas.cpp b/src/DSCanvas/DSCanvas.cpp index f952083..bc9f066 100644 --- a/src/DSCanvas/DSCanvas.cpp +++ b/src/DSCanvas/DSCanvas.cpp @@ -1,12 +1,12 @@ #include "DSCanvas.h" +#include "DSCanvasPrivate.h" #include "DSDebugLog.h" namespace display_server { DSCanvas::DSCanvas() - : __policyArea(nullptr), - __displayArea(nullptr) + : DS_INIT_PRIVATE_PTR(DSCanvas) {} DSCanvas::~DSCanvas() @@ -14,8 +14,38 @@ DSCanvas::~DSCanvas() bool DSCanvas::attachPolicyArea(std::shared_ptr policyArea) { - if (policyArea) { - DSLOG_ERR("DSCanvas", "canvas has already policyArea(%p).", policyArea); + DS_GET_PRIV(DSCanvas); + + if (!priv->attachPolicyArea(policyArea)) + return false; + + return true; +} + +bool DSCanvas::attachDisplayArea(std::shared_ptr displayArea) +{ + DS_GET_PRIV(DSCanvas); + + if (!priv->attachDisplayArea(displayArea)) + return false; + + return true; +} + +DSCanvasPrivate::DSCanvasPrivate(DSCanvas *p_ptr) + : DSObjectPrivate(p_ptr), + __p_ptr(p_ptr), + __policyArea(nullptr), + __displayArea(nullptr) +{} + +DSCanvasPrivate::~DSCanvasPrivate() +{} + +bool DSCanvasPrivate::attachPolicyArea(std::shared_ptr policyArea) +{ + if (__policyArea) { + DSLOG_ERR("DSCanvasPrivate", "canvas has already policyArea(%p).", policyArea); return false; } @@ -24,10 +54,10 @@ bool DSCanvas::attachPolicyArea(std::shared_ptr policyArea) return true; } -bool DSCanvas::attachDisplayArea(std::shared_ptr displayArea) +bool DSCanvasPrivate::attachDisplayArea(std::shared_ptr displayArea) { if (__displayArea) { - DSLOG_ERR("DSCanvas", "canvas has already displayArea(%p).", __displayArea); + DSLOG_ERR("DSCanvasPrivate", "canvas has already displayArea(%p).", __displayArea); return false; } diff --git a/src/DSCanvas/DSCanvas.h b/src/DSCanvas/DSCanvas.h index 6e62fe2..1be8ead 100644 --- a/src/DSCanvas/DSCanvas.h +++ b/src/DSCanvas/DSCanvas.h @@ -1,25 +1,28 @@ -#ifndef _DSCANVAS_H_ -#define _DSCANVAS_H_ +#ifndef __DS_CANVAS_H__ +#define __DS_CANVAS_H__ +#include +#include #include #include #include namespace display_server { -class DSCanvas + +class DSCanvasPrivate; + +class DSCanvas : public DSObject { +DS_PIMPL_USE_PRIVATE(DSCanvas); public: - DSCanvas(); + explicit DSCanvas(); virtual ~DSCanvas(); bool attachPolicyArea(std::shared_ptr polcyArea); bool attachDisplayArea(std::shared_ptr displayArea); - -private: - std::shared_ptr __policyArea; - std::shared_ptr __displayArea; }; + } #endif \ No newline at end of file diff --git a/src/DSCanvas/DSCanvasPrivate.h b/src/DSCanvas/DSCanvasPrivate.h new file mode 100644 index 0000000..bded0a9 --- /dev/null +++ b/src/DSCanvas/DSCanvasPrivate.h @@ -0,0 +1,27 @@ +#ifndef __DS_CANVAS_PRIVATE_H__ +#define __DS_CANVAS_PRIVATE_H__ + +#include "DSCanvas.h" + +namespace display_server +{ + +class DSCanvasPrivate : public DSObjectPrivate +{ +DS_PIMPL_USE_PUBLIC(DSCanvas); +public: + DSCanvasPrivate() = delete; + DSCanvasPrivate(DSCanvas *p_ptr); + ~DSCanvasPrivate(); + + bool attachPolicyArea(std::shared_ptr polcyArea); + bool attachDisplayArea(std::shared_ptr displayArea); + +private: + std::shared_ptr __policyArea; + std::shared_ptr __displayArea; +}; + +} + +#endif \ No newline at end of file -- 2.7.4