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)
 Specify the functor that is to be used when dispatching. More...
 
 vtkDataArrayDispatcher ()
 Default constructor which will create an instance of the DefaultFunctorType and use that single instance for all calls. More...
 
virtual ~vtkDataArrayDispatcher ()
 
ReturnType Go (vtkDataArray *lhs)
 Execute the default functor with the passed in vtkDataArray;. More...
 

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 readability, 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 90 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 142 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 150 of file vtkDataArrayDispatcher.h.

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

Definition at line 158 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 169 of file vtkDataArrayDispatcher.h.

Member Data Documentation

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

Definition at line 134 of file vtkDataArrayDispatcher.h.

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

Definition at line 135 of file vtkDataArrayDispatcher.h.


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