VTK
Public Member Functions | Protected Attributes | List of all members
vtkDataArrayDispatcher< DefaultFunctorType, ReturnType > Class Template Reference

Dispatch to functor vtkDataArrayType. More...

#include <vtkDataArrayDispatcher.h>

Public Member Functions

 vtkDataArrayDispatcher (DefaultFunctorType &f)
 
 vtkDataArrayDispatcher ()
 
virtual ~vtkDataArrayDispatcher ()
 
ReturnType Go (vtkDataArray *lhs)
 

Protected Attributes

DefaultFunctorType * DefaultFunctor
 
bool OwnsFunctor
 

Detailed Description

template<class DefaultFunctorType, typename ReturnType = void>
class vtkDataArrayDispatcher< DefaultFunctorType, ReturnType >

Dispatch to functor vtkDataArrayType.

vtkDataArrayDispatcher is a class that allows calling a functor based on the data type of the vtkDataArray subclass. This is a wrapper around the vtkTemplateMacro (VTK_TT) to allow easier implementation and readibility, while at the same time the ability to use statefull functors.

Note: By default the return type is void. Note: The functor parameter must be of type vtkDataArrayDispatcherPointer

The functors that are passed around can contain state, and are allowed to be const or non const. If you are using a functor that does have state, make sure your copy constructor is correct.

struct sizeOfFunctor{
template<typename T>
int operator()(const vtkDataArrayDispatcherPointer<T>& t) const
{
}
};
Here is an example of using the dispatcher.
\code
int arrayLength = dispatcher.Go(vtkDataArrayPtr);
See also
vtkDispatcher vtkDoubleDispatcher
Tests:
vtkDataArrayDispatcher (Tests)

Definition at line 89 of file vtkDataArrayDispatcher.h.

Constructor & Destructor Documentation

template<class DefaultFunctorType , typename ReturnType >
vtkDataArrayDispatcher< DefaultFunctorType, ReturnType >::vtkDataArrayDispatcher ( DefaultFunctorType &  f)

Specify the functor that is to be used when dispatching. This allows you to specify a statefull functor.

struct storeLengthFunctor
{ int length; storeLengthFunctor():length(0){} template<typename T>
void operator()(vtkDataArrayDispatcherPointer<T> array) { length +=
array.NumberOfComponents * array.NumberOfTuples; } };
storeLengthFunctor storedLength;
dispatcher.Go(exampleDataArray);

Definition at line 121 of file vtkDataArrayDispatcher.h.

template<class DefaultFunctorType , typename ReturnType >
vtkDataArrayDispatcher< DefaultFunctorType, ReturnType >::vtkDataArrayDispatcher ( )

Default constructor which will create an instance of the DefaultFunctorType and use that single instance for all calls.

Definition at line 129 of file vtkDataArrayDispatcher.h.

template<class DefaultFunctorType , typename ReturnType >
vtkDataArrayDispatcher< DefaultFunctorType, ReturnType >::~vtkDataArrayDispatcher ( )
virtual

Definition at line 137 of file vtkDataArrayDispatcher.h.

Member Function Documentation

template<class DefaultFunctorType , typename ReturnType >
ReturnType vtkDataArrayDispatcher< DefaultFunctorType, ReturnType >::Go ( vtkDataArray lhs)

Execute the default functor with the passed in vtkDataArray;

Definition at line 148 of file vtkDataArrayDispatcher.h.

Member Data Documentation

template<class DefaultFunctorType, typename ReturnType = void>
DefaultFunctorType* vtkDataArrayDispatcher< DefaultFunctorType, ReturnType >::DefaultFunctor
protected

Definition at line 113 of file vtkDataArrayDispatcher.h.

template<class DefaultFunctorType, typename ReturnType = void>
bool vtkDataArrayDispatcher< DefaultFunctorType, ReturnType >::OwnsFunctor
protected

Definition at line 114 of file vtkDataArrayDispatcher.h.


The documentation for this class was generated from the following file: