biquadris / subject.cc
subject.cc
Raw
#include "subject.h"
#include "observer.h"
#include <algorithm>

Subject::Subject() {}
Subject::~Subject() {}

void Subject::attach(Observer *obs) {
	observers.emplace_back(obs);
}

void Subject::detach(Observer *obs) {
	auto find = std::find(observers.begin(), observers.end(), obs);
	if (find == observers.end()) return;
	observers.erase(find);
}

void Subject::notifyObservers(SubscriptionType t) {
	for (auto o : observers) {
		o->notify(this, t);
	}
}

void Subject::notifyObservers(Subject *whoNotified, SubscriptionType t) {
	for (auto o : observers) {
		o->notify(whoNotified, t);
	}
}