00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _itkPathSource_h
00019 #define _itkPathSource_h
00020
00021 #include "itkProcessObject.h"
00022 #include "itkPath.h"
00023
00024 namespace itk
00025 {
00026
00040 template <class TOutputPath>
00041 class ITK_EXPORT PathSource : public ProcessObject
00042 {
00043 public:
00045 typedef PathSource Self;
00046 typedef ProcessObject Superclass;
00047 typedef SmartPointer<Self> Pointer;
00048 typedef SmartPointer<const Self> ConstPointer;
00049
00051 typedef DataObject::Pointer DataObjectPointer;
00052
00054 itkNewMacro(Self);
00055
00057 itkTypeMacro(PathSource,ProcessObject);
00058
00060 typedef TOutputPath OutputPathType;
00061 typedef typename OutputPathType::Pointer OutputPathPointer;
00062 typedef typename OutputPathType::InputType OutputPathInputType;
00063 typedef typename OutputPathType::OutputType OutputPathOutputType;
00064 typedef typename OutputPathType::IndexType OutputPathIndexType;
00065 typedef typename OutputPathType::OffsetType OutputPathOffsetType;
00066
00107 OutputPathType * GetOutput(void);
00108 OutputPathType * GetOutput(unsigned int idx);
00109
00144
00145 virtual void GraftOutput(OutputPathType *output);
00146
00153 virtual void GraftNthOutput(unsigned int idx, OutputPathType *output);
00154
00168 virtual DataObjectPointer MakeOutput(unsigned int idx);
00169
00170 protected:
00171 PathSource();
00172 virtual ~PathSource() {}
00173 void PrintSelf(std::ostream& os, Indent indent) const;
00174
00175
00176
00177
00178
00179
00180 private:
00181 PathSource(const Self&);
00182 void operator=(const Self&);
00183 };
00184
00185 }
00186
00187 #ifndef ITK_MANUAL_INSTANTIATION
00188 #include "itkPathSource.txx"
00189 #endif
00190
00191 #endif