Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

general/SObserver.h

Go to the documentation of this file.
00001 /* #start# ***********************************************************
00002 
00003            Scheduling Simulator
00004         Lehrstuhl f"ur Effiziente Algorithmen
00005            Technische Universit"at M"unchen
00006 
00007  File    : $Id: SObserver.h,v 1.4 2003/01/08 18:57:11 meierb Exp $
00008 
00009  Purpose : the observer part in the classical observer-pattern
00010 
00011  RCS-Log:
00012  $Log: SObserver.h,v $
00013  Revision 1.4  2003/01/08 18:57:11  meierb
00014  added randomized release times
00015 
00016  Revision 1.1.1.1  2002/12/02 22:26:19  meierb
00017  my_schedule
00018 
00019  Revision 1.2  2002/11/13 18:42:59  taeubig
00020  Adaptation of the compare() function for LEDA 4.4 (namespace leda)
00021 
00022  Revision 1.1  2002/08/29 12:59:58  taeubig
00023  Added the sources
00024 
00025  Revision 1.10  2000/05/24 13:26:59  taeubig
00026  New compiler (gcc-2.95) and new Qt (2.1)
00027  Replaced "list" by "leda_list" etc.
00028 
00029  Revision 1.9  2000/01/11 17:26:11  zoidl
00030  added javadoc comments
00031 
00032  Revision 1.8  1999/11/19 16:10:51  hall
00033  changed SObserver::update( SEvent & ) to ...( const SEvent & )
00034 
00035  Revision 1.7  1999/11/19 14:54:48  hall
00036  a nice destructor added to SObserver
00037 
00038  Revision 1.6  1999/08/05 08:47:51  schickin
00039  purpose of important classes noted in the header-files
00040 
00041  Revision 1.5  1999/04/27 13:38:53  schickin
00042  well folks, that's the first demo version that really runs 8-)
00043 
00044  Revision 1.4  1999/02/10 15:53:30  hall
00045  TypeInfo, Observer works
00046 
00047  Revision 1.3  1999/02/10  10:50:43  schickin
00048  main loop for simulation added
00049  
00050  Revision 1.2  1999/01/29 10:03:29  schickin
00051  Project-Headers added.
00052 
00053 
00054  * #end# ************************************************************* */
00055 
00056 #ifndef SOBSERVER_H
00057 #define SOBSERVER_H
00058 
00059 // system header files
00060 #include <LEDA/list.h>
00061 
00062 // project header files
00063 #include "SEvent.h"
00064 
00065 class SObservable;
00066 
00074 // -----------------------------------------------------------------------
00075 class SObserver {
00076   friend class SObservable;
00077 public:
00080   SObserver() {};
00081 
00084   SObserver(const SObserver& rObs);
00085 
00088   virtual ~SObserver();
00089 
00097   virtual void update(const SEvent& event) = 0;
00098 
00099 private:
00100   leda_list<SObservable *> _observables;
00101 
00102   /* only for the SObservable-class */
00103   void addObservable(SObservable &obs);
00104   void deleteObservable(SObservable &obs);  
00105 };
00106 // -----------------------------------------------------------------------
00107 
00108 // -----------------------------------------------------------------------
00109 inline
00110 SObserver::SObserver(const SObserver& rObs)
00111 {}
00112 // -----------------------------------------------------------------------
00113 inline
00114 void SObserver::addObservable(SObservable &obs) {
00115   _observables.append(&obs);
00116 }
00117 // -----------------------------------------------------------------------
00118 
00119 // -----------------------------------------------------------------------
00120 #if __LEDA__ >= 440
00121 namespace leda {
00122 #endif
00123 inline
00124 int compare(SObserver *const & obs1, SObserver *const & obs2) {
00125   if( obs1 < obs2 )
00126     return -1;
00127   else if( obs1 > obs2 )
00128     return 1;
00129   else
00130     return 0;
00131 }
00132 #if __LEDA__ >= 440
00133 }
00134 #endif
00135 // -----------------------------------------------------------------------
00136 
00137 #endif //SOBSERVER_H

Generated on Thu May 22 16:48:08 2003 for Sketch-it! by doxygen1.2.18