Fish - FiberLib for VISH 0.3
Fish - The Fiber Bundle API for the Vish Visualization Shell

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-1, T > Fiber::MultiArrayBase< 1, T > 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
typedef T value_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_t > getArrayIterator () 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
CreatorExample.cpp.