PxStrideIterator< T > Class Template Reference
[Foundation]
Iterator class for iterating over arrays of data that may be interleaved with other data.
More...
#include <PxStrideIterator.h>
Public Member Functions | |
PX_INLINE | PxStrideIterator (T *ptr=NULL, PxU32 stride=sizeof(T)) |
Constructor. | |
PX_INLINE | PxStrideIterator (const PxStrideIterator< typename StripConst< T >::Type > &strideIterator) |
Copy constructor. | |
PX_INLINE T * | ptr () const |
Get pointer to element. | |
PX_INLINE PxU32 | stride () const |
Get stride. | |
PX_INLINE T & | operator* () const |
Indirection operator. | |
PX_INLINE T * | operator-> () const |
Dereferencing operator. | |
PX_INLINE T & | operator[] (unsigned int i) const |
Indexing operator. | |
PX_INLINE PxStrideIterator & | operator++ () |
Pre-increment operator. | |
PX_INLINE PxStrideIterator | operator++ (int) |
Post-increment operator. | |
PX_INLINE PxStrideIterator & | operator-- () |
Pre-decrement operator. | |
PX_INLINE PxStrideIterator | operator-- (int) |
Post-decrement operator. | |
PX_INLINE PxStrideIterator | operator+ (unsigned int i) const |
Addition operator. | |
PX_INLINE PxStrideIterator | operator- (unsigned int i) const |
Subtraction operator. | |
PX_INLINE PxStrideIterator & | operator+= (unsigned int i) |
Addition compound assignment operator. | |
PX_INLINE PxStrideIterator & | operator-= (unsigned int i) |
Subtraction compound assignment operator. | |
PX_INLINE int | operator- (const PxStrideIterator &other) const |
Iterator difference. | |
PX_INLINE bool | operator== (const PxStrideIterator &other) const |
Equality operator. | |
PX_INLINE bool | operator!= (const PxStrideIterator &other) const |
Inequality operator. | |
PX_INLINE bool | operator< (const PxStrideIterator &other) const |
Less than operator. | |
PX_INLINE bool | operator> (const PxStrideIterator &other) const |
Greater than operator. | |
PX_INLINE bool | operator<= (const PxStrideIterator &other) const |
Less or equal than operator. | |
PX_INLINE bool | operator>= (const PxStrideIterator &other) const |
Greater or equal than operator. | |
Private Member Functions | |
PX_INLINE bool | isCompatible (const PxStrideIterator &other) const |
Static Private Member Functions | |
static PX_INLINE T * | byteAdd (T *ptr, PxU32 bytes) |
static PX_INLINE T * | byteSub (T *ptr, PxU32 bytes) |
Private Attributes | |
T * | mPtr |
PxU32 | mStride |
Detailed Description
template<typename T>
class PxStrideIterator< T >
Iterator class for iterating over arrays of data that may be interleaved with other data.
This class is used for iterating over arrays of elements that may have a larger element to element offset, called the stride, than the size of the element itself (non-contiguous).
The template parameter T denotes the type of the element accessed. The stride itself is stored as a member field so multiple instances of a PxStrideIterator class can have different strides. This is useful for cases were the stride depends on runtime configuration.
The stride iterator can be used for index based access, e.g.:
PxStrideIterator<PxVec3> strideArray(...); for (unsigned i = 0; i < 10; ++i) { PxVec3& vec = strideArray[i]; ... }
PxStrideIterator<PxVec3> strideBegin(...); PxStrideIterator<PxVec3> strideEnd(strideBegin + 10); for (PxStrideIterator<PxVec3> it = strideBegin; it < strideEnd; ++it) { PxVec3& vec = *it; ... }
Two special cases:
- A stride of sizeof(T) represents a regular c array of type T.
- A stride of 0 can be used to describe re-occurrence of the same element multiple times.
Constructor & Destructor Documentation
PX_INLINE PxStrideIterator< T >::PxStrideIterator | ( | T * | ptr = NULL , |
|
PxU32 | stride = sizeof(T) | |||
) | [inline, explicit] |
Constructor.
Optionally takes a pointer to an element and a stride.
- Parameters:
-
[in] ptr pointer to element, defaults to NULL. [in] stride stride for accessing consecutive elements, defaults to the size of one element.
PX_INLINE PxStrideIterator< T >::PxStrideIterator | ( | const PxStrideIterator< typename StripConst< T >::Type > & | strideIterator | ) | [inline] |
Member Function Documentation
static PX_INLINE T* PxStrideIterator< T >::byteAdd | ( | T * | ptr, | |
PxU32 | bytes | |||
) | [inline, static, private] |
static PX_INLINE T* PxStrideIterator< T >::byteSub | ( | T * | ptr, | |
PxU32 | bytes | |||
) | [inline, static, private] |
PX_INLINE bool PxStrideIterator< T >::isCompatible | ( | const PxStrideIterator< T > & | other | ) | const [inline, private] |
PX_INLINE bool PxStrideIterator< T >::operator!= | ( | const PxStrideIterator< T > & | other | ) | const [inline] |
Inequality operator.
PX_INLINE T& PxStrideIterator< T >::operator* | ( | ) | const [inline] |
Indirection operator.
PX_INLINE PxStrideIterator PxStrideIterator< T >::operator+ | ( | unsigned int | i | ) | const [inline] |
Addition operator.
PX_INLINE PxStrideIterator PxStrideIterator< T >::operator++ | ( | int | ) | [inline] |
Post-increment operator.
PX_INLINE PxStrideIterator& PxStrideIterator< T >::operator++ | ( | ) | [inline] |
Pre-increment operator.
PX_INLINE PxStrideIterator& PxStrideIterator< T >::operator+= | ( | unsigned int | i | ) | [inline] |
Addition compound assignment operator.
PX_INLINE int PxStrideIterator< T >::operator- | ( | const PxStrideIterator< T > & | other | ) | const [inline] |
Iterator difference.
PX_INLINE PxStrideIterator PxStrideIterator< T >::operator- | ( | unsigned int | i | ) | const [inline] |
Subtraction operator.
PX_INLINE PxStrideIterator PxStrideIterator< T >::operator-- | ( | int | ) | [inline] |
Post-decrement operator.
PX_INLINE PxStrideIterator& PxStrideIterator< T >::operator-- | ( | ) | [inline] |
Pre-decrement operator.
PX_INLINE PxStrideIterator& PxStrideIterator< T >::operator-= | ( | unsigned int | i | ) | [inline] |
Subtraction compound assignment operator.
PX_INLINE T* PxStrideIterator< T >::operator-> | ( | ) | const [inline] |
Dereferencing operator.
PX_INLINE bool PxStrideIterator< T >::operator< | ( | const PxStrideIterator< T > & | other | ) | const [inline] |
Less than operator.
PX_INLINE bool PxStrideIterator< T >::operator<= | ( | const PxStrideIterator< T > & | other | ) | const [inline] |
Less or equal than operator.
PX_INLINE bool PxStrideIterator< T >::operator== | ( | const PxStrideIterator< T > & | other | ) | const [inline] |
Equality operator.
PX_INLINE bool PxStrideIterator< T >::operator> | ( | const PxStrideIterator< T > & | other | ) | const [inline] |
Greater than operator.
PX_INLINE bool PxStrideIterator< T >::operator>= | ( | const PxStrideIterator< T > & | other | ) | const [inline] |
Greater or equal than operator.
PX_INLINE T& PxStrideIterator< T >::operator[] | ( | unsigned int | i | ) | const [inline] |
Indexing operator.
PX_INLINE T* PxStrideIterator< T >::ptr | ( | ) | const [inline] |
PX_INLINE PxU32 PxStrideIterator< T >::stride | ( | ) | const [inline] |
Member Data Documentation
T* PxStrideIterator< T >::mPtr [private] |
Referenced by PxStrideIterator< const PxVec3 >::isCompatible(), PxStrideIterator< const PxVec3 >::operator!=(), PxStrideIterator< const PxVec3 >::operator-(), PxStrideIterator< const PxVec3 >::operator<(), PxStrideIterator< const PxVec3 >::operator<=(), PxStrideIterator< const PxVec3 >::operator==(), PxStrideIterator< const PxVec3 >::operator>(), and PxStrideIterator< const PxVec3 >::operator>=().
PxU32 PxStrideIterator< T >::mStride [private] |
The documentation for this class was generated from the following file:
Copyright © 2008-2017 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved. www.nvidia.com