mets::subject< observed_subject > Class Template Reference

#include <observer.hh>

Inheritance diagram for mets::subject< observed_subject >:

Inheritance graph
[legend]
List of all members.

Detailed Description

template<typename observed_subject>
class mets::subject< observed_subject >

template class for subjects (cfr. Observer Design Pattern).

You must declare the subject of the observations with:

class my_observed_sbj : public subject<my_observed_sbj>

Than you should call notify() manually or automatically from every method that changes the subject status.

Only attached observers (cfr. attach() and detach() methods) will be notified.


Public Member Functions

virtual void attach (observer< observed_subject > &o)
 Attach a new observer to this subject.
virtual void detach (observer< observed_subject > &o)
 Detach a new observer to this subject.
virtual void notify ()
 Notify all attached observers.

Protected Attributes

std::set< observer< observed_subject > * > observers_m


Member Function Documentation

template<typename observed_subject>
void mets::subject< observed_subject >::attach ( observer< observed_subject< observed_subject > > &  o  )  [virtual]

Attach a new observer to this subject.

Parameters:
o,: a new observer for this subject. if the observer was already present nothing happens.

template<typename observed_subject>
void mets::subject< observed_subject >::detach ( observer< observed_subject< observed_subject > > &  o  )  [virtual]

Detach a new observer to this subject.

Parameters:
o,: observer to detach from this subject. if the observer "o" was not present nothing happens.

template<typename observed_subject>
void mets::subject< observed_subject >::notify (  )  [virtual]

Notify all attached observers.

When this method is called every observed_subject::update method is called and "this" subject is passed as a param.


The documentation for this class was generated from the following file:

Return to METSlib home page