[libcalamares] Extend the Deleter-helper with "preserve"

Sometimes you want to keep the thing around after all.
This commit is contained in:
Adriaan de Groot 2020-10-30 14:47:30 +01:00
parent 7659dfdb9d
commit b72eba8157

View File

@ -16,20 +16,28 @@
#include <type_traits> #include <type_traits>
/// @brief Convenience to zero out and deleteLater of any QObject-derived-class /** @brief Convenience to zero out and deleteLater of any QObject-derived-class
*
* If, before destruction, preserve is set to @c true, then
* the object is "preserved", and not deleted at all.
*/
template < typename T > template < typename T >
struct cqDeleter struct cqDeleter
{ {
T*& p; T*& p;
bool preserve = false;
~cqDeleter() ~cqDeleter()
{ {
static_assert( std::is_base_of< QObject, T >::value, "Not a QObject-class" ); static_assert( std::is_base_of< QObject, T >::value, "Not a QObject-class" );
if ( p ) if ( !preserve )
{ {
p->deleteLater(); if ( p )
{
p->deleteLater();
}
p = nullptr;
} }
p = nullptr;
} }
}; };