Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

Observable.h

Go to the documentation of this file.
00001 /* -*- mode: c++ -*- */
00002 
00014 #ifndef _Observable_H_
00015 #define _Observable_H_
00016 
00017 #include "libhippo.h"
00018 
00019 #ifdef _MSC_VER
00020 #include <msdevstudio/MSconfig.h>
00021 #endif
00022 
00023 #include <list>
00024 
00025 namespace hippodraw 
00026 {
00027 class Observer;
00028 }
00029 
00040 class MDL_HIPPOPLOT_API Observable
00041 {
00042 public:
00043 
00046   typedef std::list < hippodraw::Observer * > ObserverList_t;
00047 
00048 private:
00049 
00052   ObserverList_t m_list;
00053 
00054 protected:
00055 
00057   Observable();
00058 
00059 public:
00060 
00063   virtual ~ Observable ();
00064 
00066   void addObserver ( hippodraw::Observer * );
00067 
00069   const ObserverList_t & getObservers () const;
00070 
00072   void removeObserver ( hippodraw::Observer * );
00073 
00080   virtual void notifyObservers () const;
00081 
00083   typedef void ( hippodraw::Observer::*Action ) ( const Observable * );
00084 
00085 protected:
00086 
00089   void notifyObservers ( Action action ) const;
00090 
00091 };
00092 
00093 #endif // _Observable_H_

Generated for HippoDraw-1.14.8.5 by doxygen 1.4.3