#include #include #include #include "reactor.h" reactor::reactor(char* name) { my_name = new char [ strlen(name) + 1 ]; // Allocate memory assert( my_name != 0 ); strcpy(my_name,name); // Copy the string my_dependents = new reactor* [MAX_DEPENDENTS]; num_dependents = 0; } char* reactor::name() { return my_name; } void reactor::add_dependent(reactor* watcher) { if (num_dependents < MAX_DEPENDENTS) { my_dependents[num_dependents] = watcher; num_dependents++; } else cerr << "I already have too many dependents!" << endl; } void reactor::change() { cout << my_name << " is changing." << endl; for (int i = 0; i < num_dependents; i++) my_dependents[i]->update(this); } void reactor::update(reactor* sender) { cout << "Uh-oh... " << my_name << " has to change because " << sender->name() << " has changed." << endl; change(); }