15#ifndef QCOMTASKRESOURCE_P_H
16#define QCOMTASKRESOURCE_P_H
18#include <QtCore/qassert.h>
27class QEmptyDeleter final
31 void operator()(T )
const
36class QComDeleter
final
63 void reset(T *
const resource =
nullptr)
75template<
typename T,
typename TElementDeleter = QEmptyDeleter>
81 using Base::QComTaskResourceBase;
90 Q_ASSERT(m_resource ==
nullptr);
98 using Base::m_resource;
101template<
typename T,
typename TElementDeleter>
109 : Base(resource), m_size(size)
117 Q_ASSERT(index < m_size);
118 return m_resource[index];
125 return Base::release();
130 void reset(T *
const resource,
const std::size_t size)
132 if (m_resource != resource) {
135 Base::reset(resource);
144 if constexpr (!
std::is_same_v<TElementDeleter, QEmptyDeleter>) {
145 std::for_each(m_resource, m_resource + m_size, TElementDeleter());
149 std::size_t m_size = 0;
151 using Base::m_resource;
void operator()(T element) const
QComTaskResourceBase & operator=(const QComTaskResourceBase< T > &right)=delete
void reset(T *const resource=nullptr)
QComTaskResourceBase()=default
QComTaskResourceBase(T *const resource)
QComTaskResourceBase(const QComTaskResourceBase< T > &source)=delete
QComTaskResource(T *const resource, const std::size_t size)
QComTaskResource()=default
T & operator[](const std::size_t index) const
void reset(T *const resource, const std::size_t size)