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