3 #include <boost/signal.hpp>
4 #include <boost/bind.hpp>
6 #include <zypp/base/LogTools.h>
7 #include <zypp/base/Easy.h>
15 std::ostream & operator<<( std::ostream & str, const signal<Tp> & obj )
17 return str << "Connected slots: " << obj.num_slots();
22 std::ostream & operator<<( std::ostream & str, const connection & obj )
24 return str << "Connection: "
25 << ( obj.connected() ? '*' : '_' )
26 << ( obj.blocked() ? 'B' : '_' )
35 using boost::signals::connection;
36 using boost::signals::trackable;
41 HelloWorld(const HelloWorld &) {++i;}
44 void operator()(unsigned) const
46 USR << "Hello, World! " << i << std::endl;
52 int HelloWorld::i = 0;
58 static unsigned i = 0;
60 MIL << i << " -> " << _sigA << endl;
64 typedef signal<void(unsigned)> SigA;
66 SigA & siga() const { return _sigA; }
71 struct X : public trackable
74 X( const X & ) {_s=++s;}
75 X& operator=( const X & ) { return *this; }
80 void pong( unsigned i ) const
82 DBG << _s << ' ' << i << endl;
88 /******************************************************************
90 ** FUNCTION NAME : main
91 ** FUNCTION TYPE : int
93 int main( int argc, const char * argv[] )
95 --argc; ++argv; // skip arg 0
100 m.siga().connect( boost::bind( &X::pong, &xx, _1 ) );
105 m.siga().connect( boost::bind( &X::pong, &x, _1 ) );
109 m.siga().connect( boost::bind( &X::pong, &y, _1 ) );
116 ///////////////////////////////////////////
118 INT << "---STOP" << endl;