27 #ifndef SCHNEK_ARRAY_HPP_ 28 #define SCHNEK_ARRAY_HPP_ 30 #include "arraycheck.hpp" 32 #include "../config.hpp" 33 #include "../macros.hpp" 35 #include <initializer_list> 39 template<
class Operator,
size_t Length>
56 public CheckingPolicy<Length>
66 static constexpr
size_t length = Length;
69 SCHNEK_INLINE
Array();
71 template<
template<
size_t>
class CheckingPolicy2>
75 template<
class Operator>
82 SCHNEK_INLINE
Array(
const T&);
84 SCHNEK_INLINE
Array(
const T&,
const T&);
86 SCHNEK_INLINE
Array(
const T&,
const T&,
const T&);
88 SCHNEK_INLINE
Array(
const T&,
const T&,
const T&,
const T&);
90 SCHNEK_INLINE
Array(
const T&,
const T&,
const T&,
const T&,
const T&);
92 SCHNEK_INLINE
Array(
const T&,
const T&,
const T&,
const T&,
const T&,
95 SCHNEK_INLINE
Array(
const T&,
const T&,
const T&,
const T&,
const T&,
98 SCHNEK_INLINE
Array(
const T&,
const T&,
const T&,
const T&,
const T&,
99 const T&,
const T&,
const T&);
101 SCHNEK_INLINE
Array(
const T&,
const T&,
const T&,
const T&,
const T&,
102 const T&,
const T&,
const T&,
const T&);
104 SCHNEK_INLINE
Array(
const T&,
const T&,
const T&,
const T&,
const T&,
105 const T&,
const T&,
const T&,
const T&,
const T&);
107 SCHNEK_INLINE ~Array() {}
115 SCHNEK_INLINE T&
at(
size_t);
117 SCHNEK_INLINE T
at(
size_t)
const;
126 template<
class T2,
template <
size_t>
class CheckingPolicy2>
130 template<
class Operator>
139 template<
class T2,
template <
size_t>
class CheckingPolicy2>
148 template<
class T2,
template <
size_t>
class CheckingPolicy2>
157 template<
class T2,
template <
size_t>
class CheckingPolicy2>
166 template<
class T2,
template <
size_t>
class CheckingPolicy2>
175 template<
typename T2>
184 template<
typename T2>
193 template<
typename T2>
202 template<
typename T2>
207 template<
class Operator>
211 template<
class Operator>
215 template<
class Operator>
219 template<
class Operator>
229 template<
size_t destLength>
232 Array<T,Length-1,CheckingPolicy> projectDim(
size_t dim)
const;
262 template<
size_t>
class CheckingPolicy1,
template<
size_t>
class CheckingPolicy2
264 SCHNEK_INLINE
bool operator==(
272 template<
size_t>
class CheckingPolicy1,
template<
size_t>
class CheckingPolicy2
274 SCHNEK_INLINE
bool operator!=(
282 template<
size_t>
class CheckingPolicy1,
template<
size_t>
class CheckingPolicy2
284 SCHNEK_INLINE
bool operator<(
292 template<
size_t>
class CheckingPolicy1,
template<
size_t>
class CheckingPolicy2
294 SCHNEK_INLINE
bool operator<=(
302 #endif // SCHNEK_ARRAY_HPP_ Array< T, Length, CheckingPolicy > & clear()
Sets all fields to zero.
SCHNEK_INLINE Array< T, Length, CheckingPolicy > & operator+=(const Array< T2, Length, CheckingPolicy2 > &)
Array< T, Length, CheckingPolicy > & fill(const T &)
Fills all fields with a given value.
SCHNEK_INLINE T & at(size_t)
Accessor operator.
SCHNEK_INLINE Array()
The default constructor.
T product() const
Returns the product of all elements.
Definition: arraycheck.hpp:44
T sum() const
Returns the sum of all elements.
SCHNEK_INLINE T & operator[](size_t)
Accessor operator.
T sqr() const
Returns the sum of squares of all elements.
static Array< T, Length, CheckingPolicy > Ones()
Array< T, destLength, CheckingPolicy > project() const
projects the Array onto an Array of shorter length
SCHNEK_INLINE Array< T, Length, CheckingPolicy > & operator*=(const Array< T2, Length, CheckingPolicy2 > &)
SCHNEK_INLINE Array< T, Length, CheckingPolicy > & operator=(const Array< T2, Length, CheckingPolicy2 > &)
static Array< T, Length, CheckingPolicy > Zero()
SCHNEK_INLINE Array< T, Length, CheckingPolicy > & operator/=(const Array< T2, Length, CheckingPolicy2 > &)
SCHNEK_INLINE Array< T, Length, CheckingPolicy > & operator-=(const Array< T2, Length, CheckingPolicy2 > &)