Observable.h 812 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #ifndef _OBSERVABLE_FBASICS_H
  2. #define _OBSERVABLE_FBASICS_H
  3. #include <vector>
  4. #include <core/basics/Observer.h>
  5. namespace NICE {
  6. /**
  7. * Observable as in Observer-pattern.
  8. *
  9. * @author Ferid Bajramovic (ferid [dot] bajramovic [at] informatik [dot] uni-jena [dot] de)
  10. */
  11. class Observable {
  12. public:
  13. //! notify all observers
  14. void notifyObservers();
  15. /**
  16. * Add an Observer (Ownership NOT taken.)
  17. */
  18. inline void addObserver(Observer* observer) {
  19. observers.push_back(observer);
  20. observer->setObserved(this);
  21. }
  22. /**
  23. * Remove an Observer.
  24. * @note If the Observer has been added multiple times,
  25. * all entries will be removed.
  26. */
  27. void removeObserver(Observer* observer);
  28. private:
  29. std::vector<Observer*> observers;
  30. };
  31. } // namespace
  32. #endif // _OBSERVABLE_FBASICS_H