mirror of
https://github.com/boostorg/bind.git
synced 2026-01-25 16:52:38 +01:00
71 lines
1.5 KiB
Plaintext
71 lines
1.5 KiB
Plaintext
[/
|
|
/ Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
|
|
/ Copyright (c) 2003-2008 Peter Dimov
|
|
/
|
|
/ Distributed under 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)
|
|
/]
|
|
|
|
[section:examples Examples]
|
|
|
|
[section Using bind with standard algorithms]
|
|
|
|
class image;
|
|
|
|
class animation
|
|
{
|
|
public:
|
|
void advance(int ms);
|
|
bool inactive() const;
|
|
void render(image & target) const;
|
|
};
|
|
|
|
std::vector<animation> anims;
|
|
|
|
template<class C, class P> void erase_if(C & c, P pred)
|
|
{
|
|
c.erase(std::remove_if(c.begin(), c.end(), pred), c.end());
|
|
}
|
|
|
|
void update(int ms)
|
|
{
|
|
std::for_each(anims.begin(), anims.end(), boost::bind(&animation::advance, _1, ms));
|
|
erase_if(anims, boost::mem_fn(&animation::inactive));
|
|
}
|
|
|
|
void render(image & target)
|
|
{
|
|
std::for_each(anims.begin(), anims.end(), boost::bind(&animation::render, _1, boost::ref(target)));
|
|
}
|
|
|
|
[endsect]
|
|
|
|
[section Using bind with Boost.Function]
|
|
|
|
class button
|
|
{
|
|
public:
|
|
``[@boost:/libs/function/index.html `boost::function`]``<void()> onClick;
|
|
};
|
|
|
|
class player
|
|
{
|
|
public:
|
|
void play();
|
|
void stop();
|
|
};
|
|
|
|
button playButton, stopButton;
|
|
player thePlayer;
|
|
|
|
void connect()
|
|
{
|
|
playButton.onClick = boost::bind(&player::play, &thePlayer);
|
|
stopButton.onClick = boost::bind(&player::stop, &thePlayer);
|
|
}
|
|
|
|
[endsect]
|
|
|
|
[endsect]
|