35 #ifndef _PartioParticleIterator_h_ 36 #define _PartioParticleIterator_h_ 46 struct ParticleAccessor;
53 template<
class T,
int d>
77 template<
bool constant>
106 template<
class TDATA,
class TITERATOR> TDATA*
raw(
const TITERATOR& it)
109 template<
class TDATA,
class TITERATOR>
const TDATA*
raw(
const TITERATOR& it)
const 112 template<
class TDATA,
class TITERATOR> TDATA&
data(
const TITERATOR& it)
115 template<
class TDATA,
class TITERATOR>
const TDATA&
data(
const TITERATOR& it)
const 123 template<
bool constant=false>
196 else return !(*
this==other);
211 template<
class T,
int d>
212 std::ostream& operator<<(std::ostream& output,const Data<T,d>& v)
215 for(
int i=1;i<d;i++) output<<
" " << v[i];
Data< float, 1 > DataF
Definition: PartioIterator.h:62
size_t index
Start of non-interleaved index of contiguous block.
Definition: PartioIterator.h:135
void addAccessor(ParticleAccessor &newAccessor)
Definition: PartioIterator.h:199
const T & operator[](const int i) const
Definition: PartioIterator.h:58
int count
Definition: PartioIterator.h:94
bool valid() const
Whether the iterator is valid.
Definition: PartioIterator.h:163
Definition: PartioIterator.h:89
virtual void setupAccessor(ParticleIterator< true > &iterator, ParticleAccessor &accessor) const =0
PROVIDER * particles
Delegate, null if the iterator is false.
Definition: PartioIterator.h:131
ParticleAccessor * next
Definition: PartioIterator.h:98
T x[d]
Definition: PartioIterator.h:56
Data< int, 1 > DataI
Definition: PartioIterator.h:61
ParticleIterator(const ParticleIterator &other)
Copy constructor. NOTE: Invalidates any accessors that have been registered with it.
Definition: PartioIterator.h:151
TDATA & data(const TITERATOR &it)
Definition: PartioIterator.h:112
size_t indexEnd
End of non-interleaved index of contiguous block.
Definition: PartioIterator.h:139
Definition: PartioIterator.h:78
char * basePointer
Definition: PartioIterator.h:92
Definition: PartioIterator.h:66
ParticleIterator & operator++()
Increment the iterator (prefix).
Definition: PartioIterator.h:175
virtual ~Provider()
Definition: PartioIterator.h:74
Provider TYPE
Definition: PartioIterator.h:80
Data.
Definition: PartioIterator.h:54
TDATA * raw(const TITERATOR &it)
Definition: PartioIterator.h:106
bool operator==(const ParticleIterator &other)
Iterator comparison equals.
Definition: PartioIterator.h:184
ParticleAccessor(const ParticleAttribute &attr)
Definition: PartioIterator.h:101
bool operator!=(const ParticleIterator &other)
Iterator comparison not-equals.
Definition: PartioIterator.h:192
int attributeIndex
Definition: PartioIterator.h:93
ParticleAccessor * accessors
This is used for both non-interleaved and interleaved particle attributes.
Definition: PartioIterator.h:142
int stride
Definition: PartioIterator.h:91
const TDATA & data(const TITERATOR &it) const
Definition: PartioIterator.h:115
Definition: PartioIterator.h:68
PROVIDER< constant >::TYPE PROVIDER
Definition: PartioIterator.h:128
virtual void setupIteratorNextBlock(ParticleIterator< true > &iterator) const =0
ParticleIterator(PROVIDER *particles, size_t index, size_t indexEnd)
Definition: PartioIterator.h:158
const Provider TYPE
Definition: PartioIterator.h:85
Particle Collection Interface.
Definition: PartioAttribute.h:96
const TDATA * raw(const TITERATOR &it) const
Definition: PartioIterator.h:109
T & operator[](const int i)
Definition: PartioIterator.h:59
ParticleAttributeType type
Definition: PartioIterator.h:96
ParticleAttributeType
Definition: PartioAttribute.h:47
ParticleIterator()
Construct an invalid iterator.
Definition: PartioIterator.h:146
Data< float, 3 > DataV
Definition: PartioIterator.h:63
ParticleIterator operator++(int)
Increment the iterator (postfix). Prefer the prefix form below to this one.
Definition: PartioIterator.h:167