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>
208 else return !(*
this==other);
223 template<
class T,
int d>
227 for(
int i=1;i<d;i++) output<<
" " << v[i];
Particle Collection Interface.
Definition: PartioAttribute.h:97
Definition: PartioIterator.h:125
ParticleIterator & operator++()
Increment the iterator (prefix).
Definition: PartioIterator.h:187
bool operator==(const ParticleIterator &other)
Iterator comparison equals.
Definition: PartioIterator.h:196
ParticleIterator & operator=(const ParticleIterator &other)
Assignment operator. NOTE: Invalidates any accessors that have been registered with it.
Definition: PartioIterator.h:156
bool valid() const
Whether the iterator is valid.
Definition: PartioIterator.h:175
PROVIDER< constant >::TYPE PROVIDER
Definition: PartioIterator.h:128
ParticleIterator operator++(int)
Increment the iterator (postfix). Prefer the prefix form below to this one.
Definition: PartioIterator.h:179
PROVIDER * particles
Delegate, null if the iterator is false.
Definition: PartioIterator.h:131
void addAccessor(ParticleAccessor &newAccessor)
Definition: PartioIterator.h:211
size_t indexEnd
End of non-interleaved index of contiguous block.
Definition: PartioIterator.h:139
ParticleIterator(const ParticleIterator &other)
Copy constructor. NOTE: Invalidates any accessors that have been registered with it.
Definition: PartioIterator.h:151
ParticleIterator(PROVIDER *particles, size_t index, size_t indexEnd)
Definition: PartioIterator.h:170
bool operator!=(const ParticleIterator &other)
Iterator comparison not-equals.
Definition: PartioIterator.h:204
size_t index
Start of non-interleaved index of contiguous block.
Definition: PartioIterator.h:135
ParticleIterator()
Construct an invalid iterator.
Definition: PartioIterator.h:146
ParticleAccessor * accessors
This is used for both non-interleaved and interleaved particle attributes.
Definition: PartioIterator.h:142
std::ostream & operator<<(std::ostream &output, const Data< T, d > &v)
Definition: PartioIterator.h:224
Data< int, 1 > DataI
Definition: PartioIterator.h:61
Data< float, 3 > DataV
Definition: PartioIterator.h:63
ParticleAttributeType
Definition: PartioAttribute.h:47
Data< float, 1 > DataF
Definition: PartioIterator.h:62
Data.
Definition: PartioIterator.h:55
const T & operator[](const int i) const
Definition: PartioIterator.h:58
T & operator[](const int i)
Definition: PartioIterator.h:59
T x[d]
Definition: PartioIterator.h:56
const Provider TYPE
Definition: PartioIterator.h:85
Definition: PartioIterator.h:79
Provider TYPE
Definition: PartioIterator.h:80
Definition: PartioIterator.h:90
const TDATA & data(const TITERATOR &it) const
Definition: PartioIterator.h:115
ParticleAttributeType type
Definition: PartioIterator.h:96
char * basePointer
Definition: PartioIterator.h:92
int count
Definition: PartioIterator.h:94
int attributeIndex
Definition: PartioIterator.h:93
ParticleAccessor(const ParticleAttribute &attr)
Definition: PartioIterator.h:101
const TDATA * raw(const TITERATOR &it) const
Definition: PartioIterator.h:109
TDATA * raw(const TITERATOR &it)
Definition: PartioIterator.h:106
ParticleAccessor * next
Definition: PartioIterator.h:98
TDATA & data(const TITERATOR &it)
Definition: PartioIterator.h:112
int stride
Definition: PartioIterator.h:91
Definition: PartioIterator.h:69
virtual ~Provider()
Definition: PartioIterator.h:74
virtual void setupAccessor(ParticleIterator< false > &iterator, ParticleAccessor &accessor)=0
virtual void setupIteratorNextBlock(ParticleIterator< true > &iterator) const =0
virtual void setupIteratorNextBlock(ParticleIterator< false > &iterator)=0
virtual void setupAccessor(ParticleIterator< true > &iterator, ParticleAccessor &accessor) const =0