sforkowany z mirror/meshtastic-firmware
47 wiersze
719 B
C
47 wiersze
719 B
C
|
#pragma once
|
||
|
|
||
|
#include <Arduino.h>
|
||
|
|
||
|
#include <list>
|
||
|
|
||
|
class Observable;
|
||
|
|
||
|
class Observer
|
||
|
{
|
||
|
Observable *observed;
|
||
|
|
||
|
public:
|
||
|
Observer() : observed(NULL) {}
|
||
|
|
||
|
virtual ~Observer();
|
||
|
|
||
|
void observe(Observable *o);
|
||
|
|
||
|
virtual void onNotify(Observable *o) = 0;
|
||
|
};
|
||
|
|
||
|
class Observable
|
||
|
{
|
||
|
std::list<Observer *> observers;
|
||
|
|
||
|
public:
|
||
|
void notifyObservers()
|
||
|
{
|
||
|
for (std::list<Observer *>::const_iterator iterator = observers.begin(); iterator != observers.end(); ++iterator)
|
||
|
{
|
||
|
(*iterator)->onNotify(this);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void addObserver(Observer *o)
|
||
|
{
|
||
|
observers.push_back(o);
|
||
|
}
|
||
|
|
||
|
void removeObserver(Observer *o)
|
||
|
{
|
||
|
observers.remove(o);
|
||
|
}
|
||
|
};
|
||
|
|