• Main Page
  • Classes
  • Files
  • File List

Engine/IObservable.h

00001 /*
00002  * IObservable.h
00003  *
00004  *  Created on: 28-11-2010
00005  *      Author: marcin
00006  */
00007 
00008 #ifndef IOBSERVABLE_H_
00009 #define IOBSERVABLE_H_
00010 
00011 #include "ISubject.h"
00012 #include "INotifiable.h"
00013 #include <vector>
00014 #include <algorithm>
00015 
00016 class IObservable: public ISubject
00017 {
00018         public:
00019          ~IObservable(){};
00020 
00021          Type getType(){ return ISubject::State; };
00022                 void notifySubscribers()
00023                 {
00024                           for (std::vector<INotifiable *>::iterator it=observers.begin(); it<observers.end(); it++)
00025                           {
00026                                   (*it)->processNotification(this);
00027                           }
00028 
00029                 };
00030 
00031          void subscribe(INotifiable *observer)
00032                 {
00033                         observers.push_back(observer);
00034 
00035                 };
00036 
00037          void unSubscribe(INotifiable *observer)
00038                 {
00039 
00040                         std::vector<INotifiable *>::iterator  it = find (observers.begin(), observers.end(), observer);
00041                         observers.erase(it);
00042 
00043                 };
00044 
00045         private:
00046          std::vector<INotifiable *> observers;
00047 };
00048 
00049 #endif /* IOBSERVABLE_H_ */

Generated on Sun Dec 5 2010 19:03:32 for Snook3d by  doxygen 1.7.2