Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages   Examples  

Source exa_signal.cxx

Complete source for Tutorial exa_signal.cxx.
//
// Example code for CTBsignal
//

#include "CTB.hxx"
#include "CTBprintf.hxx"
#include "CTBsignal.hxx"

//------------------------------------------+-----------------------------------
class sub {

  public:
                    sub();

                    void Set_i(int i);
    int             Get_i() const;
 
    CTBsignalEmitter SEnew;

  private:
    int             m_i;
};

class obs {

  public:
                    obs();

    CTBsignalReceiver<obs,sub> SRnew;

    void            New(sub* p_sub, CTBuint32 i_mask);
};

//------------------------------------------+-----------------------------------

sub::sub() : m_i(0) {}

void sub::Set_i(int i) { m_i = i; SEnew(0x0001); }

int sub::Get_i() const { return m_i; }

//------------------------------------------+-----------------------------------

obs::obs() : SRnew(this, &obs::New) {}

void obs::New(sub* p_sub, CTBuint32 i_mask) 
{ 
  cout << "New called: p = " << p_sub << " mask = " << i_mask;
  if (i_mask) cout << " i = " << p_sub->Get_i();
  cout << endl; 
}

//------------------------------------------+-----------------------------------
int main(int, char*)
{

  sub* p_s  = new sub;
  obs* p_o1 = new obs;
  obs* p_o2 = new obs;
  
  p_s->Set_i(17);
  
  p_o1->SRnew.Connect(p_s->SEnew, p_s);
  
  p_s->Set_i(18);

  p_o2->SRnew.Connect(p_s->SEnew, p_s);

  p_s->Set_i(19);

  delete p_o1;

  p_s->Set_i(20);

  delete p_s;
  delete p_o2;
  
  return 0;
}


Generated at Fri Oct 24 18:14:16 2003 for CTBbase by doxygen1.2.9-20010812 written by Dimitri van Heesch, © 1997-2001