c30ab72a30
[SVN r85097]
43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
// Example program for connecting an extended slot,
|
|
// using a signal's connect_extended and extended_slot_type.
|
|
//
|
|
// Copyright Frank Mori Hess 2009.
|
|
//
|
|
// Use, modification and
|
|
// distribution is subject to the Boost Software License, Version
|
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
|
// http://www.boost.org/LICENSE_1_0.txt)
|
|
// For more information, see http://www.boost.org
|
|
|
|
#include <boost/signals2/signal.hpp>
|
|
#include <iostream>
|
|
#include <string>
|
|
|
|
namespace bs2 = boost::signals2;
|
|
|
|
void single_shot_slot(const bs2::connection &conn, const std::string &message)
|
|
{
|
|
conn.disconnect();
|
|
std::cout << message;
|
|
}
|
|
|
|
int main()
|
|
{
|
|
typedef bs2::signal<void (void)> sig_type;
|
|
sig_type sig;
|
|
{
|
|
sig_type::extended_slot_type hello(&single_shot_slot, _1, "Hello");
|
|
sig.connect_extended(hello);
|
|
}
|
|
sig(); // prints "Hello"
|
|
{
|
|
sig_type::extended_slot_type world(&single_shot_slot, _1, ", World!\n");
|
|
sig.connect_extended(world);
|
|
}
|
|
sig(); // only prints ", World!\n" since hello slot has disconnected itself
|
|
sig(); // prints nothing, world slot has disconnected itself
|
|
|
|
return 0;
|
|
}
|
|
|