API Documentation
Public Member Functions | List of all members
nkMemory::BufferView< T > Class Template Reference

A view over data. More...

Public Member Functions

 BufferView () noexcept
 
 BufferView (T *data, unsigned long long size) noexcept
 
 BufferView (const Buffer &buffer) noexcept
 
 BufferView (const Buffer &buffer, unsigned long long index, unsigned long long length=0) noexcept
 
 BufferView (Buffer &&buffer)=delete
 
T * getData () const
 
unsigned long long getSize () const
 
bool empty () const
 
T & front ()
 
const T & front () const
 
T & back ()
 
const T & back () const
 
T * begin ()
 
const T * begin () const
 
T * end ()
 
const T * end () const
 
BufferView< T > subView (unsigned long long index, unsigned long long length=0) const
 
T & operator[] (unsigned long long index)
 
const T & operator[] (unsigned long long index) const
 
BufferView< T > & operator= (const BufferView< T > &other) noexcept
 
BufferView< T > & operator= (BufferView< T > &&other) noexcept
 
template<typename U >
 BufferView (const BufferCast< U > &bufferCast) noexcept
 
 BufferView (const BufferCast< T > &bufferCast) noexcept
 
template<typename U >
 BufferView (const BufferView< U > &view) noexcept
 
 BufferView (const BufferView< T > &view) noexcept
 
 BufferView (BufferView< T > &&other) noexcept
 
template<typename U , std::size_t S>
 BufferView (std::array< U, S > &array) noexcept
 
template<std::size_t S>
 BufferView (std::array< T, S > &array) noexcept
 
template<typename U >
 BufferView (std::vector< U > &vec) noexcept
 
 BufferView (std::vector< T > &vec) noexcept
 
template<typename U , std::size_t S, typename = std::enable_if<std::is_const<T>::value>>
 BufferView (const std::array< U, S > &array) noexcept
 
template<std::size_t S, typename = std::enable_if<std::is_const<T>::value>>
 BufferView (const std::array< typename std::remove_const< T >::type, S > &array) noexcept
 
template<typename U , typename = std::enable_if<std::is_const<T>::value>>
 BufferView (const std::vector< U > &vec) noexcept
 
template<typename = std::enable_if<std::is_const<T>::value>>
 BufferView (const std::vector< typename std::remove_const< T >::type > &vec) noexcept
 
 operator Buffer () const
 
template<typename U = T>
 operator BufferCast< U > () const
 

Detailed Description

template<typename T = unsigned char>
class nkMemory::BufferView< T >

A view over data.

Behaves like the BufferCast, but not considered as owner of the memory. This means this variant of the buffer is a good candidate when exchanging data, as it doesn't copy anything but only offers a view over it.

It also allows to cast the data, and alter the way it is intepreted.

Constructor & Destructor Documentation

◆ BufferView() [1/18]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( )
noexcept

Default constructor. Creates an empty view.

◆ BufferView() [2/18]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( T *  data,
unsigned long long  size 
)
noexcept

Raw data constructor. This will make the view point to the data provided.

Parameters
dataThe data to point to.
sizeThe size of the data provided.

◆ BufferView() [3/18]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( const Buffer buffer)
noexcept

Buffer constructor. Offers a view over the data of a buffer.

Parameters
bufferThe buffer which memory has to be pointed.

◆ BufferView() [4/18]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( const Buffer buffer,
unsigned long long  index,
unsigned long long  length = 0 
)
noexcept

Buffer sub-part constructor. Offers a view over a sub-part of a buffer.

Parameters
bufferThe buffer which memory has to be pointed.
indexThe starting offset, in number of elements T, at which the view should start.
lengthThe number of elements T the sub-view should have.

◆ BufferView() [5/18]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( Buffer &&  buffer)
delete

This destructor is deleted, as a Buffer&& will clean up its memory right after assignment. This is unsafe as the new view's memory will be invalid.

