Add macro-based pimpl & use it everywhere
This commit is contained in:
parent
b861cc60ff
commit
08c62d6e3f
6 changed files with 27 additions and 16 deletions
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
#include <psemek/app/scene.hpp>
|
||||
|
||||
#include <psemek/util/pimpl.hpp>
|
||||
|
||||
#include <SDL2/SDL_keycode.h>
|
||||
|
||||
#include <memory>
|
||||
|
|
@ -37,10 +39,7 @@ namespace psemek::app
|
|||
int height() const;
|
||||
|
||||
private:
|
||||
struct impl;
|
||||
std::unique_ptr<impl> pimpl_;
|
||||
struct impl & impl() { return *pimpl_; }
|
||||
struct impl const & impl() const { return *pimpl_; }
|
||||
psemek_declare_pimpl
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@
|
|||
#include <psemek/audio/stream.hpp>
|
||||
#include <psemek/audio/track.hpp>
|
||||
|
||||
#include <psemek/util/pimpl.hpp>
|
||||
|
||||
#include <memory>
|
||||
#include <string_view>
|
||||
|
||||
|
|
@ -35,10 +37,7 @@ namespace psemek::audio
|
|||
std::shared_ptr<stream> play(std::shared_ptr<track> s, bool start = true, bool loop = false);
|
||||
|
||||
private:
|
||||
struct impl;
|
||||
std::shared_ptr<impl> pimpl_;
|
||||
struct impl & impl() { return *pimpl_; }
|
||||
struct impl const & impl() const { return *pimpl_; }
|
||||
psemek_declare_shared_pimpl
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,11 +2,14 @@
|
|||
|
||||
#include <psemek/gfx/color.hpp>
|
||||
#include <psemek/gfx/texture.hpp>
|
||||
|
||||
#include <psemek/geom/vector.hpp>
|
||||
#include <psemek/geom/point.hpp>
|
||||
#include <psemek/geom/matrix.hpp>
|
||||
#include <psemek/geom/box.hpp>
|
||||
|
||||
#include <psemek/util/pimpl.hpp>
|
||||
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
|
||||
|
|
@ -70,9 +73,7 @@ namespace psemek::gfx
|
|||
void render(geom::matrix<float, 4, 4> const & transform);
|
||||
|
||||
private:
|
||||
struct impl;
|
||||
std::unique_ptr<impl> pimpl_;
|
||||
struct impl & impl() { return *pimpl_; }
|
||||
psemek_declare_pimpl
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,8 +3,11 @@
|
|||
#include <psemek/gfx/drawable.hpp>
|
||||
#include <psemek/gfx/color.hpp>
|
||||
#include <psemek/gfx/texture.hpp>
|
||||
|
||||
#include <psemek/geom/matrix.hpp>
|
||||
|
||||
#include <psemek/util/pimpl.hpp>
|
||||
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
|
||||
|
|
@ -48,10 +51,7 @@ namespace psemek::gfx
|
|||
void render(render_options const & opts);
|
||||
|
||||
private:
|
||||
struct impl;
|
||||
std::unique_ptr<struct impl> pimpl_;
|
||||
struct impl & impl() { return *pimpl_; }
|
||||
struct impl const & impl() const { return *pimpl_; }
|
||||
psemek_declare_pimpl
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,18 @@
|
|||
#include <type_traits>
|
||||
#include <memory>
|
||||
|
||||
#define psemek_declare_pimpl \
|
||||
struct impl; \
|
||||
std::unique_ptr<struct impl> pimpl_; \
|
||||
struct impl & impl() { return *pimpl_; } \
|
||||
struct impl const & impl() const { return *pimpl_; }
|
||||
|
||||
#define psemek_declare_shared_pimpl \
|
||||
struct impl; \
|
||||
std::shared_ptr<struct impl> pimpl_; \
|
||||
struct impl & impl() { return *pimpl_; } \
|
||||
struct impl const & impl() const { return *pimpl_; }
|
||||
|
||||
namespace psemek::util::pimpl
|
||||
{
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue