Ocean
Ocean::NonconstTemplateArrayAccessor< T > Class Template Reference

This class implements an accessor providing direct access to an array of elements. More...

Public Types

typedef T Type
 Definition of the element type of this accessor. More...
 
typedef size_t KeyType
 Definition of the key (or e.g., index) type of this accessor. More...
 

Public Member Functions

 NonconstTemplateArrayAccessor ()=default
 Creates a new empty accessor. More...
 
 NonconstTemplateArrayAccessor (NonconstTemplateArrayAccessor< T > &&accessor) noexcept
 Move constructor. More...
 
 NonconstTemplateArrayAccessor (T *elements, const size_t size)
 Creates a new accessor object. More...
 
 NonconstTemplateArrayAccessor (std::vector< T > &elements)
 Creates a new accessor object. More...
 
 NonconstTemplateArrayAccessor (std::vector< T > &elements, const size_t resizeSize)
 Creates a new accessor object. More...
 
 NonconstTemplateArrayAccessor (std::vector< T > *elements, const size_t resizeSize=0)
 Creates a new accessor object. More...
 
const T * data () const
 Returns a pointer to the elements of this accessor if the data exists within one memory block without gaps. More...
 
T * data ()
 Returns a pointer to the elements of this accessor if the data exists within one memory block without gaps. More...
 
size_t size () const
 Returns the number of accessible elements of this accessor object. More...
 
bool isEmpty () const
 Returns whether this accessor provides no elements. More...
 
bool canAccess (const size_t &index) const
 Returns whether this accessor has a specific element. More...
 
bool firstElement (T &element, size_t &index) const
 Returns the first element of this accessor. More...
 
bool nextElement (const size_t &previousIndex, T &nextElement, size_t &nextIndex) const
 Returns the next element which follows a given key of the previous element. More...
 
const T & operator[] (const size_t &index) const
 Returns one element of this accessor object. More...
 
T & operator[] (const size_t &index)
 Returns one element of this accessor object. More...
 
NonconstTemplateArrayAccessor< T > & operator= (NonconstTemplateArrayAccessor< T > &&accessor) noexcept
 Move operator. More...
 

Protected Attributes

T * elements_ = nullptr
 The elements of this accessor. More...
 
size_t size_ = 0
 The number of elements that can be accessed. More...
 

Detailed Description

template<typename T>
class Ocean::NonconstTemplateArrayAccessor< T >

This class implements an accessor providing direct access to an array of elements.

An instance of this accessor does not copy the elements, thus the caller has to ensure that the actual elements exist as long as the instance of the accessor exists.
This class is not derived from Accessor (or any other Accessor class) to avoid virtual functions ensuring higher element-access performances.
Thus, this class will mainly be applied in template functions where the type of the accessor is defined at compile time.

Template Parameters
TThe data type of the elements of the accessor
See also
NonconstArrayAccessor, ConstTemplateArrayAccessor.

Member Typedef Documentation

◆ KeyType

template<typename T >
typedef size_t Ocean::NonconstTemplateArrayAccessor< T >::KeyType

Definition of the key (or e.g., index) type of this accessor.

◆ Type

template<typename T >
typedef T Ocean::NonconstTemplateArrayAccessor< T >::Type

Definition of the element type of this accessor.

Constructor & Destructor Documentation

◆ NonconstTemplateArrayAccessor() [1/6]

Creates a new empty accessor.

◆ NonconstTemplateArrayAccessor() [2/6]

template<typename T >
Ocean::NonconstTemplateArrayAccessor< T >::NonconstTemplateArrayAccessor ( NonconstTemplateArrayAccessor< T > &&  accessor)
inlinenoexcept

Move constructor.

Parameters
accessorAccessor to be moved

◆ NonconstTemplateArrayAccessor() [3/6]

template<typename T >
Ocean::NonconstTemplateArrayAccessor< T >::NonconstTemplateArrayAccessor ( T *  elements,
const size_t  size 
)
inline

Creates a new accessor object.

Beware: The given elements are not copied, they must not be deleted before the accessor is disposed.

Parameters
elementsThe elements that can be accessed, may be nullptr if size is equal 0
sizeThe number of elements that can be accessed, may be 0 if elements is nullptr

◆ NonconstTemplateArrayAccessor() [4/6]

template<typename T >
Ocean::NonconstTemplateArrayAccessor< T >::NonconstTemplateArrayAccessor ( std::vector< T > &  elements)
inlineexplicit

Creates a new accessor object.

Beware: The given elements are not copied, they must not be deleted before the accessor is disposed.

Parameters
elementsA vector holding all elements

◆ NonconstTemplateArrayAccessor() [5/6]

template<typename T >
Ocean::NonconstTemplateArrayAccessor< T >::NonconstTemplateArrayAccessor ( std::vector< T > &  elements,
const size_t  resizeSize 
)
inline

Creates a new accessor object.

This constructor simplifies the creation of an optional NonconstTemplateArrayAccessor object by allowing to provide an empty vector object while defining an explicit resize value.
Beware: The given elements are not copied, they must not be deleted before the accessor is disposed.

Parameters
elementsA vector holding all elements
resizeSizeAn explicit resize value that will invoke a resizing of the given vector before the vector is connected with the accessor, with range [1, infinity), 0 to avoid any resizing

◆ NonconstTemplateArrayAccessor() [6/6]

template<typename T >
Ocean::NonconstTemplateArrayAccessor< T >::NonconstTemplateArrayAccessor ( std::vector< T > *  elements,
const size_t  resizeSize = 0 
)
inlineexplicit

Creates a new accessor object.

This constructor simplifies the creation of an optional NonconstTemplateArrayAccessor object.
Beware: The given elements are not copied, they must not be deleted before the accessor is disposed.

Parameters
elementsAn optional vector holding all elements, nullptr to create an empty invalid accessor
resizeSizeAn optional possibility to resize the provided elements vector (if defined - otherwise nothing happens), with range [1, infinity), 0 to avoid any resizing

Member Function Documentation

◆ canAccess()

template<typename T >
bool Ocean::NonconstTemplateArrayAccessor< T >::canAccess ( const size_t &  index) const
inline

Returns whether this accessor has a specific element.

See also
NonconstAccessor::canAccess().

◆ data() [1/2]

template<typename T >
T * Ocean::NonconstTemplateArrayAccessor< T >::data
inline

Returns a pointer to the elements of this accessor if the data exists within one memory block without gaps.

See also
NonconstAccessor::data().

◆ data() [2/2]

template<typename T >
const T * Ocean::NonconstTemplateArrayAccessor< T >::data
inline

Returns a pointer to the elements of this accessor if the data exists within one memory block without gaps.

See also
ConstAccessor::data().

◆ firstElement()

template<typename T >
bool Ocean::NonconstTemplateArrayAccessor< T >::firstElement ( T &  element,
size_t &  index 
) const
inline

Returns the first element of this accessor.

See also
ConstAccessor:firstElement().

◆ isEmpty()

template<typename T >
bool Ocean::NonconstTemplateArrayAccessor< T >::isEmpty
inline

Returns whether this accessor provides no elements.

See also
NonconstAccessor::isEmpty().

◆ nextElement()

template<typename T >
bool Ocean::NonconstTemplateArrayAccessor< T >::nextElement ( const size_t &  previousIndex,
T &  nextElement,
size_t &  nextIndex 
) const
inline

Returns the next element which follows a given key of the previous element.

See also
ConstAccessor::nextElement().

◆ operator=()

template<typename T >
NonconstTemplateArrayAccessor< T > & Ocean::NonconstTemplateArrayAccessor< T >::operator= ( NonconstTemplateArrayAccessor< T > &&  accessor)
inlinenoexcept

Move operator.

Parameters
accessorAccessor to be moved
Returns
Reference to this accessor

◆ operator[]() [1/2]

template<typename T >
T & Ocean::NonconstTemplateArrayAccessor< T >::operator[] ( const size_t &  index)
inline

Returns one element of this accessor object.

See also
NonconstAccessor::operator[].

◆ operator[]() [2/2]

template<typename T >
const T & Ocean::NonconstTemplateArrayAccessor< T >::operator[] ( const size_t &  index) const
inline

Returns one element of this accessor object.

See also
ConstAccessor::operator[].

◆ size()

template<typename T >
size_t Ocean::NonconstTemplateArrayAccessor< T >::size
inline

Returns the number of accessible elements of this accessor object.

See also
NonconstAccessor::size().

Field Documentation

◆ elements_

template<typename T >
T* Ocean::NonconstTemplateArrayAccessor< T >::elements_ = nullptr
protected

The elements of this accessor.

◆ size_

template<typename T >
size_t Ocean::NonconstTemplateArrayAccessor< T >::size_ = 0
protected

The number of elements that can be accessed.


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