Parameters
bufferThe rvalue buffer.

◆ BufferView() [6/18]

template<typename T = unsigned char>
template<typename U >
nkMemory::BufferView< T >::BufferView ( const BufferCast< U > &  bufferCast)
noexcept

Utility constructor over casts of different type.

Parameters
bufferCastThe buffer cast which data should be pointed.

◆ BufferView() [7/18]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( const BufferCast< T > &  bufferCast)
noexcept

Utility constructor over casts of the same type.

Parameters
bufferCastThe buffer cast which data should be pointed.

◆ BufferView() [8/18]

template<typename T = unsigned char>
template<typename U >
nkMemory::BufferView< T >::BufferView ( const BufferView< U > &  view)
noexcept

Utility constructor over a view of another type, reinterpreting the data.

Parameters
viewThe view to reinterpret.

◆ BufferView() [9/18]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( const BufferView< T > &  view)
noexcept

Utility copy constructor.

Parameters
viewThe view to copy.

◆ BufferView() [10/18]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( BufferView< T > &&  other)
noexcept

Move constructor.

Parameters
otherThe view to move over.

◆ BufferView() [11/18]

template<typename T = unsigned char>
template<typename U , std::size_t S>
nkMemory::BufferView< T >::BufferView ( std::array< U, S > &  array)
noexcept

Utility constructor over an array which memory will be reinterpreted to another type.

Parameters
arrayThe array which data should be referenced.

◆ BufferView() [12/18]

template<typename T = unsigned char>
template<std::size_t S>
nkMemory::BufferView< T >::BufferView ( std::array< T, S > &  array)
noexcept

Utility constructor over an array.

Parameters
arrayThe array which data should be referenced.

◆ BufferView() [13/18]

template<typename T = unsigned char>
template<typename U >
nkMemory::BufferView< T >::BufferView ( std::vector< U > &  vec)
noexcept

Utility constructor over a vector which memory will be reinterpreted to another type.

Parameters
vecThe vector which data should be reinterpreted.

◆ BufferView() [14/18]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( std::vector< T > &  vec)
noexcept

Utility constructor over vectors.

Parameters
vecThe vector which data should be referenced.

◆ BufferView() [15/18]

template<typename T = unsigned char>
template<typename U , std::size_t S, typename = std::enable_if<std::is_const<T>::value>>
nkMemory::BufferView< T >::BufferView ( const std::array< U, S > &  array)
noexcept

Utility reinterpreting constructor over a const array.

Parameters
arrayThe array which data should be reinterpreted.
Remarks
This constructor is only enabled if the view is pointing over a const T (ensuring memory will not be altered).

◆ BufferView() [16/18]

template<typename T = unsigned char>
template<std::size_t S, typename = std::enable_if<std::is_const<T>::value>>
nkMemory::BufferView< T >::BufferView ( const std::array< typename std::remove_const< T >::type, S > &  array)
noexcept

Utility reinterpreting constructor over a const array.

Parameters
arrayThe array which data should be referenced.
Remarks
This constructor is only enabled if the view is pointing over a const T (ensuring memory will not be altered).

◆ BufferView() [17/18]

template<typename T = unsigned char>
template<typename U , typename = std::enable_if<std::is_const<T>::value>>
nkMemory::BufferView< T >::BufferView ( const std::vector< U > &  vec)
noexcept

Utility reinterpreting constructor over a const vector.

Parameters
vecThe vector which data should be reinterpreted.
Remarks
This constructor is only enabled if the view is pointing over a const T (ensuring memory will not be altered).

◆ BufferView() [18/18]

template<typename T = unsigned char>
template<typename = std::enable_if<std::is_const<T>::value>>
nkMemory::BufferView< T >::BufferView ( const std::vector< typename std::remove_const< T >::type > &  vec)
noexcept

Utility vector constructor, const version.

