Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Branching

More complex connections can also be made relatively easily using both operator >>= and operator |, with operator | being used for branching.

Table 1.6. branching example

fused

unfused

signals::storage<void (), signals::fused> banger;
signals::counter<void (), signals::fused> counter;
signals::storage<void (float), signals::fused> floater(2.5f);
signals::storage<void (float), signals::fused> collector(0.0f);

banger
    // floater connects to collector, banger to floater.send_slot()
    | (floater.send_slot() >>= collector)
    | counter; // and banger to counter

banger();
BOOST_CHECK_EQUAL(counter.count(), 1);
BOOST_CHECK_EQUAL(collector.at<0>(), 2.5f);

signals::storage<void (), signals::unfused> banger;
signals::counter<void (), signals::unfused> counter;
signals::storage<void (float), signals::unfused> floater(2.5f);
signals::storage<void (float), signals::unfused> collector(0.0f);

banger
    // floater connects to collector, banger to floater.send_slot()
    | (floater.send_slot() >>= collector)
    | counter; // and banger to counter

banger();
BOOST_CHECK_EQUAL(counter.count(), 1);
BOOST_CHECK_EQUAL(collector.at<0>(), 2.5f);

Copyright © 2007 Stjepan Rajko

PrevUpHomeNext