From 08c62d6e3f20cc419d102b7dc56cf010c755ef2e Mon Sep 17 00:00:00 2001 From: lisyarus Date: Fri, 23 Oct 2020 10:37:23 +0300 Subject: [PATCH] Add macro-based pimpl & use it everywhere --- libs/app/include/psemek/app/app.hpp | 7 +++---- libs/audio/CMakeLists.txt | 2 +- libs/audio/include/psemek/audio/engine.hpp | 7 +++---- libs/gfx/include/psemek/gfx/painter.hpp | 7 ++++--- libs/gfx/include/psemek/gfx/renderer/simple.hpp | 8 ++++---- libs/util/include/psemek/util/pimpl.hpp | 12 ++++++++++++ 6 files changed, 27 insertions(+), 16 deletions(-) diff --git a/libs/app/include/psemek/app/app.hpp b/libs/app/include/psemek/app/app.hpp index 4714ef49..49c1ce69 100644 --- a/libs/app/include/psemek/app/app.hpp +++ b/libs/app/include/psemek/app/app.hpp @@ -2,6 +2,8 @@ #include +#include + #include #include @@ -37,10 +39,7 @@ namespace psemek::app int height() const; private: - struct impl; - std::unique_ptr pimpl_; - struct impl & impl() { return *pimpl_; } - struct impl const & impl() const { return *pimpl_; } + psemek_declare_pimpl }; } diff --git a/libs/audio/CMakeLists.txt b/libs/audio/CMakeLists.txt index cdca7459..88a7ef10 100644 --- a/libs/audio/CMakeLists.txt +++ b/libs/audio/CMakeLists.txt @@ -5,4 +5,4 @@ file(GLOB_RECURSE PSEMEK_AUDIO_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "s add_library(psemek-audio ${PSEMEK_AUDIO_HEADERS} ${PSEMEK_AUDIO_SOURCES}) target_include_directories(psemek-audio PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") -target_link_libraries(psemek-audio PUBLIC psemek-sdl2 psemek-log SDL2_mixer) +target_link_libraries(psemek-audio PUBLIC psemek-sdl2 psemek-util psemek-log SDL2_mixer) diff --git a/libs/audio/include/psemek/audio/engine.hpp b/libs/audio/include/psemek/audio/engine.hpp index 6d71b0c1..0df5540c 100644 --- a/libs/audio/include/psemek/audio/engine.hpp +++ b/libs/audio/include/psemek/audio/engine.hpp @@ -5,6 +5,8 @@ #include #include +#include + #include #include @@ -35,10 +37,7 @@ namespace psemek::audio std::shared_ptr play(std::shared_ptr s, bool start = true, bool loop = false); private: - struct impl; - std::shared_ptr pimpl_; - struct impl & impl() { return *pimpl_; } - struct impl const & impl() const { return *pimpl_; } + psemek_declare_shared_pimpl }; } diff --git a/libs/gfx/include/psemek/gfx/painter.hpp b/libs/gfx/include/psemek/gfx/painter.hpp index 63aac7db..d143e4a0 100644 --- a/libs/gfx/include/psemek/gfx/painter.hpp +++ b/libs/gfx/include/psemek/gfx/painter.hpp @@ -2,11 +2,14 @@ #include #include + #include #include #include #include +#include + #include #include @@ -70,9 +73,7 @@ namespace psemek::gfx void render(geom::matrix const & transform); private: - struct impl; - std::unique_ptr pimpl_; - struct impl & impl() { return *pimpl_; } + psemek_declare_pimpl }; } diff --git a/libs/gfx/include/psemek/gfx/renderer/simple.hpp b/libs/gfx/include/psemek/gfx/renderer/simple.hpp index 414f33dc..8284293f 100644 --- a/libs/gfx/include/psemek/gfx/renderer/simple.hpp +++ b/libs/gfx/include/psemek/gfx/renderer/simple.hpp @@ -3,8 +3,11 @@ #include #include #include + #include +#include + #include #include @@ -48,10 +51,7 @@ namespace psemek::gfx void render(render_options const & opts); private: - struct impl; - std::unique_ptr pimpl_; - struct impl & impl() { return *pimpl_; } - struct impl const & impl() const { return *pimpl_; } + psemek_declare_pimpl }; } diff --git a/libs/util/include/psemek/util/pimpl.hpp b/libs/util/include/psemek/util/pimpl.hpp index 187da9b9..ea75ce0e 100644 --- a/libs/util/include/psemek/util/pimpl.hpp +++ b/libs/util/include/psemek/util/pimpl.hpp @@ -3,6 +3,18 @@ #include #include +#define psemek_declare_pimpl \ + struct impl; \ + std::unique_ptr pimpl_; \ + struct impl & impl() { return *pimpl_; } \ + struct impl const & impl() const { return *pimpl_; } + +#define psemek_declare_shared_pimpl \ + struct impl; \ + std::shared_ptr pimpl_; \ + struct impl & impl() { return *pimpl_; } \ + struct impl const & impl() const { return *pimpl_; } + namespace psemek::util::pimpl {