Ocean
Ocean::ConstElementAccessor< T > Class Template Reference

This class implements an accessor providing direct access to a constant array of elements while all elements are identical (all elements point to one unique object). More...

Inheritance diagram for Ocean::ConstElementAccessor< T >:

Public Member Functions

 ConstElementAccessor ()=default
 Creates a new empty accessor. More...
 
 ConstElementAccessor (ConstElementAccessor< T > &&accessor) noexcept
 Move constructor. More...
 
 ConstElementAccessor (const size_t size, const T &element)
 Creates a new accessor object. More...
 
virtual size_t size () const
 Returns the number of accessible elements of this accessor object. More...
 
virtual const T & operator[] (const size_t &index) const
 Returns one element of this accessor object. More...
 
ConstElementAccessor< T > & operator= (ConstElementAccessor< T > &&accessor) noexcept
 Move operator. More...
 
- Public Member Functions inherited from Ocean::ConstIndexedAccessor< T >
virtual bool canAccess (const size_t &index) const
 Returns whether this accessor has a specific element. More...
 
virtual bool firstElement (T &element, size_t &index) const
 Returns the first element of this accessor. More...
 
virtual 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...
 
- Public Member Functions inherited from Ocean::ConstAccessor< T, size_t >
virtual const T * data () const
 Returns a pointer to the elements of this accessor if the data exists within one memory block without gaps. More...
 
- Public Member Functions inherited from Ocean::Accessor
virtual ~Accessor ()=default
 Default destructor. More...
 
bool isEmpty () const
 Returns whether this accessor provides no elements. More...
 

Protected Attributes

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

Additional Inherited Members

- Public Types inherited from Ocean::ConstAccessor< T, size_t >
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...
 
- Static Public Member Functions inherited from Ocean::Accessor
template<typename TAccessor >
static std::vector< typename TAccessor::Type > accessor2elements (const TAccessor &accessor)
 Returns all elements of a given accessor (as a block). More...
 
template<typename TAccessor >
static std::unordered_map< typename TAccessor::KeyType, typename TAccessor::Type > accessor2map (const TAccessor &accessor)
 Returns all elements of a given accessor as a map with key and elements. More...
 
template<typename TAccessor , typename TIndex >
static std::vector< typename TAccessor::Type > accessor2subsetElements (const TAccessor &accessor, const std::vector< TIndex > &subset)
 Returns a subset of all elements of a given accessor (as a block). More...
 
- Protected Member Functions inherited from Ocean::ConstIndexedAccessor< T >
 ConstIndexedAccessor ()=default
 Creates a new indexed-based accessor object. More...
 
- Protected Member Functions inherited from Ocean::ConstAccessor< T, size_t >
 ConstAccessor ()=default
 Protected default constructor. More...
 
- Protected Member Functions inherited from Ocean::Accessor
 Accessor ()=default
 Protected default constructor. More...
 
 Accessor (const Accessor &accessor)=default
 Protected copy constructor. More...
 
Accessoroperator= (const Accessor &accessor)=delete
 Deleted assign operator. More...
 

Detailed Description

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

This class implements an accessor providing direct access to a constant array of elements while all elements are identical (all elements point to one unique object).

This accessor can be used to simulate a large array with several identical entries.

See also
ConstArrayAccessor.

Constructor & Destructor Documentation

◆ ConstElementAccessor() [1/3]

template<typename T >
Ocean::ConstElementAccessor< T >::ConstElementAccessor ( )
default

Creates a new empty accessor.

◆ ConstElementAccessor() [2/3]

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

Move constructor.

Parameters
accessorAccessor to be moved

◆ ConstElementAccessor() [3/3]

template<typename T >
Ocean::ConstElementAccessor< T >::ConstElementAccessor ( const size_t  size,
const T &  element 
)
inline

Creates a new accessor object.

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

Parameters
sizeThe number of elements that can be accessed, with range [1, infinity)
elementThe element that can be accessed though any index

Member Function Documentation

◆ operator=()

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

Move operator.

Parameters
accessorAccessor to be moved
Returns
Reference to this accessor

◆ operator[]()

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

Returns one element of this accessor object.

See also
ConstAccessor::operator[].

Implements Ocean::ConstIndexedAccessor< T >.

◆ size()

template<typename T >
size_t Ocean::ConstElementAccessor< T >::size
virtual

Returns the number of accessible elements of this accessor object.

See also
ConstAccessor::size().

Implements Ocean::Accessor.

Field Documentation

◆ element_

template<typename T >
const T* Ocean::ConstElementAccessor< T >::element_ = nullptr
protected

The element of this accessor.

◆ size_

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

The number of elements that can be accessed.


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