17#ifndef AGX_STACKARRAY_H
18#define AGX_STACKARRAY_H
24#include <initializer_list>
32 template <
typename T,
size_t N >
57 const T&
at(
size_t i)
const;
89 const T*
begin() const noexcept;
92 const T*
end() const noexcept;
97 template <typename T2,
size_t N2>
98 friend
std::ostream& operator << (
std::ostream& output, const
StackArray<T2, N2>& array);
102 std::array<T, N> m_elements;
106 template <typename T,
size_t N>
109 template <typename T,
size_t N>
112 template <typename T,
size_t N>
115 template <typename T,
size_t N>
119 template <typename T,
size_t N>
125 template <
typename T,
size_t N>
131 for (
size_t i = 0; i < m_size; ++i)
132 m_elements[i] = rhs[i];
137 template <
typename T,
size_t N>
140 m_elements.fill( T() );
142 for (
size_t i = 0; i <
size; ++i)
143 m_elements[i] = defaultValue;
147 template <
typename T,
size_t N>
151 std::copy(std::begin(values), std::end(values), std::begin(
m_elements));
156 template <
typename T,
size_t N>
163 template <
typename T,
size_t N>
170 template <
typename T,
size_t N>
178 template <
typename T,
size_t N>
186 template <
typename T,
size_t N>
194 template <
typename T,
size_t N>
201 template <
typename T,
size_t N>
209 template <
typename T,
size_t N>
217 template <
typename T,
size_t N>
224 template <
typename T,
size_t N>
232 template <
typename T,
size_t N>
240 template <
typename T,
size_t N>
248 template <
typename T,
size_t N>
256 template <
typename T,
size_t N>
262 template <
typename T,
size_t N>
268 template <
typename T,
size_t N>
271 return begin() + size();
274 template <
typename T,
size_t N>
277 return begin() + size();
280 template <
typename T,
size_t N>
283 for (
size_t i = 0; i < array.
size(); i++) {
285 if (i < array.size()-1)
292 template <
typename T,
size_t N>
296 for (
size_t i = index + 1; i <
m_size; i++)
303 template <
typename T,
size_t N>
306 return array.
begin();
309 template <
typename T,
size_t N>
312 return array.
begin();
315 template <
typename T,
size_t N>
321 template <
typename T,
size_t N>
Templated stack array class.
size_t size() const
Get the size of the array (number of filled slots).
const T & at(size_t i) const
StackArray(size_t size, const T &defaultValue=T())
bool empty() const
Is the StackArray empty?
void push_back(const T &value)
StackArray()
Implementations.
StackArray< T, N > & operator=(const StackArray< T, N2 > &rhs)
StackArray(std::initializer_list< T > values)
The agx namespace contains the dynamics/math part of the AGX Dynamics API.
LinearProbingHashSetImplementation< KeyT, HashT >::iterator end(LinearProbingHashSetImplementation< KeyT, HashT > &set)
std::ostream & operator<<(std::ostream &os, const agx::AddedMassInteraction::Matrix6x6 &m)
LinearProbingHashSetImplementation< KeyT, HashT >::iterator begin(LinearProbingHashSetImplementation< KeyT, HashT > &set)