00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __itkSimpleDataObjectDecorator_h
00021 #define __itkSimpleDataObjectDecorator_h
00022
00023 #include "itkDataObject.h"
00024 #include "itkObjectFactory.h"
00025
00026 namespace itk
00027 {
00028
00029
00058 template<class T>
00059 class ITK_EXPORT SimpleDataObjectDecorator : public DataObject
00060 {
00061 public:
00063 typedef SimpleDataObjectDecorator Self;
00064 typedef DataObject Superclass;
00065 typedef SmartPointer<Self> Pointer;
00066 typedef SmartPointer<const Self> ConstPointer;
00067
00069 typedef T ComponentType;
00070
00072 itkNewMacro(Self);
00073
00075 itkTypeMacro(SimpleDataObjectDecorator, DataObject);
00076
00078 virtual void Set(const T& val);
00079
00081 virtual T& Get() { return m_Component; }
00082 virtual T Get() const { return m_Component; }
00084
00085
00086 protected:
00087 SimpleDataObjectDecorator();
00088 ~SimpleDataObjectDecorator();
00089 virtual void PrintSelf(std::ostream& os, Indent indent) const;
00090
00091 protected:
00092
00093 private:
00094 SimpleDataObjectDecorator(const Self&);
00095 void operator=(const Self&);
00096
00097 ComponentType m_Component;
00098 };
00099
00100 }
00101
00102
00103 #define ITK_TEMPLATE_SimpleDataObjectDecorator(_, EXPORT, x, y) namespace itk { \
00104 _(1(class EXPORT SimpleDataObjectDecorator< ITK_TEMPLATE_1 x >)) \
00105 namespace Templates { typedef SimpleDataObjectDecorator< ITK_TEMPLATE_1 x > \
00106 SimpleDataObjectDecorator##y; } \
00107 }
00108
00109 #if ITK_TEMPLATE_EXPLICIT
00110 # include "Templates/itkSimpleDataObjectDecorator+-.h"
00111 #endif
00112
00113 #if ITK_TEMPLATE_TXX
00114 # include "itkSimpleDataObjectDecorator.txx"
00115 #endif
00116
00117
00118 #endif
00119
00120