rewrite template to discard pointers
This commit is contained in:
parent
cc0bed2287
commit
ef294d67fc
|
@ -9,12 +9,12 @@ namespace bwidgets::core
|
|||
|
||||
OpaqueStruct(T* ptr=nullptr) : c_pod(ptr) {}
|
||||
virtual ~OpaqueStruct<T>() noexcept = default;
|
||||
|
||||
static inline void discard(T*& t) {
|
||||
delete t;
|
||||
t = nullptr;
|
||||
}
|
||||
};
|
||||
|
||||
template<typename ... Ts> void discard(Ts*& ... ptrs) {
|
||||
((delete ptrs), ...);
|
||||
((ptrs = nullptr), ...);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -8,27 +8,27 @@ using namespace bwidgets;
|
|||
|
||||
widget::Caption::~Caption() noexcept
|
||||
{
|
||||
core::OpaqueStruct<core::Texture>::discard(_text_texture);
|
||||
core::discard(_text_texture);
|
||||
}
|
||||
|
||||
widget::Caption* widget::Caption::color_bg(const SDL_Color& c)
|
||||
{
|
||||
_color_bg = c;
|
||||
core::OpaqueStruct<core::Texture>::discard(_text_texture);
|
||||
core::discard(_text_texture);
|
||||
return this;
|
||||
}
|
||||
|
||||
widget::Caption* widget::Caption::color_fg(const SDL_Color& c)
|
||||
{
|
||||
_color_fg = c;
|
||||
core::OpaqueStruct<core::Texture>::discard(_text_texture);
|
||||
core::discard(_text_texture);
|
||||
return this;
|
||||
}
|
||||
|
||||
widget::Caption* widget::Caption::render_mode(core::Font::RenderMode m) noexcept
|
||||
{
|
||||
_render_mode = m;
|
||||
core::OpaqueStruct<core::Texture>::discard(_text_texture);
|
||||
core::discard(_text_texture);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -50,13 +50,13 @@ const std::string& widget::Caption::text() const noexcept
|
|||
widget::Caption* widget::Caption::text(const std::string& t)
|
||||
{
|
||||
_text = t;
|
||||
core::OpaqueStruct<core::Texture>::discard(_text_texture);
|
||||
core::discard(_text_texture);
|
||||
return this;
|
||||
}
|
||||
|
||||
void widget::Caption::_handle_font_change(core::Font*)
|
||||
{
|
||||
core::OpaqueStruct<core::Texture>::discard(_text_texture);
|
||||
core::discard(_text_texture);
|
||||
}
|
||||
|
||||
static inline bool operator!=(const SDL_Color& a, const SDL_Color& b)
|
||||
|
@ -69,7 +69,7 @@ void widget::Caption::_handle_font_color_change(const SDL_Color& fg, const SDL_C
|
|||
if (fg != _font_color_fg || (bg != _font_color_bg &&
|
||||
_font_render_mode == core::Font::RenderMode::SHADED))
|
||||
{
|
||||
core::OpaqueStruct<core::Texture>::discard(_text_texture);
|
||||
core::discard(_text_texture);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -83,7 +83,7 @@ void widget::Caption::_handle_geometry_change(const SDL_Rect& vp) noexcept
|
|||
|
||||
void widget::Caption::_handle_renderer_change(core::Renderer*)
|
||||
{
|
||||
core::OpaqueStruct<core::Texture>::discard(_text_texture);
|
||||
core::discard(_text_texture);
|
||||
}
|
||||
|
||||
void widget::Caption::_handle_rendering()
|
||||
|
@ -122,7 +122,7 @@ void widget::Caption::_handle_rendering()
|
|||
void widget::Caption::_handle_texture_update()
|
||||
{
|
||||
SDL_assert_release(_font);
|
||||
core::OpaqueStruct<core::Texture>::discard(_text_texture);
|
||||
core::discard(_text_texture);
|
||||
SDL_Surface* s;
|
||||
switch (_render_mode)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue