00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifdef __cplusplus
00024
00025 # ifndef OGS_SUPPORT_OBJECT_H
00026 # define OGS_SUPPORT_OBJECT_H
00027
00028 # include <list>
00029 # include <string>
00030
00031 # include <ogs/support/Namespace.h>
00032
00033 OGS_BEGIN_SUPPORT_NAMESPACE
00034
00035 class Class;
00036 class Event;
00037 class Observer;
00038
00044 class Object {
00045 public:
00046 virtual ~Object () = 0;
00047
00048 void addObserver (Observer& observer);
00049 void removeObserver (Observer& observer);
00050
00051 Class getClass () const;
00052 virtual std::string toString () const;
00053
00054 protected:
00055 Object ();
00056
00058 typedef std::list<Observer*> Observers;
00059 Observers getObservers () const;
00060 virtual void notifyObservers (Event& event);
00061
00062 private:
00063 Observers _observers;
00064 };
00065
00071 inline Object::Object ():
00072 _observers () {
00073
00074 }
00075
00082 inline Object::Observers
00083 Object::getObservers () const {
00084 return (this->_observers);
00085 }
00086
00087 inline Object::~Object () { }
00088
00089 OGS_END_SUPPORT_NAMESPACE
00090
00091 # endif
00092
00093 #endif
00094