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

Dispatch to functor vtkDataArrayType. More...

#include <vtkDataArrayDispatcher.h>

List of all members.

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
   {
   return t.NumberOfComponents * t.NumberOfTuples;
   }
 };

 Here is an example of using the dispatcher.
  \code
  vtkDataArrayDispatcher<sizeOfFunctor,int> dispatcher;
  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;
      vtkDataArrayDispatcher<storeLengthFunctor> dispatcher(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: