1#ifndef SDL3PP_OWN_PTR_H_
2#define SDL3PP_OWN_PTR_H_
19 void operator()(
void* ptr)
const;
32using OwnPtr = std::unique_ptr<T, PtrDeleter>;
48 constexpr OwnArray(std::nullptr_t =
nullptr) {}
61 while (*endPtr) ++endPtr;
62 m_size = endPtr - ptr;
67 constexpr explicit operator bool()
const {
return bool(m_ptr); }
70 constexpr bool empty()
const {
return !m_ptr; }
73 constexpr T*
data() {
return m_ptr.get(); }
76 constexpr const T*
data()
const {
return m_ptr.get(); }
79 constexpr size_t size()
const {
return m_size; }
95 void reset(T* newValue =
nullptr)
97 m_ptr.reset(newValue);
99 auto endPtr = newValue;
100 while (*endPtr) ++endPtr;
101 m_size = endPtr - newValue;
113 m_ptr.reset(newValue);
121 constexpr const T&
operator[](
size_t i)
const {
return m_ptr.get()[i]; }
129 const T*
begin()
const {
return data(); }
130 const T* cbegin()
const {
return begin(); }
140 const T* cend()
const {
return begin() +
size(); }
Base class for SDL memory allocated array wrap.
Definition SDL3pp_ownPtr.h:43
constexpr T & operator[](size_t i)
Access index.
Definition SDL3pp_ownPtr.h:118
void reset(T *newValue, size_t size)
Reset object.
Definition SDL3pp_ownPtr.h:111
constexpr bool empty() const
True if size() == 0.
Definition SDL3pp_ownPtr.h:70
T * begin()
Get iterator to first element.
Definition SDL3pp_ownPtr.h:128
T * release()
Release control on object.
Definition SDL3pp_ownPtr.h:87
constexpr const T * data() const
Data.
Definition SDL3pp_ownPtr.h:76
T & front()
Return first element.
Definition SDL3pp_ownPtr.h:144
T * end()
Get iterator to one past end element.
Definition SDL3pp_ownPtr.h:138
constexpr const T & operator[](size_t i) const
Access index.
Definition SDL3pp_ownPtr.h:121
void reset(T *newValue=nullptr)
Reset object.
Definition SDL3pp_ownPtr.h:95
constexpr size_t size() const
Size.
Definition SDL3pp_ownPtr.h:79
T & back()
Return last element.
Definition SDL3pp_ownPtr.h:147
constexpr T * data()
Data.
Definition SDL3pp_ownPtr.h:73
std::span< T > RefArray
Handle to an owned SDL memory allocated array.
Definition SDL3pp_ownPtr.h:163
std::unique_ptr< T, PtrDeleter > OwnPtr
Handle to an owned SDL memory allocated pointer.
Definition SDL3pp_ownPtr.h:32
the main namespace where all SDL3pp public functions and types live
Definition SDL3pp_assert.h:7
Calls SDL_free()
Definition SDL3pp_ownPtr.h:18