FiberVISH 0.2
Fish - The Fiber Bundle API for the Vish Visualization Shell
Public Types | Public Member Functions | Protected Attributes | List of all members

An iterator with an optional DataCreator, which is just a class to intercept creation of data along a subset. More...

#include <CreativeIterator.hpp>

Inheritance diagram for Fiber::CreativeIterator< T >:
Fiber::Iterator< T > Fiber::IteratorBase< T > Fiber::ElementIterator< T > Fiber::HyperslabParameters Fiber::MultiArrayBase< N, T > Fiber::MultiArrayBase< 1, T > Fiber::MultiArray< N, T, std::index_sequence< Is... > >

Public Types

typedef MetaInfo< T >::element_t component_t
 
typedef FixedArray< component_t, MetaInfo< T >::MULTIPLICITY > FixedArray_t
 
typedef META::IF< MetaInfo< T >::MULTIPLICITY==1, component_t, FixedArray_t >::result ValueBase_t
 
typedef META::IF< MetaInfo< T >::MULTIPLICITY==1, void, FixedArray_t >::result FixedArrayBase_t
 If the type has a non-zero multiplicity, then there exists an associated base class of fixed arrays.
 
typedef Eagle::Vector< component_t, MetaInfo< T >::MULTIPLICITY > VectorArray_t
 
typedef META::IF< MetaInfo< T >::RANK==0, void, VectorArray_t >::result VectorArrayBase_t
 If the type has a non-zero rank, then there exists an associated base class of vectors.
 
- Public Types inherited from Fiber::Iterator< T >
typedef IteratorBase< T > Base_t
 
typedefvalue_t
 
typedef Eagle::MetaInfo< value_t > FI
 
typedef FI::element_t component_t
 
typedef ElementryArrayTrait< T >::basetype_t array_t
 
typedef T & reference_t
 The reference type.
 
- Public Types inherited from Fiber::ElementIterator< T >
typedef Eagle::MetaInfo< T > info_t
 
typedef info_t::element_t element_info_t
 

Public Member Functions

 CreativeIterator (const Iterator< T > &D, DataCreator< T > *C=0)
 
 CreativeIterator (index_t length, T *data, DataCreator< T > *C=0)
 
 CreativeIterator (const CreativeIterator &CI)
 
- Public Member Functions inherited from Fiber::Iterator< T >
 Iterator (index_t howmany, T *Ptr)
 Construct view pointer from contiguous storage.
 
 Iterator (const HyperslabParameters &P, T *Ptr)
 Construct iterator with alternative data, but otherwise compatible properties.
 
 Iterator (const Iterator &P)
 Copy Constructor.
 
 Iterator (const Iterator &P, int)
 Copy Constructor with irrelevant member selection2.
 
template<int Components>
 Iterator (index_t howmany, FixedArray< T, Components > *Ptr, int component)
 Construct view pointer to a single component within a contiguous storage of array objects.
 
template<int Components>
 Iterator (const Iterator< FixedArray< T, Components > > &It, int component)
 
template<int Components>
 Iterator (index_t Length, Eagle::VVector< Components, T > *Ptr, int component)
 Construct view pointer to a single component within a contigous storage of array objects.
 
 Iterator (index_t ishift, const Iterator &P, const Add &)
 Addition Constructor.
 
Iterator< array_tgetArrayIterator () const
 Get an iterator that operates on associated FixedArray<> subjects.
 
Iterator< component_t > getComponent (int n) const
 Get an iterator that operates on the nth component.
 
T & operator[] (index_t i) const
 Access an element of the array, writeable.
 
const T & getValue (index_t i) const
 Get the value, readonly.
 
void set (const T &Value)
 Set all elements to the same value.
 
const_ranged_for_iterator< T > begin () const
 
const_ranged_for_iterator< T > end () const
 
ranged_for_iterator< T > begin ()
 
ranged_for_iterator< T > end ()
 
template<class S >
T & operator[] (const ranged_for_iterator< S > &I)
 
template<class S >
const T & operator[] (const ranged_for_iterator< S > &I) const
 
template<class S >
T & operator[] (const const_ranged_for_iterator< S > &I)
 
template<class S >
const T & operator[] (const const_ranged_for_iterator< S > &I) const
 
