00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __itkDataObjectDecorator_h
00021 #define __itkDataObjectDecorator_h
00022
00023 #include "itkDataObject.h"
00024
00025 namespace itk
00026 {
00027
00028
00057 template<class T>
00058 class ITK_EXPORT DataObjectDecorator : public DataObject
00059 {
00060 public:
00062 typedef DataObjectDecorator Self;
00063 typedef DataObject Superclass;
00064 typedef SmartPointer<Self> Pointer;
00065 typedef SmartPointer<const Self> ConstPointer;
00066
00068 typedef T ComponentType;
00069 typedef typename T::Pointer ComponentPointer;
00070
00072 itkNewMacro(Self);
00073
00075 itkTypeMacro(DataObjectDecorator, DataObject);
00076
00078 virtual void Set(T* val);
00079
00081 virtual T* Get() { return m_Component; }
00082 virtual const T* Get() const { return m_Component; }
00083
00084 protected:
00085 DataObjectDecorator();
00086 ~DataObjectDecorator();
00087 virtual void PrintSelf(std::ostream& os, Indent indent) const;
00088
00089 protected:
00090
00091 private:
00092 DataObjectDecorator(const Self&);
00093 void operator=(const Self&);
00094
00095 ComponentPointer m_Component;
00096 };
00097
00098 }
00099
00100 #ifndef ITK_MANUAL_INSTANTIATION
00101 #include "itkDataObjectDecorator.txx"
00102 #endif
00103
00104 #endif
00105