SizedPtr< T > Class Template Reference

SizedPtr class. More...

#include <Rosetta/Commons/Utils.hpp>

Public Types

using value_type = T
 
using size_type = std::size_t
 
using reference = T &
 
using const_reference = const T &
 
using pointer = T *
 
using const_pointer = const T *
 
using iterator = pointer
 
using const_iterator = const_pointer
 

Public Member Functions

 SizedPtr ()
 Default constructor. More...
 
 SizedPtr (std::size_t size)
 
 SizedPtr (T *ptr, std::size_t size)
 
 ~SizedPtr ()
 Default destructor. More...
 
 SizedPtr (const SizedPtr &ptr)
 Copy constructor, deep copying buffer. More...
 
 SizedPtr (SizedPtr &&ptr) noexcept
 Move constructor. More...
 
SizedPtroperator= (const SizedPtr &ptr)
 Copy assignment operator, deep copying buffer. More...
 
SizedPtroperator= (SizedPtr &&ptr) noexcept
 Move assignment operator. More...
 
void reset () noexcept
 Resets buffer. More...
 
void reset (T *other, std::size_t size) noexcept
 
 operator bool ()
 Queries that object has buffer. More...
 
T * get ()
 
const T * get () const
 
std::size_t size () const
 
T & operator* ()
 
const T & operator* () const
 
T & operator[] (std::size_t idx)
 
const T & operator[] (std::size_t idx) const
 
bool operator== (const SizedPtr &other) const
 
bool operator!= (const SizedPtr &other) const
 
bool operator== (std::nullptr_t) const
 
bool operator!= (std::nullptr_t) const
 
iterator begin ()
 
const_iterator begin () const
 
const_iterator cbegin () const
 
iterator end ()
 
const_iterator end () const
 
const_iterator cend () const
 

Detailed Description

template<typename T>
class SizedPtr< T >

SizedPtr class.

This class is unique_ptr like pointer wrapper. For std::any, base class required copy constructible, it supports both deep copy and move operations.

Member Typedef Documentation

◆ const_iterator

template<typename T >
using SizedPtr< T >::const_iterator = const_pointer

◆ const_pointer

template<typename T >
using SizedPtr< T >::const_pointer = const T*

◆ const_reference

template<typename T >
using SizedPtr< T >::const_reference = const T&

◆ iterator

template<typename T >
using SizedPtr< T >::iterator = pointer

◆ pointer

template<typename T >
using SizedPtr< T >::pointer = T*

◆ reference

template<typename T >
using SizedPtr< T >::reference = T&

◆ size_type

template<typename T >
using SizedPtr< T >::size_type = std::size_t

◆ value_type

template<typename T >
using SizedPtr< T >::value_type = T

Constructor & Destructor Documentation

◆ SizedPtr() [1/5]

template<typename T >
SizedPtr< T >::SizedPtr ( )
inline

Default constructor.

◆ SizedPtr() [2/5]

template<typename T >
SizedPtr< T >::SizedPtr ( std::size_t  size)
inlineexplicit

Constructs sized ptr with given /p size.

Parameters
sizeThe size of buffer.

◆ SizedPtr() [3/5]

template<typename T >
SizedPtr< T >::SizedPtr ( T *  ptr,
std::size_t  size 
)
inline

Constructs sized ptr with given ptr and size.

Parameters
ptrThe pointer that sized ptr managing.
sizeThe size of buffer.

◆ ~SizedPtr()

template<typename T >
SizedPtr< T >::~SizedPtr ( )
inline

Default destructor.

◆ SizedPtr() [4/5]

template<typename T >
SizedPtr< T >::SizedPtr ( const SizedPtr< T > &  ptr)
inline

Copy constructor, deep copying buffer.

◆ SizedPtr() [5/5]

template<typename T >
SizedPtr< T >::SizedPtr ( SizedPtr< T > &&  ptr)
inlinenoexcept

Move constructor.

Member Function Documentation

◆ begin() [1/2]

template<typename T >
iterator SizedPtr< T >::begin ( )
inline

Gets begining iterator of the buffer.

Returns
The begining iterator.

