Template Numerical Library version\ main:161afe73
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
TNL::Containers::StaticArray< Size, Value > Class Template Reference

Array with constant size. More...

#include <TNL/Containers/StaticArray.h>

Inheritance diagram for TNL::Containers::StaticArray< Size, Value >:
Inheritance graph
[legend]
Collaboration diagram for TNL::Containers::StaticArray< Size, Value >:
Collaboration graph
[legend]

Public Types

using IndexType = int
 Type being used for the array elements indexing.
 
using ValueType = Value
 Type of elements stored in this array.
 

Public Member Functions

__cuda_callable__ constexpr StaticArray ()=default
 Default constructor.
 
__cuda_callable__ constexpr StaticArray (const StaticArray &v)
 Copy constructor. More...
 
__cuda_callable__ constexpr StaticArray (const std::initializer_list< Value > &elems)
 Constructor which initializes the array by copying elements from std::initializer_list, e.g. {...}. More...
 
__cuda_callable__ constexpr StaticArray (const Value &v)
 Constructor that sets all array components to value v. More...
 
template<typename _unused = void>
__cuda_callable__ constexpr StaticArray (const Value v[Size])
 Constructor from static array. More...
 
template<typename _unused >
constexpr StaticArray (const Value v[Size])
 
constexpr StaticArray (StaticArray &&) noexcept=default
 Move constructor.
 
template<typename... Values, std::enable_if_t<(Size > 1) &&sizeof...(Values)==Size, bool > = true>
__cuda_callable__ constexpr StaticArray (Values &&... values)
 Constructor which initializes the array element-by-element using the supplied values. More...
 
constexpr Value * getData ()
 Gets pointer to data of this static array.
 
constexpr const Value * getData () const
 Gets constant pointer to data of this static array.
 
bool load (File &file)
 Loads data from the file to this static array. More...
 
template<typename OtherValue >
__cuda_callable__ constexpr operator StaticArray< Size, OtherValue > () const
 Cast operator for changing of the Value type. More...
 
template<typename Array >
constexpr bool operator!= (const Array &array) const
 This function checks whether this static array is not equal to another array. More...
 
constexpr Value & operator() (int i)
 Accesses specified element at the position i and returns a reference to its value. More...
 
constexpr const Value & operator() (int i) const
 Accesses specified element at the position i and returns a constant reference to its value. More...
 
constexpr StaticArrayoperator= (const StaticArray &v)
 Copy-assignment operator.
 
template<typename T >
constexpr StaticArray< Size, Value > & operator= (const T &v)
 Assigns an object v of type T. More...
 
constexpr StaticArrayoperator= (StaticArray &&) noexcept=default
 Move-assignment operator.
 
template<typename Array >
constexpr bool operator== (const Array &array) const
 This function checks whether this static array is equal to another array. More...
 
constexpr Value & operator[] (int i)
 Accesses specified element at the position i and returns a reference to its value. More...
 
constexpr const Value & operator[] (int i) const
 Accesses specified element at the position i and returns a constant reference to its value. More...
 
bool save (File &file) const
 Saves this static array into the file. More...
 
constexpr void setValue (const ValueType &val)
 Sets all values of this static array to val.
 
constexpr void sort ()
 Sorts the elements in this static array in ascending order.
 
std::ostreamwrite (std::ostream &str, const char *separator=" ") const
 Writes the array values into stream str with specified separator. More...
 
constexpr Value & x ()
 Returns reference to the first coordinate.
 
constexpr const Value & x () const
 Returns constant reference to the first coordinate.
 
constexpr Value & y ()
 Returns reference to the second coordinate for arrays with Size >= 2.
 
constexpr const Value & y () const
 Returns constant reference to the second coordinate for arrays with Size >= 2.
 
constexpr Value & z ()
 Returns reference to the third coordinate for arrays with Size >= 3.
 
constexpr const Value & z () const
 Returns constant reference to the third coordinate for arrays with Size >= 3.
 

Static Public Member Functions

static constexpr int getSize ()
 Gets size of this array.
 

Protected Attributes

std::array< Value, Size > data
 

Detailed Description

template<int Size, typename Value>
class TNL::Containers::StaticArray< Size, Value >

Array with constant size.

Template Parameters
SizeSize of static array. Number of its elements.
ValueType of the values in static array.

Constructor & Destructor Documentation

◆ StaticArray() [1/5]

template<int Size, typename Value >
template<typename _unused = void>
__cuda_callable__ constexpr TNL::Containers::StaticArray< Size, Value >::StaticArray ( const Value  v[Size])
constexpr

Constructor from static array.

Parameters
vInput array.

◆ StaticArray() [2/5]

