00001 /*========================================================================= 00002 00003 Program: Open IGT Link Library 00004 Module: $HeadURL: http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink/Source/igtlObject.h $ 00005 Language: C++ 00006 Date: $Date: 2008-12-22 19:05:42 -0500 (Mon, 22 Dec 2008) $ 00007 Version: $Revision: 3460 $ 00008 00009 Copyright (c) Insight Software Consortium. All rights reserved. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notices for more information. 00014 00015 =========================================================================*/ 00016 /*========================================================================= 00017 00018 Program: Insight Segmentation & Registration Toolkit 00019 Module: $RCSfile: itkObject.h,v $ 00020 Language: C++ 00021 Date: $Date: 2008-12-22 19:05:42 -0500 (Mon, 22 Dec 2008) $ 00022 Version: $Revision: 3460 $ 00023 00024 Copyright (c) Insight Software Consortium. All rights reserved. 00025 See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. 00026 00027 Portions of this code are covered under the VTK copyright. 00028 See VTKCopyright.txt or http://www.kitware.com/VTKCopyright.htm for details. 00029 00030 This software is distributed WITHOUT ANY WARRANTY; without even 00031 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00032 PURPOSE. See the above copyright notices for more information. 00033 00034 =========================================================================*/ 00035 #ifndef __igtlObject_h 00036 #define __igtlObject_h 00037 00038 #include "igtlLightObject.h" 00039 //#include "igtlTimeStamp.h" 00040 //#include "igtlEventObject.h" 00041 //#include "igtlMetaDataDictionary.h" 00042 00043 #include "igtlConfigure.h" 00044 00045 namespace igtl 00046 { 00047 //class SubjectImplementation; 00048 //class Command; 00049 00062 class IGTLCommon_EXPORT Object: public LightObject 00063 { 00064 public: 00066 typedef Object Self; 00067 typedef LightObject Superclass; 00068 typedef SmartPointer<Self> Pointer; 00069 typedef SmartPointer<const Self> ConstPointer; 00070 00072 static Pointer New(); 00073 00079 virtual LightObject::Pointer CreateAnother() const; 00080 00082 igtlTypeMacro(Object, LightObject); 00083 00085 virtual void DebugOn() const; 00086 00088 virtual void DebugOff() const; 00089 00091 bool GetDebug() const; 00092 00094 void SetDebug(bool debugFlag) const; 00095 00097 // virtual unsigned long GetMTime() const; 00098 00101 // virtual void Modified() const; 00102 00104 virtual void Register() const; 00105 00107 virtual void UnRegister() const; 00108 00110 virtual void SetReferenceCount(int); 00111 00114 static void SetGlobalWarningDisplay(bool flag); 00115 static bool GetGlobalWarningDisplay(); 00116 static void GlobalWarningDisplayOn() 00117 { Object::SetGlobalWarningDisplay(true); } 00118 static void GlobalWarningDisplayOff() 00119 { Object::SetGlobalWarningDisplay(false); } 00121 00130 // unsigned long AddObserver(const EventObject & event, Command *); 00131 // unsigned long AddObserver(const EventObject & event, Command *) const; 00133 00139 //Command* GetCommand(unsigned long tag); 00140 00142 //void InvokeEvent( const EventObject & ); 00143 00146 //void InvokeEvent( const EventObject & ) const; 00147 00149 //void RemoveObserver(unsigned long tag); 00150 00152 //void RemoveAllObservers(); 00153 00155 //bool HasObserver( const EventObject & event ) const; 00156 00161 //MetaDataDictionary & GetMetaDataDictionary(void); 00162 00166 //const MetaDataDictionary & GetMetaDataDictionary(void) const; 00167 00171 //void SetMetaDataDictionary(const MetaDataDictionary & rhs); 00172 00173 00174 protected: 00175 Object(); 00176 virtual ~Object(); 00177 00182 virtual void PrintSelf(std::ostream& os) const; 00183 00184 //bool PrintObservers(std::ostream& os) const; 00185 00186 private: 00187 Object(const Self&); //purposely not implemented 00188 void operator=(const Self&); //purposely not implemented 00189 00191 mutable bool m_Debug; 00192 00194 // mutable TimeStamp m_MTime; 00195 00197 static bool m_GlobalWarningDisplay; 00198 00201 //SubjectImplementation* m_SubjectImplementation; 00202 00210 //mutable MetaDataDictionary * m_MetaDataDictionary; 00211 }; 00212 00213 } // end namespace igtl 00214 00215 #endif 00216 00217