- Public Member Functions inherited from Fiber::IteratorBase< T >
 IteratorBase (index_t Length, T *d, index_t Stride, index_t Offset)
 
 IteratorBase (const IteratorBase &IB)
 
 IteratorBase (const HyperslabParameters &IB, T *d)
 Construct compatible iterator with different data.
 
 IteratorBase (index_t ishift, const IteratorBase &P, const Add &)
 
- Public Member Functions inherited from Fiber::ElementIterator< T >
 ElementIterator (index_t Length, T *Data, index_t Stride, index_t Offset)
 Construct an element iterator.
 
 ElementIterator (const ElementIterator &It)
 Copy Constructor.
 
 ElementIterator (const HyperslabParameters &It, T *newData)
 Constructor compatible iterator with new data.
 
 ElementIterator (index_t i, const ElementIterator &It, const Add &)
 Addition Constructor.
 
void SetNewData (T *newData, index_t newLength) throw ()
 Change the stored data chunk to a new location and length.
 
T * ptr (int c=0) const
 Return pointer to data, which is good for C interface, but otherwise, avoid that.
 
T & getElement (index_t i, int c) const
 Element access (no range check!).
 
 operator bool () const
 Implicit conversion to boolean: Check whether this is a valid pointer.
 
- Public Member Functions inherited from Fiber::HyperslabParameters
 HyperslabParameters (index_t Length, index_t Stride, index_t Offset) throw ()
 Simple constructorm sets shift and cropped members to zero.
 
 HyperslabParameters (const HyperslabParameters &H) throw ()
 Copy constructor.
 
 HyperslabParameters (index_t i, const HyperslabParameters &H) throw ()
 Pointer addition constructor (sets the shift member).
 
index_t getLength () const throw ()
 Return the number of elements which can be accessed through this ElementIterator.
 
index_t getOffset () const throw ()
 
index_t getStride () const throw ()
 
index_t getShift () const throw ()
 
index_t getCropped () const throw ()
 
bool isSeparatedCompound () const throw ()
 Tell if the iterator refers to a data set which is built from arrays of structure members, i.e.
 
index_t multiplicity () const throw ()
 Return number of elements which form an entity.
 
index_t maxcount () const throw ()
 Return the number of steps which can be traversed through this ElementIterator.
 
index_t count () const throw ()
 Return the number of steps which can be traversed through this ElementIterator.
 
void setCount (index_t size) throw ()
 Set the maximally allowed count, i.e.
 
index_t getIndex (index_t i, int c) const throw ()
 Given a major and a minor index, compute the overall index in the dataset according to.
 
HyperslabParametersgetHyperslabParameters () throw ()
 
const HyperslabParametersgetHyperslabParameters () const throw ()
 

Protected Attributes

DataCreator< T > * myDataCreator
 
- Protected Attributes inherited from Fiber::ElementIterator< T >
index_t length
 The length (number of elements) of the data array.
 
index_t stride
 
index_t offset
 
index_t shift
 
index_t cropped
 
- Protected Attributes inherited from Fiber::HyperslabParameters
index_t length
 The length (number of elements) of the data array.
 
index_t stride
 
index_t offset
 
index_t shift
 
index_t cropped
 

Additional Inherited Members

- Protected Member Functions inherited from Fiber::ElementIterator< T >
void incPtr (index_t what)
 

Detailed Description

template<class T>
class Fiber::CreativeIterator< T >

An iterator with an optional DataCreator, which is just a class to intercept creation of data along a subset.

The overhead of using a data creator is small if there is none, as it is just checking for its existence here. If a data creator is specified, then there will be a virtual function call overhead, which however is still fast as compared to what the data creator will actually do.

Examples
ColoredLines.cpp, ComputeNormals.cpp, CreatorExample.cpp, CrystalSurface.cpp, Dreibein.cpp, EvolutionSurface.cpp, FragmentBoxes.cpp, GlossyLines.cpp, HelicalLines.cpp, InterpolatedVectorDerivative.cpp, Interpolation.cpp, MonochromeSurface.cpp, PolychromeSurface.cpp, Sphere.cpp, TransparentColoredSurface.cpp, and TransparentSurface.cpp.