17#ifndef AGXDATA_RANGE_H
18#define AGXDATA_RANGE_H
40 template <
typename T2>
112 template <
typename T>
118 template <
typename T>
125 iterator& operator++();
126 iterator operator++(
int);
149 template <
typename T>
152 template <
typename T>
155 template <
typename T>
template <
typename T2>
162 template <
typename T>
166 template <
typename T>
169 template <
typename T>
172 template <
typename T>
175 template <
typename T>
187 return a != 0 && b != 0 && (a >> 63) != (b >> 63);
195 return a != 0 && b != 0 && (a >> 31) != (b >> 31);
198 template <
typename T>
201 if (m_start < other.m_start) m_start = other.m_start;
202 if (m_end > other.m_end) m_end = other.m_end;
205 template <
typename T>
208 return m_start <= m_end;
212 template <
typename T>
215 template <
typename T>
219 template <
typename T>
222 template <
typename T>
225 template <
typename T>
229 template <
typename T>
232 return m_start == other.m_start && m_end == other.m_end;
235 template <
typename T>
238 return m_start != other.m_start || m_end != other.m_end;
242 template <
typename T>
245 template <
typename T>
248 template <
typename T>
251 template <
typename T>
256 template <
typename T>
259 output << (T)range.
begin() <<
":" << (T)range.
end();
266 template <
typename T>
276 template <
typename T>
281 template <
typename T>
286 template <
typename T>
293 template <
typename T>
300 template <
typename T>
303 template <
typename T>
IndexRangeT< T > & operator+=(T rhs)
bool contains(T index) const
IndexRangeT< T > & operator-=(T rhs)
IndexRangeT< T > operator-(T rhs) const
void set(T begin, T end)
Set the range.
IndexRangeT(T start, T end)
bool operator==(const IndexRangeT< T > &other) const
bool operator!=(const IndexRangeT< T > &other) const
IndexRangeT< T > operator+(T rhs) const
void clamp(const IndexRangeT< T > &other)
Clamp range using another range as limits.
T operator[](T localIndex) const
[]-operator
bool hasOverlap(const IndexRangeT< T > &other) const
Vector containing 'raw' data.
The agx namespace contains the dynamics/math part of the AGX Dynamics API.
Vec3T< T > operator*(const Vec3T< T > &v, const AffineMatrix4x4T< T > &m)
IndexRangeT< agx::UInt32 > IndexRange32
IndexRangeT< agx::UInt > IndexRange
LinearProbingHashSetImplementation< KeyT, HashT >::iterator end(LinearProbingHashSetImplementation< KeyT, HashT > &set)
std::ostream & operator<<(std::ostream &os, const agx::AddedMassInteraction::Matrix6x6 &m)
VectorPOD< IndexRange > IndexRangeVector
IndexRangeT< agx::UInt64 > IndexRange64
VectorPOD< IndexRange32 > IndexRange32Vector
LinearProbingHashSetImplementation< KeyT, HashT >::iterator begin(LinearProbingHashSetImplementation< KeyT, HashT > &set)
AGXCORE_EXPORT const InvalidIndexStruct InvalidIndex
IndexRangeT< T > makeIndexRange(const T begin, const T end)
VectorPOD< IndexRange64 > IndexRange64Vector