template<int Size, typename Value >
__cuda_callable__ constexpr TNL::Containers::StaticArray< Size, Value >::StaticArray ( const Value &  v)
constexpr

Constructor that sets all array components to value v.

Parameters
vReference to a value.

◆ StaticArray() [3/5]

template<int Size, typename Value >
constexpr TNL::Containers::StaticArray< Size, Value >::StaticArray ( const StaticArray< Size, Value > &  v)
constexpr

Copy constructor.

Constructs a copy of another static array v.

◆ StaticArray() [4/5]

template<int Size, typename Value >
template<typename... Values, std::enable_if_t<(Size > 1) &&sizeof...(Values)==Size, bool > >
__cuda_callable__ constexpr TNL::Containers::StaticArray< Size, Value >::StaticArray ( Values &&...  values)
constexpr

Constructor which initializes the array element-by-element using the supplied values.

It behaves like the aggregate-initialization in std::array, e.g. StaticArray< 3, int > a = {1, 2, 3};. The number of supplied arguments must be equal to Size.

Parameters
valuesThe elements forwarded to the constructor of the underlying std::array.

◆ StaticArray() [5/5]

template<int Size, typename Value >
__cuda_callable__ constexpr TNL::Containers::StaticArray< Size, Value >::StaticArray ( const std::initializer_list< Value > &  elems)
constexpr

Constructor which initializes the array by copying elements from std::initializer_list, e.g. {...}.

The initializer list size must larger or equal to Size.

Parameters
elemsinput initializer list

Member Function Documentation

◆ load()

template<int Size, typename Value >
bool TNL::Containers::StaticArray< Size, Value >::load ( File file)

Loads data from the file to this static array.

Parameters
fileReference to a file.

◆ operator StaticArray< Size, OtherValue >()

template<int Size, typename Value >
template<typename OtherValue >
__cuda_callable__ constexpr TNL::Containers::StaticArray< Size, Value >::operator StaticArray< Size, OtherValue >
constexpr

Cast operator for changing of the Value type.

Returns static array having ValueType set to OtherValue, i.e. StaticArray< Size, OtherValue >.

Template Parameters
OtherValueis the Value type of the static array the casting will be performed to.
Returns
instance of StaticArray< Size, OtherValue >

◆ operator!=()

template<int Size, typename Value >
template<typename Array >
constexpr bool TNL::Containers::StaticArray< Size, Value >::operator!= ( const Array array) const
constexpr

This function checks whether this static array is not equal to another array.

Return true if the arrays are not equal in size. Otherwise returns false.

◆ operator()() [1/2]

template<int Size, typename Value >
constexpr Value & TNL::Containers::StaticArray< Size, Value >::operator() ( int  i)
constexpr

Accesses specified element at the position i and returns a reference to its value.

Equivalent to operator[].

◆ operator()() [2/2]

template<int Size, typename Value >
constexpr const Value & TNL::Containers::StaticArray< Size, Value >::operator() ( int  i) const
constexpr

Accesses specified element at the position i and returns a constant reference to its value.

Equivalent to operator[].

◆ operator=()

template<int Size, typename Value >
template<typename T >
constexpr StaticArray< Size, Value > & TNL::Containers::StaticArray< Size, Value >::operator= ( const T &  v)
constexpr

Assigns an object v of type T.

T can be:

  1. Static linear container implementing operator[] and having the same size. In this case, v is copied to this array elementwise.
  2. An object that can be converted to Value type. In this case all elements are set to v.

◆ operator==()

template<int Size, typename Value >
template<typename Array >
constexpr bool TNL::Containers::StaticArray< Size, Value >::operator== ( const Array array) const
constexpr

This function checks whether this static array is equal to another array.

Return true if the arrays are equal in size. Otherwise returns false.

◆ operator[]() [1/2]

template<int Size, typename Value >
constexpr Value & TNL::Containers::StaticArray< Size, Value >::operator[] ( int  i)
constexpr

Accesses specified element at the position i and returns a reference to its value.

Parameters
iIndex position of an element.

◆ operator[]() [2/2]

template<int Size, typename Value >
constexpr const Value & TNL::Containers::StaticArray< Size, Value >::operator[] ( int  i) const
constexpr

Accesses specified element at the position i and returns a constant reference to its value.

Parameters
iIndex position of an element.

◆ save()

template<int Size, typename Value >
bool TNL::Containers::StaticArray< Size, Value >::save ( File file) const

Saves this static array into the file.

Parameters
fileReference to a file.

◆ write()

template<int Size, typename Value >
std::ostream & TNL::Containers::StaticArray< Size, Value >::write ( std::ostream str,
const char *  separator = " " 
) const

Writes the array values into stream str with specified separator.

Parameters
strReference to a stream.
separatorCharacter separating the array values in the stream str. Is set to " " by default.

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