00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
#ifndef __itkCellInterfaceVisitor_h
00018
#define __itkCellInterfaceVisitor_h
00019
00020
#include "itkLightObject.h"
00021
#include "itkObjectFactory.h"
00022
00023
namespace itk
00024 {
00025
00026
template <
00027
typename TPixelType,
00028
typename TCellTraits
00029 >
00030
class CellInterface;
00031
00041
template <
00042
typename TPixelType,
00043
typename TCellTraits
00044 >
00045 class CellInterfaceVisitor :
public LightObject
00046 {
00047
public:
00049 typedef CellInterfaceVisitor Self;
00050 typedef LightObject Superclass;
00051 typedef SmartPointer<Self> Pointer;
00052 typedef SmartPointer<const Self> ConstPointer;
00053
00055
itkTypeMacro(
CellInterfaceVisitor,
LightObject);
00056
00058
virtual void VisitFromCell(
unsigned long cellId,
CellInterface<TPixelType, TCellTraits>*) = 0;
00059
00061
virtual int GetCellTopologyId() = 0;
00062
00063
protected:
00064 CellInterfaceVisitor() {};
00065 ~CellInterfaceVisitor() {};
00066
00067
private:
00068
CellInterfaceVisitor(
const Self&);
00069
void operator=(
const Self&);
00070 };
00071
00072
00096
template<
00097
typename TPixelType,
00098
typename TCellTraits,
00099
class CellTopology,
00100
class UserVisitor
00101 >
00102 class CellInterfaceVisitorImplementation :
00103
public CellInterfaceVisitor<TPixelType, TCellTraits>,
public UserVisitor
00104 {
00105
public:
00107 typedef CellInterfaceVisitorImplementation Self;
00108 typedef SmartPointer<Self> Pointer;
00109
00111
itkNewMacro(
Self);
00112
00114
itkTypeMacro(
CellInterfaceVisitorImplementation,
LightObject);
00115
00118 virtual int GetCellTopologyId() {
return CellTopology::GetTopologyId();}
00119
00122 void VisitFromCell(
unsigned long cellId,
CellInterface<TPixelType, TCellTraits>* c)
00123 {
00124 this->UserVisitor::Visit(cellId, (CellTopology*)c);
00125 }
00126
00127
protected:
00128 CellInterfaceVisitorImplementation() {};
00129 ~CellInterfaceVisitorImplementation() {};
00130
00131
private:
00132
CellInterfaceVisitorImplementation(
const Self&);
00133
void operator=(
const Self&);
00134
00135 };
00136
00137 }
00138
00139
#endif