begin cleanup on gps code

This commit is contained in:
geeksville
2020-02-06 07:39:21 -08:00
parent 0050e4b05a
commit 0b226132b8
10 changed files with 180 additions and 78 deletions

46
src/Observer.h Normal file
View File

@@ -0,0 +1,46 @@
#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);
}
};