◆ begin() [2/2]

template<typename T >
const_iterator SizedPtr< T >::begin ( ) const
inline

Gets constant begining iterator of the buffer.

Returns
The constant begining iterator.

◆ cbegin()

template<typename T >
const_iterator SizedPtr< T >::cbegin ( ) const
inline

Gets constant begining iterator of the buffer.

Returns
The constant begining iterator.

◆ cend()

template<typename T >
const_iterator SizedPtr< T >::cend ( ) const
inline

Gets ending iterator of the buffer.

Returns
The ending iterator.

◆ end() [1/2]

template<typename T >
iterator SizedPtr< T >::end ( )
inline

Gets ending iterator of the buffer.

Returns
The ending iterator.

◆ end() [2/2]

template<typename T >
const_iterator SizedPtr< T >::end ( ) const
inline

Gets ending iterator of the buffer.

Returns
The ending iterator.

◆ get() [1/2]

template<typename T >
T* SizedPtr< T >::get ( )
inline

Gets buffer pointer.

Returns
The pointer of buffer.

◆ get() [2/2]

template<typename T >
const T* SizedPtr< T >::get ( ) const
inline

Gets buffer pointer.

Returns
The pointer of buffer.

◆ operator bool()

template<typename T >
SizedPtr< T >::operator bool ( )
inline

Queries that object has buffer.

◆ operator!=() [1/2]

template<typename T >
bool SizedPtr< T >::operator!= ( const SizedPtr< T > &  other) const
inline

Check the inequality of two buffers.

Parameters
otherComparable object.
Returns
Inequality about two buffers.

◆ operator!=() [2/2]

template<typename T >
bool SizedPtr< T >::operator!= ( std::nullptr_t  ) const
inline

Check if the buffer is not empty.

Returns
true if buffer is not empty, false otherwise.

◆ operator*() [1/2]

template<typename T >
T& SizedPtr< T >::operator* ( )
inline

Gets the first element of buffer.

Returns
The first element of buffer.

◆ operator*() [2/2]

template<typename T >
const T& SizedPtr< T >::operator* ( ) const
inline

Gets the first element of buffer.

Returns
The first element of buffer.

◆ operator=() [1/2]

template<typename T >
SizedPtr& SizedPtr< T >::operator= ( const SizedPtr< T > &  ptr)
inline

Copy assignment operator, deep copying buffer.

◆ operator=() [2/2]

template<typename T >
SizedPtr& SizedPtr< T >::operator= ( SizedPtr< T > &&  ptr)
inlinenoexcept

Move assignment operator.

◆ operator==() [1/2]

template<typename T >
bool SizedPtr< T >::operator== ( const SizedPtr< T > &  other) const
inline

Check the equality of two buffers.

Parameters
otherComparable object.
Returns
Equality about two buffers.

◆ operator==() [2/2]

template<typename T >
bool SizedPtr< T >::operator== ( std::nullptr_t  ) const
inline

Check if the buffer is empty.

Returns
true if buffer is empty, false otherwise.

◆ operator[]() [1/2]

template<typename T >
T& SizedPtr< T >::operator[] ( std::size_t  idx)
inline

Gets the element with given idx from buffer.

Parameters
idxThe index of buffer.
Returns
The element of buffer at idx.

◆ operator[]() [2/2]

template<typename T >
const T& SizedPtr< T >::operator[] ( std::size_t  idx) const
inline

Gets the element with given idx from buffer.

Parameters
idxThe index of buffer.
Returns
The element of buffer at idx.

◆ reset() [1/2]

template<typename T >
void SizedPtr< T >::reset ( )
inlinenoexcept

Resets buffer.

◆ reset() [2/2]

template<typename T >
void SizedPtr< T >::reset ( T *  other,
std::size_t  size 
)
inlinenoexcept

Resets buffer with given other and size.

Parameters
otherThe pointer that sized ptr managing.
sizeThe size of buffer.

◆ size()

template<typename T >
std::size_t SizedPtr< T >::size ( ) const
inline

Gets size of buffer.

Returns
The size of buffer.

The documentation for this class was generated from the following file: