next up previous contents
Next: Example 5: RadioStation Up: listener Previous: Example 3: Event recorder   Contents

Example 4: CD Player

  class StartEvent: public Event {} ;
  class StopEvent : public Event {} ;
  
  class CDPlayer: public Subscriber {
  public:
    void start(StartEvent*) {std::cerr << "Start the CD player\n" ;}
    void stop (StopEvent*)  {std::cerr << "Stop  the CD player\n" ;}
  } ;

  template <typename E>
  class Button: public Publisher {
  public:
    void click() {igs_emit(E) ;}
  } ;

  int main() {
    Button<StartEvent> start_button ;
    Button<StopEvent>  stop_button  ;
    CDPlayer           cd ;
    
    igs_connect(&start_button, &cd, igs_functor(&cd, CDPlayer::start)) ;
    igs_connect(&stop_button , &cd, igs_functor(&cd, CDPlayer::stop))  ;
    
    start_button.click() ;
    stop_button. click() ;
  }



Frantz Maerten 2006-01-30