object: add destroy method for owned types
This commit is contained in:
parent
8d26b2ac92
commit
140a94759f
20
object.hpp
20
object.hpp
@ -38,7 +38,7 @@ namespace cruft::vk {
|
|||||||
const id_t& id (void) const&;
|
const id_t& id (void) const&;
|
||||||
id_t& id (void) &;
|
id_t& id (void) &;
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
id_t m_id;
|
id_t m_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -117,13 +117,31 @@ namespace cruft::vk {
|
|||||||
template <typename SelfT, typename OwnerT>
|
template <typename SelfT, typename OwnerT>
|
||||||
struct owned : public object<SelfT> {
|
struct owned : public object<SelfT> {
|
||||||
using id_t = typename object<SelfT>::id_t;
|
using id_t = typename object<SelfT>::id_t;
|
||||||
|
using owner_t = OwnerT;
|
||||||
|
|
||||||
using object<SelfT>::object;
|
using object<SelfT>::object;
|
||||||
|
|
||||||
|
|
||||||
template <typename ...Args>
|
template <typename ...Args>
|
||||||
owned (Args &&...args):
|
owned (Args &&...args):
|
||||||
object<SelfT> (make (std::forward<Args> (args)...))
|
object<SelfT> (make (std::forward<Args> (args)...))
|
||||||
{ ; }
|
{ ; }
|
||||||
|
|
||||||
|
|
||||||
|
~owned ()
|
||||||
|
{
|
||||||
|
CHECK_EQ (this->id (), VK_NULL_HANDLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
destroy (OwnerT &parent)
|
||||||
|
{
|
||||||
|
life_traits<SelfT>::destroy (parent.id (), this->id (), nullptr);
|
||||||
|
this->m_id = VK_NULL_HANDLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
template <typename ...Args>
|
template <typename ...Args>
|
||||||
static
|
static
|
||||||
|
Loading…
Reference in New Issue
Block a user