Parameters
vecThe vector which data should be referenced.
Remarks
This constructor is only enabled if the view is pointing over a const T (ensuring memory will not be altered).

Member Function Documentation

◆ getData()

template<typename T = unsigned char>
T* nkMemory::BufferView< T >::getData ( ) const
Returns
The pointer over the internal data.

◆ getSize()

template<typename T = unsigned char>
unsigned long long nkMemory::BufferView< T >::getSize ( ) const
Returns
The size of the buffer, in number of elements.

◆ empty()

template<typename T = unsigned char>
bool nkMemory::BufferView< T >::empty ( ) const
Returns
Whether the buffer is empty (true) or not (false). An empty buffer has a size of 0.

◆ front() [1/2]

template<typename T = unsigned char>
T& nkMemory::BufferView< T >::front ( )
Returns
A reference over the first element of the buffer.

◆ front() [2/2]

template<typename T = unsigned char>
const T& nkMemory::BufferView< T >::front ( ) const
Returns
A reference over the first element of the buffer.

◆ back() [1/2]

template<typename T = unsigned char>
T& nkMemory::BufferView< T >::back ( )
Returns
A reference over the last element of the buffer.

◆ back() [2/2]

template<typename T = unsigned char>
const T& nkMemory::BufferView< T >::back ( ) const
Returns
A reference over the last element of the buffer.

◆ begin() [1/2]

template<typename T = unsigned char>
T* nkMemory::BufferView< T >::begin ( )
Returns
A pointer over the beginning of the memory spot.

◆ begin() [2/2]

template<typename T = unsigned char>
const T* nkMemory::BufferView< T >::begin ( ) const
Returns
A pointer over the beginning of the memory spot.

◆ end() [1/2]

template<typename T = unsigned char>
T* nkMemory::BufferView< T >::end ( )
Returns
A pointer right past the end of the memory spot.

◆ end() [2/2]

template<typename T = unsigned char>
const T* nkMemory::BufferView< T >::end ( ) const
Returns
A pointer right past the end of the memory spot.

◆ subView()

template<typename T = unsigned char>
BufferView<T> nkMemory::BufferView< T >::subView ( unsigned long long  index,
unsigned long long  length = 0 
) const

Allows to create a view over a subpart of current view.

Parameters
indexThe new view's starting element's index.
lengthThe new view's length, from starting element. If 0, it will default to current view's ending point.
Returns
A new view, which memory will be from index, of size length.

◆ operator[]() [1/2]

template<typename T = unsigned char>
T& nkMemory::BufferView< T >::operator[] ( unsigned long long  index)

Indexing operator.

Parameters
indexThe index of the element to index in the memory.
Returns
A reference over requested element.

◆ operator[]() [2/2]

template<typename T = unsigned char>
const T& nkMemory::BufferView< T >::operator[] ( unsigned long long  index) const

Indexing operator, const versioned.

Parameters
indexThe index of the element to index in the memory.
Returns
A reference over requested element.

◆ operator=() [1/2]

template<typename T = unsigned char>
BufferView<T>& nkMemory::BufferView< T >::operator= ( const BufferView< T > &  other)
noexcept

Copy assignment operator.

Parameters
otherThe view to copy over.

◆ operator=() [2/2]

template<typename T = unsigned char>
BufferView<T>& nkMemory::BufferView< T >::operator= ( BufferView< T > &&  other)
noexcept

Move assignment operator.

Parameters
otherThe view to move over.

◆ operator Buffer()

template<typename T = unsigned char>
nkMemory::BufferView< T >::operator Buffer ( ) const

Automatic conversion operator to a binary Buffer. This operation will copy the content as-is, in a binary fashion.

◆ operator BufferCast< U >()

template<typename T = unsigned char>
template<typename U = T>
nkMemory::BufferView< T >::operator BufferCast< U > ( ) const

Automatic conversion operator to a buffer cast of the same type. This operation will copy the content as-is, ready to be interprated as it was.


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