1:/* 2: * Programmins graphical user interfaces 3: * Example: Observable.cpp 4: * Jarkko Leponiemi 2003 5: */ 6: 7:#include "Observable.h" 8: 9:Observable::Observable() 10:{ 11: obs_num = 0; 12: observers = new ObserverPtr[10]; 13:} 14: 15:Observable::~Observable() 16:{ 17: delete [] observers; 18:} 19: 20:void Observable::AddObserver(ObserverPtr o) 21:{ 22: if (obs_num < 10) { 23: observers[obs_num++] = o; 24: } 25:} 26: 27:void Observable::RemoveObserver(ObserverPtr o) 28:{ 29: int found = -1; 30: for (int i = 0; i < obs_num; i++) { 31: if (observers[i] == o) { 32: found = 1; 33: break; 34: } 35: } 36: if (found != -1) { 37: obs_num--; 38: for (int i = found; i < obs_num; i++) { 39: observers[i] = observers[i+1]; 40: } 41: } 42:} 43: 44:void Observable::NotifyObservers(int type, void *args) { 45: for (int i = 0; i < obs_num; i++) { 46: observers[i]->Update(this, type, args); 47: } 48:}