diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2016-10-06 10:41:18 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2016-10-06 10:43:11 +0900 |
commit | f763a99a501650eff2c60288aa6f10ef916d769e (patch) | |
tree | 02af7e13f9a38c888ebf340fe764cbe7dae99da9 /libs/signals | |
parent | 5cde13f21d36c7224b0e13d11c4b49379ae5210d (diff) | |
download | boost-f763a99a501650eff2c60288aa6f10ef916d769e.tar.gz boost-f763a99a501650eff2c60288aa6f10ef916d769e.tar.bz2 boost-f763a99a501650eff2c60288aa6f10ef916d769e.zip |
Imported Upstream version 1.62.0upstream/1.62.0
Change-Id: I9d4c1ddb7b7d8f0069217ecc582700f9fda6dd4c
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
Diffstat (limited to 'libs/signals')
-rw-r--r-- | libs/signals/doc/html/boost/last_value.html | 90 | ||||
-rw-r--r-- | libs/signals/doc/html/boost/last_value_voi_idp15355280.html | 75 | ||||
-rw-r--r-- | libs/signals/doc/html/boost/signal.html | 98 | ||||
-rw-r--r-- | libs/signals/doc/html/boost/signalN.html | 410 | ||||
-rw-r--r-- | libs/signals/doc/html/boost/signals/connection.html | 347 | ||||
-rw-r--r-- | libs/signals/doc/html/boost/signals/scoped_connection.html | 144 | ||||
-rw-r--r-- | libs/signals/doc/html/boost/signals/trackable.html | 154 | ||||
-rw-r--r-- | libs/signals/doc/html/boost/slot.html | 84 | ||||
-rw-r--r-- | libs/signals/doc/html/boost/visit_each.html | 98 | ||||
-rw-r--r-- | libs/signals/doc/html/doc_HTML.manifest | 16 | ||||
-rw-r--r-- | libs/signals/doc/html/index.html | 123 | ||||
-rw-r--r-- | libs/signals/doc/html/index/s04.html | 189 | ||||
-rw-r--r-- | libs/signals/doc/html/index/s05.html | 212 | ||||
-rw-r--r-- | libs/signals/doc/html/index/s06.html | 436 | ||||
-rw-r--r-- | libs/signals/doc/html/signals/reference.html | 112 | ||||
-rw-r--r-- | libs/signals/doc/html/signals/tests.html | 104 | ||||
-rw-r--r-- | libs/signals/doc/html/signals/tutorial.html | 1151 |
17 files changed, 0 insertions, 3843 deletions
diff --git a/libs/signals/doc/html/boost/last_value.html b/libs/signals/doc/html/boost/last_value.html deleted file mode 100644 index 87b517561f..0000000000 --- a/libs/signals/doc/html/boost/last_value.html +++ /dev/null @@ -1,90 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> -<title>Class template last_value</title> -<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="up" href="../signals/reference.html#header.boost.last_value_hpp" title="Header <boost/last_value.hpp>"> -<link rel="prev" href="visit_each.html" title="Function template visit_each"> -<link rel="next" href="last_value_voi_idp15355280.html" title="Class last_value<void>"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table cellpadding="2" width="100%"><tr> -<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> -<td align="center"><a href="../../../../../index.html">Home</a></td> -<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> -<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> -<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> -<td align="center"><a href="../../../../../more/index.htm">More</a></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="visit_each.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../signals/reference.html#header.boost.last_value_hpp"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="last_value_voi_idp15355280.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -<div class="refentry"> -<a name="boost.last_value"></a><div class="titlepage"></div> -<div class="refnamediv"> -<h2><span class="refentrytitle">Class template last_value</span></h2> -<p>boost::last_value — Evaluate an InputIterator sequence and return the - last value in the sequence.</p> -</div> -<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2> -<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../signals/reference.html#header.boost.last_value_hpp" title="Header <boost/last_value.hpp>">boost/last_value.hpp</a>> - -</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> -<span class="keyword">class</span> <a class="link" href="last_value.html" title="Class template last_value">last_value</a> <span class="special">{</span> -<span class="keyword">public</span><span class="special">:</span> - <span class="comment">// types</span> - <span class="keyword">typedef</span> <span class="identifier">T</span> <a name="boost.last_value.result_type"></a><span class="identifier">result_type</span><span class="special">;</span> - - <span class="comment">// <a class="link" href="last_value.html#idp15339184-bb">invocation</a></span> - <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> InputIterator<span class="special">></span> - <span class="identifier">result_type</span> <a class="link" href="last_value.html#idp15339744-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="identifier">InputIterator</span><span class="special">,</span> <span class="identifier">InputIterator</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> -<span class="special">}</span><span class="special">;</span></pre></div> -<div class="refsect1"> -<a name="idp63752080"></a><h2>Description</h2> -<div class="refsect2"> -<a name="idp63752496"></a><h3> -<a name="idp15339184-bb"></a><code class="computeroutput">last_value</code> invocation</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"> -<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> InputIterator<span class="special">></span> - <span class="identifier">result_type</span> <a name="idp15339744-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="identifier">InputIterator</span> first<span class="special">,</span> <span class="identifier">InputIterator</span> last<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Requires:</span></p></td> -<td><p><code class="computeroutput">first != last</code></p></td> -</tr> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td><p>Dereferences every iterator in the sequence <code class="computeroutput">[first, last)</code>.</p></td> -</tr> -<tr> -<td><p><span class="term">Returns:</span></p></td> -<td><p>The result of dereferencing the iterator <code class="computeroutput">last-1</code>.</p></td> -</tr> -</tbody> -</table></div> -</li></ol></div> -</div> -<div class="refsect2"> -<a name="idp63770240"></a><h3>Specializations</h3> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><a class="link" href="last_value_voi_idp15355280.html" title="Class last_value<void>">Class last_value<void></a></p></li></ul></div> -</div> -</div> -</div> -<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> -<td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<p>Use, modification and distribution is subject to the Boost - Software License, Version 1.0. (See accompanying file - <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> -</div></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="visit_each.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../signals/reference.html#header.boost.last_value_hpp"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="last_value_voi_idp15355280.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -</body> -</html> diff --git a/libs/signals/doc/html/boost/last_value_voi_idp15355280.html b/libs/signals/doc/html/boost/last_value_voi_idp15355280.html deleted file mode 100644 index c420aef9d4..0000000000 --- a/libs/signals/doc/html/boost/last_value_voi_idp15355280.html +++ /dev/null @@ -1,75 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> -<title>Class last_value<void></title> -<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="up" href="../signals/reference.html#header.boost.last_value_hpp" title="Header <boost/last_value.hpp>"> -<link rel="prev" href="last_value.html" title="Class template last_value"> -<link rel="next" href="../index/s04.html" title="Frequently Asked Questions"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table cellpadding="2" width="100%"><tr> -<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> -<td align="center"><a href="../../../../../index.html">Home</a></td> -<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> -<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> -<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> -<td align="center"><a href="../../../../../more/index.htm">More</a></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="last_value.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../signals/reference.html#header.boost.last_value_hpp"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../index/s04.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -<div class="refentry"> -<a name="boost.last_value_voi_idp15355280"></a><div class="titlepage"></div> -<div class="refnamediv"> -<h2><span class="refentrytitle">Class last_value<void></span></h2> -<p>boost::last_value<void> — Evaluate an InputIterator sequence.</p> -</div> -<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2> -<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../signals/reference.html#header.boost.last_value_hpp" title="Header <boost/last_value.hpp>">boost/last_value.hpp</a>> - -</span> -<span class="keyword">class</span> <a class="link" href="last_value_voi_idp15355280.html" title="Class last_value<void>">last_value</a><span class="special"><</span><span class="keyword">void</span><span class="special">></span> <span class="special">{</span> -<span class="keyword">public</span><span class="special">:</span> - <span class="comment">// types</span> - <span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.last_value_voi_idp15355280.result_type"></a><span class="identifier">result_type</span><span class="special">;</span> - - <span class="comment">// <a class="link" href="last_value_voi_idp15355280.html#idp13983296-bb">invocation</a></span> - <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> InputIterator<span class="special">></span> - <span class="identifier">result_type</span> <a class="link" href="last_value_voi_idp15355280.html#idp14154592-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="identifier">InputIterator</span><span class="special">,</span> <span class="identifier">InputIterator</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> -<span class="special">}</span><span class="special">;</span></pre></div> -<div class="refsect1"> -<a name="idp63797280"></a><h2>Description</h2> -<div class="refsect2"> -<a name="idp63797696"></a><h3> -<a name="idp13983296-bb"></a><code class="computeroutput">last_value</code> invocation</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"> -<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> InputIterator<span class="special">></span> - <span class="identifier">result_type</span> <a name="idp14154592-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="identifier">InputIterator</span> first<span class="special">,</span> <span class="identifier">InputIterator</span> last<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody><tr> -<td><p><span class="term">Effects:</span></p></td> -<td><p>Dereferences every iterator in the sequence <code class="computeroutput">[first, last)</code>.</p></td> -</tr></tbody> -</table></div> -</li></ol></div> -</div> -</div> -</div> -<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> -<td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<p>Use, modification and distribution is subject to the Boost - Software License, Version 1.0. (See accompanying file - <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> -</div></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="last_value.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../signals/reference.html#header.boost.last_value_hpp"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../index/s04.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -</body> -</html> diff --git a/libs/signals/doc/html/boost/signal.html b/libs/signals/doc/html/boost/signal.html deleted file mode 100644 index e56a327d35..0000000000 --- a/libs/signals/doc/html/boost/signal.html +++ /dev/null @@ -1,98 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> -<title>Class template signal</title> -<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="up" href="../signals/reference.html#header.boost.signal_hpp" title="Header <boost/signal.hpp>"> -<link rel="prev" href="signalN.html" title="Class template signalN"> -<link rel="next" href="slot.html" title="Class template slot"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table cellpadding="2" width="100%"><tr> -<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> -<td align="center"><a href="../../../../../index.html">Home</a></td> -<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> -<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> -<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> -<td align="center"><a href="../../../../../more/index.htm">More</a></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="signalN.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../signals/reference.html#header.boost.signal_hpp"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="slot.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -<div class="refentry"> -<a name="boost.signal"></a><div class="titlepage"></div> -<div class="refnamediv"> -<h2><span class="refentrytitle">Class template signal</span></h2> -<p>boost::signal — Safe multicast callback.</p> -</div> -<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2> -<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../signals/reference.html#header.boost.signal_hpp" title="Header <boost/signal.hpp>">boost/signal.hpp</a>> - -</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Combiner <span class="special">=</span> <a class="link" href="last_value.html" title="Class template last_value">last_value</a><span class="special"><</span><span class="identifier">R</span><span class="special">></span><span class="special">,</span> - <span class="keyword">typename</span> Group <span class="special">=</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">typename</span> GroupCompare <span class="special">=</span> std::less<span class="special"><</span><span class="identifier">Group</span><span class="special">></span><span class="special">,</span> - <span class="keyword">typename</span> SlotFunction <span class="special">=</span> functionN<span class="special"><</span><span class="identifier">Signature</span><span class="special">></span> <span class="special">></span> -<span class="keyword">class</span> <a class="link" href="signal.html" title="Class template signal">signal</a> <span class="special">:</span> <span class="keyword">public</span> <a class="link" href="signalN.html" title="Class template signalN">signalN</a><R, T1, T2, ..., TN, Combiner, Group, GroupCompare, SlotFunction> -<span class="special">{</span> -<span class="keyword">public</span><span class="special">:</span> - <span class="comment">// <a class="link" href="signal.html#boost.signalconstruct-copy-destruct">construct/copy/destruct</a></span> - <a class="link" href="signal.html#idp8148944-bb"><span class="identifier">signal</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">combiner_type</span><span class="special">&</span> <span class="special">=</span> <span class="identifier">combiner_type</span><span class="special">(</span><span class="special">)</span><span class="special">,</span> - <span class="keyword">const</span> <span class="identifier">group_compare_type</span><span class="special">&</span> <span class="special">=</span> <span class="identifier">group_compare_type</span><span class="special">(</span><span class="special">)</span><span class="special">)</span><span class="special">;</span> -<span class="special">}</span><span class="special">;</span></pre></div> -<div class="refsect1"> -<a name="idp63228816"></a><h2>Description</h2> -<p>Class template <a class="link" href="signal.html" title="Class template signal">signal</a> is a thin - wrapper around the numbered class templates <a class="link" href="signalN.html" title="Class template signalN">signal0</a>, <a class="link" href="signalN.html" title="Class template signalN">signal1</a>, etc. It accepts a function - type with N arguments instead of N separate arguments, and - derives from the appropriate <a class="link" href="signalN.html" title="Class template signalN">signalN</a> - instantiation.</p> -<p>All functionality of this class template is in its base - class <a class="link" href="signalN.html" title="Class template signalN">signalN</a>.</p> -<div class="refsect2"> -<a name="idp63233440"></a><h3>Template Parameters</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"> -<li class="listitem"> -<pre class="literallayout"><span class="keyword">typename</span> Signature</pre> -<p></p> -</li> -<li class="listitem"><pre class="literallayout"><span class="keyword">typename</span> Combiner <span class="special">=</span> <a class="link" href="last_value.html" title="Class template last_value">last_value</a><span class="special"><</span><span class="identifier">R</span><span class="special">></span></pre></li> -<li class="listitem"><pre class="literallayout"><span class="keyword">typename</span> Group <span class="special">=</span> <span class="keyword">int</span></pre></li> -<li class="listitem"><pre class="literallayout"><span class="keyword">typename</span> GroupCompare <span class="special">=</span> std::less<span class="special"><</span><span class="identifier">Group</span><span class="special">></span></pre></li> -<li class="listitem"><pre class="literallayout"><span class="keyword">typename</span> SlotFunction <span class="special">=</span> functionN<span class="special"><</span><span class="identifier">Signature</span><span class="special">></span></pre></li> -</ol></div> -</div> -<div class="refsect2"> -<a name="idp63249952"></a><h3> -<a name="boost.signalconstruct-copy-destruct"></a><code class="computeroutput">signal</code> - public - construct/copy/destruct</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"> -<pre class="literallayout"><a name="idp8148944-bb"></a><span class="identifier">signal</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">combiner_type</span><span class="special">&</span> combiner <span class="special">=</span> <span class="identifier">combiner_type</span><span class="special">(</span><span class="special">)</span><span class="special">,</span> - <span class="keyword">const</span> <span class="identifier">group_compare_type</span><span class="special">&</span> compare <span class="special">=</span> <span class="identifier">group_compare_type</span><span class="special">(</span><span class="special">)</span><span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody><tr> -<td><p><span class="term">Effects:</span></p></td> -<td>Initializes the base class with the given combiner - and comparison objects.</td> -</tr></tbody> -</table></div> -</li></ol></div> -</div> -</div> -</div> -<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> -<td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<p>Use, modification and distribution is subject to the Boost - Software License, Version 1.0. (See accompanying file - <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> -</div></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="signalN.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../signals/reference.html#header.boost.signal_hpp"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="slot.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -</body> -</html> diff --git a/libs/signals/doc/html/boost/signalN.html b/libs/signals/doc/html/boost/signalN.html deleted file mode 100644 index 8d82e52210..0000000000 --- a/libs/signals/doc/html/boost/signalN.html +++ /dev/null @@ -1,410 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> -<title>Class template signalN</title> -<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="up" href="../signals/reference.html#header.boost.signal_hpp" title="Header <boost/signal.hpp>"> -<link rel="prev" href="../signals/reference.html" title="Reference"> -<link rel="next" href="signal.html" title="Class template signal"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table cellpadding="2" width="100%"><tr> -<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> -<td align="center"><a href="../../../../../index.html">Home</a></td> -<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> -<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> -<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> -<td align="center"><a href="../../../../../more/index.htm">More</a></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="../signals/reference.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../signals/reference.html#header.boost.signal_hpp"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="signal.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -<div class="refentry"> -<a name="boost.signalN"></a><div class="titlepage"></div> -<div class="refnamediv"> -<h2><span class="refentrytitle">Class template signalN</span></h2> -<p>boost::signalN — Set of safe multicast callback types.</p> -</div> -<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2> -<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../signals/reference.html#header.boost.signal_hpp" title="Header <boost/signal.hpp>">boost/signal.hpp</a>> - -</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> R<span class="special">,</span> <span class="keyword">typename</span> T1<span class="special">,</span> <span class="keyword">typename</span> T2<span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="keyword">typename</span> TN<span class="special">,</span> - <span class="keyword">typename</span> Combiner <span class="special">=</span> <a class="link" href="last_value.html" title="Class template last_value">last_value</a><span class="special"><</span><span class="identifier">R</span><span class="special">></span><span class="special">,</span> <span class="keyword">typename</span> Group <span class="special">=</span> <span class="keyword">int</span><span class="special">,</span> - <span class="keyword">typename</span> GroupCompare <span class="special">=</span> std::less<span class="special"><</span><span class="identifier">Group</span><span class="special">></span><span class="special">,</span> - <span class="keyword">typename</span> SlotFunction <span class="special">=</span> functionN<span class="special"><</span><span class="identifier">R</span><span class="special">,</span> <span class="identifier">T1</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">TN</span><span class="special">></span> <span class="special">></span> -<span class="keyword">class</span> <a class="link" href="signalN.html" title="Class template signalN">signalN</a> <span class="special">:</span> <span class="keyword">public</span> <a class="link" href="signals/trackable.html" title="Class trackable">signals::trackable</a>, - <span class="keyword">private</span> noncopyable <span class="comment">// Exposition only</span> -<span class="special">{</span> -<span class="keyword">public</span><span class="special">:</span> - <span class="comment">// types</span> - <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">Combiner</span><span class="special">::</span><span class="identifier">result_type</span> <a name="boost.signalN.result_type"></a><span class="identifier">result_type</span><span class="special">;</span> - <span class="keyword">typedef</span> <span class="identifier">Combiner</span> <a name="boost.signalN.combiner_type"></a><span class="identifier">combiner_type</span><span class="special">;</span> - <span class="keyword">typedef</span> <span class="identifier">Group</span> <a name="boost.signalN.group_type"></a><span class="identifier">group_type</span><span class="special">;</span> - <span class="keyword">typedef</span> <span class="identifier">GroupCompare</span> <a name="boost.signalN.group_compare_type"></a><span class="identifier">group_compare_type</span><span class="special">;</span> - <span class="keyword">typedef</span> <span class="identifier">SlotFunction</span> <a name="boost.signalN.slot_function_type"></a><span class="identifier">slot_function_type</span><span class="special">;</span> - <span class="keyword">typedef</span> <a class="link" href="slot.html" title="Class template slot">slot</a><span class="special"><</span><span class="identifier">SlotFunction</span><span class="special">></span> <a name="boost.signalN.slot_type"></a><span class="identifier">slot_type</span><span class="special">;</span> - <span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.signalN.slot_result_type"></a><span class="identifier">slot_result_type</span><span class="special">;</span> - <span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="boost.signalN.slot_call_iterator"></a><span class="identifier">slot_call_iterator</span><span class="special">;</span> - <span class="keyword">typedef</span> <span class="identifier">T1</span> <a name="boost.signalN.argument_type"></a><span class="identifier">argument_type</span><span class="special">;</span> <span class="comment">// If N == 1</span> - <span class="keyword">typedef</span> <span class="identifier">T1</span> <a name="boost.signalN.first_argument_type"></a><span class="identifier">first_argument_type</span><span class="special">;</span> <span class="comment">// If N == 2</span> - <span class="keyword">typedef</span> <span class="identifier">T2</span> <a name="boost.signalN.second_argument_type"></a><span class="identifier">second_argument_type</span><span class="special">;</span> <span class="comment">// If N == 2</span> - <span class="keyword">typedef</span> <span class="identifier">T1</span> <a name="boost.signalN.arg1_type"></a><span class="identifier">arg1_type</span><span class="special">;</span> - <span class="keyword">typedef</span> <span class="identifier">T2</span> <a name="boost.signalN.arg2_type"></a><span class="identifier">arg2_type</span><span class="special">;</span> - . - . - . - <span class="keyword">typedef</span> <span class="identifier">TN</span> <a name="boost.signalN.argN_type"></a><span class="identifier">argN_type</span><span class="special">;</span> - - <span class="comment">// static constants</span> - <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">arity</span> = <span class="identifier">N</span><span class="special">;</span> - - <span class="comment">// <a class="link" href="signalN.html#boost.signalNconstruct-copy-destruct">construct/copy/destruct</a></span> - <a class="link" href="signalN.html#idp14409344-bb"><span class="identifier">signalN</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">combiner_type</span><span class="special">&</span> <span class="special">=</span> <span class="identifier">combiner_type</span><span class="special">(</span><span class="special">)</span><span class="special">,</span> - <span class="keyword">const</span> <span class="identifier">group_compare_type</span><span class="special">&</span> <span class="special">=</span> <span class="identifier">group_compare_type</span><span class="special">(</span><span class="special">)</span><span class="special">)</span><span class="special">;</span> - <a class="link" href="signalN.html#idp14582288-bb"><span class="special">~</span><span class="identifier">signalN</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> - - <span class="comment">// <a class="link" href="signalN.html#idp14928272-bb">connection management</a></span> - <a class="link" href="signals/connection.html" title="Class connection">signals::connection</a> - <a class="link" href="signalN.html#idp13700032-bb"><span class="identifier">connect</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">slot_type</span><span class="special">&</span><span class="special">,</span> <span class="identifier">signals</span><span class="special">::</span><span class="identifier">connect_position</span> <span class="special">=</span> <span class="identifier">signals</span><span class="special">::</span><span class="identifier">at_back</span><span class="special">)</span><span class="special">;</span> - <a class="link" href="signals/connection.html" title="Class connection">signals::connection</a> - <a class="link" href="signalN.html#idp5514832-bb"><span class="identifier">connect</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">group_type</span><span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">slot_type</span><span class="special">&</span><span class="special">,</span> - <span class="identifier">signals</span><span class="special">::</span><span class="identifier">connect_position</span> <span class="special">=</span> <span class="identifier">signals</span><span class="special">::</span><span class="identifier">at_back</span><span class="special">)</span><span class="special">;</span> - <span class="keyword">void</span> <a class="link" href="signalN.html#idp9833888-bb"><span class="identifier">disconnect</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">group_type</span><span class="special">&</span><span class="special">)</span><span class="special">;</span> - <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Slot<span class="special">></span> <span class="keyword">void</span> <a class="link" href="signalN.html#idp5157296-bb"><span class="identifier">disconnect</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Slot</span><span class="special">&</span><span class="special">)</span><span class="special">;</span> - <span class="keyword">void</span> <a class="link" href="signalN.html#idp13854544-bb"><span class="identifier">disconnect_all_slots</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> - <span class="keyword">bool</span> <a class="link" href="signalN.html#idp6011728-bb"><span class="identifier">empty</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> - <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a class="link" href="signalN.html#idp13510624-bb"><span class="identifier">num_slots</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> - - <span class="comment">// <a class="link" href="signalN.html#idp9677968-bb">invocation</a></span> - <span class="identifier">result_type</span> <a class="link" href="signalN.html#idp7589696-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="identifier">arg1_type</span><span class="special">,</span> <span class="identifier">arg2_type</span><span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">argN_type</span><span class="special">)</span><span class="special">;</span> - <span class="identifier">result_type</span> <a class="link" href="signalN.html#idp11235056-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="identifier">arg1_type</span><span class="special">,</span> <span class="identifier">arg2_type</span><span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">argN_type</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> - - <span class="comment">// <a class="link" href="signalN.html#idp14813456-bb">combiner access</a></span> - <span class="identifier">combiner_type</span><span class="special">&</span> <a class="link" href="signalN.html#idp15176272-bb"><span class="identifier">combiner</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> - <span class="keyword">const</span> <span class="identifier">combiner_type</span><span class="special">&</span> <a class="link" href="signalN.html#idp14900048-bb"><span class="identifier">combiner</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> -<span class="special">}</span><span class="special">;</span></pre></div> -<div class="refsect1"> -<a name="idp63045280"></a><h2>Description</h2> -<p>The class template <a class="link" href="signalN.html" title="Class template signalN">signalN</a> covers - several related classes signal0, signal1, signal2, etc., - where the number suffix describes the number of function - parameters the signal and its connected slots will - take. Instead of enumerating all classes, a single pattern - <a class="link" href="signalN.html" title="Class template signalN">signalN</a> will be described, where N - represents the number of function parameters.</p> -<div class="refsect2"> -<a name="idp63047712"></a><h3> -<a name="boost.signalNconstruct-copy-destruct"></a><code class="computeroutput">signalN</code> - public - construct/copy/destruct</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"> -<li class="listitem"> -<pre class="literallayout"><a name="idp14409344-bb"></a><span class="identifier">signalN</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">combiner_type</span><span class="special">&</span> combiner <span class="special">=</span> <span class="identifier">combiner_type</span><span class="special">(</span><span class="special">)</span><span class="special">,</span> - <span class="keyword">const</span> <span class="identifier">group_compare_type</span><span class="special">&</span> compare <span class="special">=</span> <span class="identifier">group_compare_type</span><span class="special">(</span><span class="special">)</span><span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td>Initializes the signal to contain no slots, copies the given combiner into internal storage, and stores the given group comparison function object to compare groups.</td> -</tr> -<tr> -<td><p><span class="term">Postconditions:</span></p></td> -<td><code class="computeroutput">this-><a class="link" href="signalN.html#idp6011728-bb">empty</a>()</code></td> -</tr> -</tbody> -</table></div> -</li> -<li class="listitem"> -<pre class="literallayout"><a name="idp14582288-bb"></a><span class="special">~</span><span class="identifier">signalN</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody><tr> -<td><p><span class="term">Effects:</span></p></td> -<td>Disconnects all slots connected to <code class="computeroutput">*this</code>.</td> -</tr></tbody> -</table></div> -</li> -</ol></div> -</div> -<div class="refsect2"> -<a name="idp63069920"></a><h3> -<a name="idp14928272-bb"></a><code class="computeroutput">signalN</code> connection management</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"> -<li class="listitem"> -<pre class="literallayout"><a name="idp14296960-bb"></a><a class="link" href="signals/connection.html" title="Class connection">signals::connection</a> -<a name="idp13700032-bb"></a><span class="identifier">connect</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">slot_type</span><span class="special">&</span> slot<span class="special">,</span> - <span class="identifier">signals</span><span class="special">::</span><span class="identifier">connect_position</span> at <span class="special">=</span> <span class="identifier">signals</span><span class="special">::</span><span class="identifier">at_back</span><span class="special">)</span><span class="special">;</span> -<a class="link" href="signals/connection.html" title="Class connection">signals::connection</a> -<a name="idp5514832-bb"></a><span class="identifier">connect</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">group_type</span><span class="special">&</span> group<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">slot_type</span><span class="special">&</span> slot<span class="special">,</span> - <span class="identifier">signals</span><span class="special">::</span><span class="identifier">connect_position</span> at <span class="special">=</span> <span class="identifier">signals</span><span class="special">::</span><span class="identifier">at_back</span><span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td>Connects the signal this to the incoming - slot. If the slot is inactive, i.e., any of the trackable - objects bound by the slot call have been destroyed, then the - call to connect is a no-op. If the second version of - <code class="computeroutput">connect</code> is invoked, the - slot is associated with the given group. The <code class="computeroutput">at</code> - parameter specifies where the slot should be connected: - <code class="computeroutput">at_front</code> indicates that the slot will be - connected at the front of the list or group of slots and - <code class="computeroutput">at_back</code> indicates that the slot will be - connected at the back of the list or group of - slots.</td> -</tr> -<tr> -<td><p><span class="term">Returns:</span></p></td> -<td>A - <code class="computeroutput"><a class="link" href="signals/connection.html" title="Class connection">signals::connection</a></code> - object that references the newly-created connection between - the signal and the slot; if the slot is inactive, returns a - disconnected connection.</td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td>This routine meets the strong exception guarantee, - where any exception thrown will cause the slot to not be - connected to the signal.</td> -</tr> -<tr> -<td><p><span class="term">Complexity:</span></p></td> -<td>Constant time when connecting a slot - without a group name or logarithmic in the number of groups - when connecting to a particular - group.</td> -</tr> -<tr> -<td><p><span class="term">Notes:</span></p></td> -<td>It is unspecified whether connecting a slot while the - signal is calling will result in the slot being called - immediately.</td> -</tr> -</tbody> -</table></div> -</li> -<li class="listitem"> -<pre class="literallayout"><a name="idp5262448-bb"></a><span class="keyword">void</span> <a name="idp9833888-bb"></a><span class="identifier">disconnect</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">group_type</span><span class="special">&</span> group<span class="special">)</span><span class="special">;</span> -<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Slot<span class="special">></span> <span class="keyword">void</span> <a name="idp5157296-bb"></a><span class="identifier">disconnect</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Slot</span><span class="special">&</span> slot<span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td>If the parameter is (convertible to) a - group name, any slots in the given group are - disconnected. Otherwise, any slots equal to the given slot - are disconnected.</td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td>Will not throw unless a user destructor or - equality operator <code class="computeroutput">==</code> throws. If either throws, - not all slots may be disconnected.</td> -</tr> -<tr> -<td><p><span class="term">Complexity:</span></p></td> -<td>If a group is given, O(lg g) + k where - g is the number of groups in the signal and k is the - number of slots in the group. Otherwise, linear in the - number of slots connected to the - signal.</td> -</tr> -</tbody> -</table></div> -</li> -<li class="listitem"> -<pre class="literallayout"><span class="keyword">void</span> <a name="idp13854544-bb"></a><span class="identifier">disconnect_all_slots</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td>Disconnects all slots connected to the signal.</td> -</tr> -<tr> -<td><p><span class="term">Postconditions:</span></p></td> -<td> -<code class="computeroutput">this-><a class="link" href="signalN.html#idp6011728-bb">empty</a>()</code>.</td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td>If disconnecting a slot causes an exception to be - thrown, not all slots may be disconnected.</td> -</tr> -<tr> -<td><p><span class="term">Complexity:</span></p></td> -<td>Linear in the number of slots known to the - signal.</td> -</tr> -<tr> -<td><p><span class="term">Notes:</span></p></td> -<td>May be called at any time within the lifetime of the - signal, including during calls to the signal's slots.</td> -</tr> -</tbody> -</table></div> -</li> -<li class="listitem"> -<pre class="literallayout"><span class="keyword">bool</span> <a name="idp6011728-bb"></a><span class="identifier">empty</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Returns:</span></p></td> -<td> -<code class="computeroutput">true</code> if no slots - are connected to the signal, and - <code class="computeroutput">false</code> otherwise.</td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td>Will not throw.</td> -</tr> -<tr> -<td><p><span class="term">Complexity:</span></p></td> -<td>Linear in the number of slots known to the - signal.</td> -</tr> -<tr> -<td><p><span class="term">Rationale:</span></p></td> -<td>Slots can disconnect at any point in time, - including while those same slots are being invoked. It is - therefore possible that the implementation must search - through a list of disconnected slots to determine if any - slots are still connected.</td> -</tr> -</tbody> -</table></div> -</li> -<li class="listitem"> -<pre class="literallayout"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a name="idp13510624-bb"></a><span class="identifier">num_slots</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Returns:</span></p></td> -<td>The number of slots connected to the signal</td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td>Will not throw.</td> -</tr> -<tr> -<td><p><span class="term">Complexity:</span></p></td> -<td>Linear in the number of slots known to the - signal.</td> -</tr> -<tr> -<td><p><span class="term">Rationale:</span></p></td> -<td>Slots can disconnect at any point in time, - including while those same slots are being invoked. It is - therefore possible that the implementation must search - through a list of disconnected slots to determine how many - slots are still connected.</td> -</tr> -</tbody> -</table></div> -</li> -</ol></div> -</div> -<div class="refsect2"> -<a name="idp63148704"></a><h3> -<a name="idp9677968-bb"></a><code class="computeroutput">signalN</code> invocation</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"> -<pre class="literallayout"><a name="idp12911056-bb"></a><span class="identifier">result_type</span> <a name="idp7589696-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="identifier">arg1_type</span> a1<span class="special">,</span> <span class="identifier">arg2_type</span> a2<span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">argN_type</span> aN<span class="special">)</span><span class="special">;</span> -<span class="identifier">result_type</span> <a name="idp11235056-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="identifier">arg1_type</span> a1<span class="special">,</span> <span class="identifier">arg2_type</span> a2<span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">argN_type</span> aN<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td>Invokes the combiner with a - <code class="computeroutput">slot_call_iterator</code> range - [first, last) corresponding to the sequence of calls to the - slots connected to signal - <code class="computeroutput">*this</code>. Dereferencing an - iterator in this range causes a slot call with the given set - of parameters <code class="computeroutput">(a1, a2, ..., - aN)</code>, the result of which is returned from - the iterator dereference operation.</td> -</tr> -<tr> -<td><p><span class="term">Returns:</span></p></td> -<td>The result returned by the combiner.</td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td>If an exception is thrown by a slot call, or if the - combiner does not dereference any slot past some given slot, - all slots after that slot in the internal list of connected - slots will not be invoked.</td> -</tr> -<tr> -<td><p><span class="term">Notes:</span></p></td> -<td> -<p class="simpara">Only the slots associated with iterators that are - actually dereferenced will be invoked. Multiple dereferences - of the same iterator will not result in multiple slot - invocations, because the return value of the slot will be - cached.</p> -<p class="simpara">The <code class="computeroutput">const</code> version of - the function call operator will invoke the combiner as - <code class="computeroutput">const</code>, whereas the - non-<code class="computeroutput">const</code> version will - invoke the combiner as - non-<code class="computeroutput">const</code>.</p> -<p class="simpara">Calling the function call operator may invoke undefined - behavior if no slots are connected to the signal, depending - on the combiner used. The default combiner is well-defined - for zero slots when the return type is void but is undefined - when the return type is any other type (because there is no - way to synthesize a return value).</p> -</td> -</tr> -</tbody> -</table></div> -</li></ol></div> -</div> -<div class="refsect2"> -<a name="idp63178768"></a><h3> -<a name="idp14813456-bb"></a><code class="computeroutput">signalN</code> combiner access</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"> -<pre class="literallayout"><a name="idp15039520-bb"></a><span class="identifier">combiner_type</span><span class="special">&</span> <a name="idp15176272-bb"></a><span class="identifier">combiner</span><span class="special">(</span><span class="special">)</span><span class="special">;</span> -<span class="keyword">const</span> <span class="identifier">combiner_type</span><span class="special">&</span> <a name="idp14900048-bb"></a><span class="identifier">combiner</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Returns:</span></p></td> -<td>A reference to the stored combiner.</td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td>Will not throw.</td> -</tr> -</tbody> -</table></div> -</li></ol></div> -</div> -</div> -</div> -<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> -<td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<p>Use, modification and distribution is subject to the Boost - Software License, Version 1.0. (See accompanying file - <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> -</div></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="../signals/reference.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../signals/reference.html#header.boost.signal_hpp"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="signal.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -</body> -</html> diff --git a/libs/signals/doc/html/boost/signals/connection.html b/libs/signals/doc/html/boost/signals/connection.html deleted file mode 100644 index 3c9b85b38c..0000000000 --- a/libs/signals/doc/html/boost/signals/connection.html +++ /dev/null @@ -1,347 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> -<title>Class connection</title> -<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="../../index.html" title="Chapter 1. Boost.Signals"> -<link rel="up" href="../../signals/reference.html#header.boost.signals.connection_hpp" title="Header <boost/signals/connection.hpp>"> -<link rel="prev" href="trackable.html" title="Class trackable"> -<link rel="next" href="scoped_connection.html" title="Class scoped_connection"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table cellpadding="2" width="100%"><tr> -<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td> -<td align="center"><a href="../../../../../../index.html">Home</a></td> -<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td> -<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> -<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> -<td align="center"><a href="../../../../../../more/index.htm">More</a></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="trackable.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../signals/reference.html#header.boost.signals.connection_hpp"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="scoped_connection.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -<div class="refentry"> -<a name="boost.signals.connection"></a><div class="titlepage"></div> -<div class="refnamediv"> -<h2><span class="refentrytitle">Class connection</span></h2> -<p>boost::signals::connection — Query/disconnect a signal-slot connection.</p> -</div> -<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2> -<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../signals/reference.html#header.boost.signals.connection_hpp" title="Header <boost/signals/connection.hpp>">boost/signals/connection.hpp</a>> - -</span> -<span class="keyword">class</span> <a class="link" href="connection.html" title="Class connection">connection</a> <span class="special">{</span> -<span class="keyword">public</span><span class="special">:</span> - <span class="comment">// <a class="link" href="connection.html#boost.signals.connectionconstruct-copy-destruct">construct/copy/destruct</a></span> - <a class="link" href="connection.html#idp13432080-bb"><span class="identifier">connection</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> - <a class="link" href="connection.html#idp14895008-bb"><span class="identifier">connection</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span><span class="special">)</span><span class="special">;</span> - connection& <a class="link" href="connection.html#idp11771344-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span><span class="special">)</span><span class="special">;</span> - - <span class="comment">// <a class="link" href="connection.html#idp14411360-bb">connection management</a></span> - <span class="keyword">void</span> <a class="link" href="connection.html#idp12155424-bb"><span class="identifier">disconnect</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> - <span class="keyword">bool</span> <a class="link" href="connection.html#idp15454784-bb"><span class="identifier">connected</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> - - <span class="comment">// <a class="link" href="connection.html#idp13757056-bb">blocking</a></span> - <span class="keyword">void</span> <a class="link" href="connection.html#idp6117280-bb"><span class="identifier">block</span></a><span class="special">(</span><span class="keyword">bool</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">)</span><span class="special">;</span> - <span class="keyword">void</span> <a class="link" href="connection.html#idp15138832-bb"><span class="identifier">unblock</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> - <span class="keyword">bool</span> <a class="link" href="connection.html#idp11189952-bb"><span class="identifier">blocked</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> - - <span class="comment">// <a class="link" href="connection.html#idp14777488-bb">modifiers</a></span> - <span class="keyword">void</span> <a class="link" href="connection.html#idp12380096-bb"><span class="identifier">swap</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span><span class="special">)</span><span class="special">;</span> - - <span class="comment">// <a class="link" href="connection.html#idp14350000-bb">comparisons</a></span> - <span class="keyword">bool</span> <a class="link" href="connection.html#idp12167552-bb"><span class="keyword">operator</span><span class="special">==</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> - <span class="keyword">bool</span> <a class="link" href="connection.html#idp13473760-bb"><span class="keyword">operator</span><span class="special"><</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> -<span class="special">}</span><span class="special">;</span> - -<span class="comment">// <a class="link" href="connection.html#idp13997264-bb">specialized algorithms</a></span> -<span class="keyword">void</span> <a class="link" href="connection.html#boost.signals.connection.swap"><span class="identifier">swap</span></a><span class="special">(</span><a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span><span class="special">,</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span><span class="special">)</span><span class="special">;</span></pre></div> -<div class="refsect1"> -<a name="idp63456336"></a><h2>Description</h2> -<p>The <a class="link" href="connection.html" title="Class connection">connection</a> class represents - a connection between a Signal and a Slot. It is a - lightweight object that has the ability to query whether the - signal and slot are currently connected, and to disconnect - the signal and slot. It is always safe to query or - disconnect a connection.</p> -<div class="refsect2"> -<a name="idp63458464"></a><h3> -<a name="boost.signals.connectionconstruct-copy-destruct"></a><code class="computeroutput">connection</code> - public - construct/copy/destruct</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"> -<li class="listitem"> -<pre class="literallayout"><a name="idp13432080-bb"></a><span class="identifier">connection</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td><p>Sets the currently represented connection to the - NULL connection.</p></td> -</tr> -<tr> -<td><p><span class="term">Postconditions:</span></p></td> -<td><p><code class="computeroutput">!this-><a class="link" href="connection.html#idp15454784-bb">connected</a>()</code>.</p></td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td><p>Will not throw.</p></td> -</tr> -</tbody> -</table></div> -</li> -<li class="listitem"> -<pre class="literallayout"><a name="idp14895008-bb"></a><span class="identifier">connection</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span> other<span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td><p><code class="computeroutput">this</code> references - the connection referenced by - <code class="computeroutput">other</code>.</p></td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td><p>Will not throw.</p></td> -</tr> -</tbody> -</table></div> -</li> -<li class="listitem"> -<pre class="literallayout">connection& <a name="idp11771344-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span> other<span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td><p><code class="computeroutput">this</code> references - the connection referenced by - <code class="computeroutput">other</code>.</p></td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td><p>Will not throw.</p></td> -</tr> -</tbody> -</table></div> -</li> -</ol></div> -</div> -<div class="refsect2"> -<a name="idp63487520"></a><h3> -<a name="idp14411360-bb"></a><code class="computeroutput">connection</code> connection management</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"> -<li class="listitem"> -<pre class="literallayout"><span class="keyword">void</span> <a name="idp12155424-bb"></a><span class="identifier">disconnect</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td><p>If - <code class="computeroutput">this-><a class="link" href="connection.html#idp15454784-bb">connected</a>()</code>, - disconnects the signal and slot referenced by this; - otherwise, this operation is a no-op.</p></td> -</tr> -<tr> -<td><p><span class="term">Postconditions:</span></p></td> -<td><p><code class="computeroutput">!this-><a class="link" href="connection.html#idp15454784-bb">connected</a>()</code>.</p></td> -</tr> -</tbody> -</table></div> -</li> -<li class="listitem"> -<pre class="literallayout"><span class="keyword">bool</span> <a name="idp15454784-bb"></a><span class="identifier">connected</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Returns:</span></p></td> -<td><p><code class="computeroutput">true</code> if this - references a non-NULL connection that is still active - (connected), and <code class="computeroutput">false</code> - otherwise.</p></td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td><p>Will not throw.</p></td> -</tr> -</tbody> -</table></div> -</li> -</ol></div> -</div> -<div class="refsect2"> -<a name="idp63508416"></a><h3> -<a name="idp13757056-bb"></a><code class="computeroutput">connection</code> blocking</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"> -<li class="listitem"> -<pre class="literallayout"><span class="keyword">void</span> <a name="idp6117280-bb"></a><span class="identifier">block</span><span class="special">(</span><span class="keyword">bool</span> should_block <span class="special">=</span> <span class="keyword">true</span><span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Requires:</span></p></td> -<td><code class="computeroutput">connected()</code></td> -</tr> -<tr> -<td><p><span class="term">Postconditions:</span></p></td> -<td><code class="computeroutput">blocked() == should_block</code></td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td>Will not throw.</td> -</tr> -</tbody> -</table></div> -</li> -<li class="listitem"> -<pre class="literallayout"><span class="keyword">void</span> <a name="idp15138832-bb"></a><span class="identifier">unblock</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Requires:</span></p></td> -<td><code class="computeroutput">connected()</code></td> -</tr> -<tr> -<td><p><span class="term">Postconditions:</span></p></td> -<td><code class="computeroutput">!blocked()</code></td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td>Will not throw.</td> -</tr> -</tbody> -</table></div> -</li> -<li class="listitem"> -<pre class="literallayout"><span class="keyword">bool</span> <a name="idp11189952-bb"></a><span class="identifier">blocked</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Returns:</span></p></td> -<td> -<code class="computeroutput">true</code> if the associated slot is either disconnected or blocked, <code class="computeroutput">false</code> otherwise.</td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td>Will not throw.</td> -</tr> -</tbody> -</table></div> -</li> -</ol></div> -</div> -<div class="refsect2"> -<a name="idp63537344"></a><h3> -<a name="idp14777488-bb"></a><code class="computeroutput">connection</code> modifiers</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"> -<pre class="literallayout"><span class="keyword">void</span> <a name="idp12380096-bb"></a><span class="identifier">swap</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span> other<span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td><p>Swaps the connections referenced in - <code class="computeroutput">this</code> and - <code class="computeroutput">other</code>.</p></td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td><p>Will not throw.</p></td> -</tr> -</tbody> -</table></div> -</li></ol></div> -</div> -<div class="refsect2"> -<a name="idp63549536"></a><h3> -<a name="idp14350000-bb"></a><code class="computeroutput">connection</code> comparisons</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"> -<li class="listitem"> -<pre class="literallayout"><span class="keyword">bool</span> <a name="idp12167552-bb"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span> other<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Returns:</span></p></td> -<td><p><code class="computeroutput">true</code> if - <code class="computeroutput">this</code> and - <code class="computeroutput">other</code> reference the same - connection or both reference the NULL connection, and - <code class="computeroutput">false</code> - otherwise.</p></td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td><p>Will not throw.</p></td> -</tr> -</tbody> -</table></div> -</li> -<li class="listitem"> -<pre class="literallayout"><span class="keyword">bool</span> <a name="idp13473760-bb"></a><span class="keyword">operator</span><span class="special"><</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span> other<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Returns:</span></p></td> -<td><p><code class="computeroutput">true</code> if the - connection referenced by - <code class="computeroutput">this</code> precedes the - connection referenced by - <code class="computeroutput">other</code> based on some - unspecified ordering, and - <code class="computeroutput">false</code> - otherwise.</p></td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td><p>Will not throw.</p></td> -</tr> -</tbody> -</table></div> -</li> -</ol></div> -</div> -<div class="refsect2"> -<a name="idp63577088"></a><h3> -<a name="idp13997264-bb"></a><code class="computeroutput">connection</code> specialized algorithms</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"> -<pre class="literallayout"><span class="keyword">void</span> <a name="boost.signals.connection.swap"></a><span class="identifier">swap</span><span class="special">(</span><a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span> x<span class="special">,</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span> y<span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td><p><code class="computeroutput">x.swap(y)</code></p></td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td><p>Will not throw.</p></td> -</tr> -</tbody> -</table></div> -</li></ol></div> -</div> -</div> -</div> -<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> -<td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<p>Use, modification and distribution is subject to the Boost - Software License, Version 1.0. (See accompanying file - <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> -</div></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="trackable.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../signals/reference.html#header.boost.signals.connection_hpp"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="scoped_connection.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -</body> -</html> diff --git a/libs/signals/doc/html/boost/signals/scoped_connection.html b/libs/signals/doc/html/boost/signals/scoped_connection.html deleted file mode 100644 index 2dadeae7a6..0000000000 --- a/libs/signals/doc/html/boost/signals/scoped_connection.html +++ /dev/null @@ -1,144 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> -<title>Class scoped_connection</title> -<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="../../index.html" title="Chapter 1. Boost.Signals"> -<link rel="up" href="../../signals/reference.html#header.boost.signals.connection_hpp" title="Header <boost/signals/connection.hpp>"> -<link rel="prev" href="connection.html" title="Class connection"> -<link rel="next" href="../visit_each.html" title="Function template visit_each"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table cellpadding="2" width="100%"><tr> -<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td> -<td align="center"><a href="../../../../../../index.html">Home</a></td> -<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td> -<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> -<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> -<td align="center"><a href="../../../../../../more/index.htm">More</a></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="connection.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../signals/reference.html#header.boost.signals.connection_hpp"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../visit_each.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -<div class="refentry"> -<a name="boost.signals.scoped_connection"></a><div class="titlepage"></div> -<div class="refnamediv"> -<h2><span class="refentrytitle">Class scoped_connection</span></h2> -<p>boost::signals::scoped_connection — Limits a signal-slot connection lifetime to a particular scope.</p> -</div> -<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2> -<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../signals/reference.html#header.boost.signals.connection_hpp" title="Header <boost/signals/connection.hpp>">boost/signals/connection.hpp</a>> - -</span> -<span class="keyword">class</span> <a class="link" href="scoped_connection.html" title="Class scoped_connection">scoped_connection</a> <span class="special">:</span> <span class="keyword">private</span> noncopyable <span class="comment">// Exposition only</span> -<span class="special">{</span> -<span class="keyword">public</span><span class="special">:</span> - <span class="comment">// <a class="link" href="scoped_connection.html#boost.signals.scoped_connectionconstruct-copy-destruct">construct/copy/destruct</a></span> - <a class="link" href="scoped_connection.html#idp14721008-bb"><span class="identifier">scoped_connection</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span><span class="special">)</span><span class="special">;</span> - <a class="link" href="scoped_connection.html#idp11489936-bb"><span class="special">~</span><span class="identifier">scoped_connection</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> - - <span class="comment">// <a class="link" href="scoped_connection.html#idp11394016-bb">connection management</a></span> - <span class="keyword">void</span> <a class="link" href="scoped_connection.html#idp6411680-bb"><span class="identifier">disconnect</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> - <span class="keyword">bool</span> <a class="link" href="scoped_connection.html#idp11722480-bb"><span class="identifier">connected</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> -<span class="special">}</span><span class="special">;</span></pre></div> -<div class="refsect1"> -<a name="idp63620368"></a><h2>Description</h2> -<div class="refsect2"> -<a name="idp63620784"></a><h3> -<a name="boost.signals.scoped_connectionconstruct-copy-destruct"></a><code class="computeroutput">scoped_connection</code> - public - construct/copy/destruct</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"> -<li class="listitem"> -<pre class="literallayout"><a name="idp14721008-bb"></a><span class="identifier">scoped_connection</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="connection.html" title="Class connection">connection</a><span class="special">&</span> other<span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td><p><code class="computeroutput">this</code> references - the connection referenced by - <code class="computeroutput">other</code>.</p></td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td><p>Will not throw.</p></td> -</tr> -</tbody> -</table></div> -</li> -<li class="listitem"> -<pre class="literallayout"><a name="idp11489936-bb"></a><span class="special">~</span><span class="identifier">scoped_connection</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody><tr> -<td><p><span class="term">Effects:</span></p></td> -<td><p>If - <code class="computeroutput">this-><a class="link" href="scoped_connection.html#idp11722480-bb">connected</a>()</code>, - disconnects the signal-slot connection.</p></td> -</tr></tbody> -</table></div> -</li> -</ol></div> -</div> -<div class="refsect2"> -<a name="idp63639328"></a><h3> -<a name="idp11394016-bb"></a><code class="computeroutput">scoped_connection</code> connection management</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"> -<li class="listitem"> -<pre class="literallayout"><span class="keyword">void</span> <a name="idp6411680-bb"></a><span class="identifier">disconnect</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td><p>If - <code class="computeroutput">this-><a class="link" href="scoped_connection.html#idp11722480-bb">connected</a>()</code>, - disconnects the signal and slot referenced by this; - otherwise, this operation is a no-op.</p></td> -</tr> -<tr> -<td><p><span class="term">Postconditions:</span></p></td> -<td><p><code class="computeroutput">!this-><a class="link" href="scoped_connection.html#idp11722480-bb">connected</a>()</code>.</p></td> -</tr> -</tbody> -</table></div> -</li> -<li class="listitem"> -<pre class="literallayout"><span class="keyword">bool</span> <a name="idp11722480-bb"></a><span class="identifier">connected</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Returns:</span></p></td> -<td><p><code class="computeroutput">true</code> if this - references a non-NULL connection that is still active - (connected), and <code class="computeroutput">false</code> - otherwise.</p></td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td><p>Will not throw.</p></td> -</tr> -</tbody> -</table></div> -</li> -</ol></div> -</div> -</div> -</div> -<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> -<td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<p>Use, modification and distribution is subject to the Boost - Software License, Version 1.0. (See accompanying file - <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> -</div></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="connection.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../signals/reference.html#header.boost.signals.connection_hpp"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../visit_each.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -</body> -</html> diff --git a/libs/signals/doc/html/boost/signals/trackable.html b/libs/signals/doc/html/boost/signals/trackable.html deleted file mode 100644 index e6f75d1754..0000000000 --- a/libs/signals/doc/html/boost/signals/trackable.html +++ /dev/null @@ -1,154 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> -<title>Class trackable</title> -<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="../../index.html" title="Chapter 1. Boost.Signals"> -<link rel="up" href="../../signals/reference.html#header.boost.signals.trackable_hpp" title="Header <boost/signals/trackable.hpp>"> -<link rel="prev" href="../slot.html" title="Class template slot"> -<link rel="next" href="connection.html" title="Class connection"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table cellpadding="2" width="100%"><tr> -<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td> -<td align="center"><a href="../../../../../../index.html">Home</a></td> -<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td> -<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> -<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> -<td align="center"><a href="../../../../../../more/index.htm">More</a></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="../slot.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../signals/reference.html#header.boost.signals.trackable_hpp"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="connection.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -<div class="refentry"> -<a name="boost.signals.trackable"></a><div class="titlepage"></div> -<div class="refnamediv"> -<h2><span class="refentrytitle">Class trackable</span></h2> -<p>boost::signals::trackable — Enables safe use of multicast callbacks.</p> -</div> -<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2> -<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../signals/reference.html#header.boost.signals.trackable_hpp" title="Header <boost/signals/trackable.hpp>">boost/signals/trackable.hpp</a>> - -</span> -<span class="keyword">class</span> <a class="link" href="trackable.html" title="Class trackable">trackable</a> <span class="special">{</span> -<span class="keyword">public</span><span class="special">:</span> - <span class="comment">// <a class="link" href="trackable.html#boost.signals.trackableconstruct-copy-destruct">construct/copy/destruct</a></span> - <a class="link" href="trackable.html#idp12425984-bb"><span class="identifier">trackable</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> - <a class="link" href="trackable.html#idp15446000-bb"><span class="identifier">trackable</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="trackable.html" title="Class trackable">trackable</a><span class="special">&</span><span class="special">)</span><span class="special">;</span> - trackable& <a class="link" href="trackable.html#idp11425632-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="trackable.html" title="Class trackable">trackable</a><span class="special">&</span><span class="special">)</span><span class="special">;</span> - <a class="link" href="trackable.html#idp12268880-bb"><span class="special">~</span><span class="identifier">trackable</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> -<span class="special">}</span><span class="special">;</span></pre></div> -<div class="refsect1"> -<a name="idp63334720"></a><h2>Description</h2> -<p>The <code class="computeroutput">trackable</code> class provides automatic - disconnection of signals and slots when objects bound in - slots (via pointer or reference) are destroyed. The - <code class="computeroutput">trackable</code> class may only be used as a public - base class for some other class; when used as such, that - class may be bound to function objects used as part of - slots. The manner in which a <code class="computeroutput">trackable</code> object - tracks the set of signal-slot connections it is a part of is - unspecified.</p> -<p>The actual use of <code class="computeroutput">trackable</code> is contingent - on the presence of appropriate - <a class="link" href="../visit_each.html" title="Function template visit_each">visit_each</a> overloads for any - type that may contain pointers or references to trackable - objects.</p> -<div class="refsect2"> -<a name="idp63339840"></a><h3> -<a name="boost.signals.trackableconstruct-copy-destruct"></a><code class="computeroutput">trackable</code> - public - construct/copy/destruct</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"> -<li class="listitem"> -<pre class="literallayout"><a name="idp12425984-bb"></a><span class="identifier">trackable</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td><p>Sets the list of connected slots to empty.</p></td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td><p>Will not throw.</p></td> -</tr> -</tbody> -</table></div> -</li> -<li class="listitem"> -<pre class="literallayout"><a name="idp15446000-bb"></a><span class="identifier">trackable</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="trackable.html" title="Class trackable">trackable</a><span class="special">&</span> other<span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td><p>Sets the list of connected slots to empty.</p></td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td><p>Will not throw.</p></td> -</tr> -<tr> -<td><p><span class="term">Rationale:</span></p></td> -<td><p>Signal-slot connections can only be created via calls to an explicit connect method, and therefore cannot be created here when trackable objects are copied.</p></td> -</tr> -</tbody> -</table></div> -</li> -<li class="listitem"> -<pre class="literallayout">trackable& <a name="idp11425632-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="trackable.html" title="Class trackable">trackable</a><span class="special">&</span> other<span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td><p>Sets the list of connected slots to empty.</p></td> -</tr> -<tr> -<td><p><span class="term">Returns:</span></p></td> -<td><p><code class="computeroutput">*this</code></p></td> -</tr> -<tr> -<td><p><span class="term">Throws:</span></p></td> -<td><p>Will not throw.</p></td> -</tr> -<tr> -<td><p><span class="term">Rationale:</span></p></td> -<td><p>Signal-slot connections can only be created via calls to an explicit connect method, and therefore cannot be created here when trackable objects are copied.</p></td> -</tr> -</tbody> -</table></div> -</li> -<li class="listitem"> -<pre class="literallayout"><a name="idp12268880-bb"></a><span class="special">~</span><span class="identifier">trackable</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody><tr> -<td><p><span class="term">Effects:</span></p></td> -<td><p>Disconnects all signal/slot connections that - contain a pointer or reference to this trackable object that - can be found by - <a class="link" href="../visit_each.html" title="Function template visit_each">visit_each</a>.</p></td> -</tr></tbody> -</table></div> -</li> -</ol></div> -</div> -</div> -</div> -<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> -<td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<p>Use, modification and distribution is subject to the Boost - Software License, Version 1.0. (See accompanying file - <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> -</div></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="../slot.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../signals/reference.html#header.boost.signals.trackable_hpp"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="connection.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -</body> -</html> diff --git a/libs/signals/doc/html/boost/slot.html b/libs/signals/doc/html/boost/slot.html deleted file mode 100644 index 8ca5a82fe6..0000000000 --- a/libs/signals/doc/html/boost/slot.html +++ /dev/null @@ -1,84 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> -<title>Class template slot</title> -<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="up" href="../signals/reference.html#header.boost.signals.slot_hpp" title="Header <boost/signals/slot.hpp>"> -<link rel="prev" href="signal.html" title="Class template signal"> -<link rel="next" href="signals/trackable.html" title="Class trackable"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table cellpadding="2" width="100%"><tr> -<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> -<td align="center"><a href="../../../../../index.html">Home</a></td> -<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> -<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> -<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> -<td align="center"><a href="../../../../../more/index.htm">More</a></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="signal.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../signals/reference.html#header.boost.signals.slot_hpp"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="signals/trackable.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -<div class="refentry"> -<a name="boost.slot"></a><div class="titlepage"></div> -<div class="refnamediv"> -<h2><span class="refentrytitle">Class template slot</span></h2> -<p>boost::slot — Pass slots as function arguments.</p> -</div> -<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2> -<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../signals/reference.html#header.boost.signals.slot_hpp" title="Header <boost/signals/slot.hpp>">boost/signals/slot.hpp</a>> - -</span><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> SlotFunction<span class="special">></span> -<span class="keyword">class</span> <a class="link" href="slot.html" title="Class template slot">slot</a> <span class="special">{</span> -<span class="keyword">public</span><span class="special">:</span> - <span class="comment">// <a class="link" href="slot.html#boost.slotconstruct-copy-destruct">construct/copy/destruct</a></span> - <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Slot<span class="special">></span> <a class="link" href="slot.html#idp13350400-bb"><span class="identifier">slot</span></a><span class="special">(</span><span class="identifier">Slot</span><span class="special">)</span><span class="special">;</span> -<span class="special">}</span><span class="special">;</span></pre></div> -<div class="refsect1"> -<a name="idp63288992"></a><h2>Description</h2> -<div class="refsect2"> -<a name="idp63289376"></a><h3> -<a name="boost.slotconstruct-copy-destruct"></a><code class="computeroutput">slot</code> - public - construct/copy/destruct</h3> -<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"> -<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Slot<span class="special">></span> <a name="idp13350400-bb"></a><span class="identifier">slot</span><span class="special">(</span><span class="identifier">Slot</span> target<span class="special">)</span><span class="special">;</span></pre> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody><tr> -<td><p><span class="term">Effects:</span></p></td> -<td> -<p>Invokes - <code class="computeroutput"><a class="link" href="visit_each.html" title="Function template visit_each">visit_each</a></code> - (unqualified) to discover pointers and references to - <code class="computeroutput"><a class="link" href="signals/trackable.html" title="Class trackable">signals::trackable</a></code> - objects in <code class="computeroutput">target</code>.</p> -<p>Initializes <code class="computeroutput">this</code> to - contain the incoming slot - <code class="computeroutput">target</code>, which may be any - function object with which a - <code class="computeroutput">SlotFunction</code> can be - constructed.</p> -</td> -</tr></tbody> -</table></div> -</li></ol></div> -</div> -</div> -</div> -<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> -<td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<p>Use, modification and distribution is subject to the Boost - Software License, Version 1.0. (See accompanying file - <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> -</div></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="signal.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../signals/reference.html#header.boost.signals.slot_hpp"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="signals/trackable.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -</body> -</html> diff --git a/libs/signals/doc/html/boost/visit_each.html b/libs/signals/doc/html/boost/visit_each.html deleted file mode 100644 index 32f5172ec1..0000000000 --- a/libs/signals/doc/html/boost/visit_each.html +++ /dev/null @@ -1,98 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> -<title>Function template visit_each</title> -<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="up" href="../signals/reference.html#header.boost.visit_each_hpp" title="Header <boost/visit_each.hpp>"> -<link rel="prev" href="signals/scoped_connection.html" title="Class scoped_connection"> -<link rel="next" href="last_value.html" title="Class template last_value"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table cellpadding="2" width="100%"><tr> -<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> -<td align="center"><a href="../../../../../index.html">Home</a></td> -<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> -<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> -<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> -<td align="center"><a href="../../../../../more/index.htm">More</a></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="signals/scoped_connection.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../signals/reference.html#header.boost.visit_each_hpp"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="last_value.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -<div class="refentry"> -<a name="boost.visit_each"></a><div class="titlepage"></div> -<div class="refnamediv"> -<h2><span class="refentrytitle">Function template visit_each</span></h2> -<p>boost::visit_each — Allow limited exploration of class members.</p> -</div> -<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2> -<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../signals/reference.html#header.boost.visit_each_hpp" title="Header <boost/visit_each.hpp>">boost/visit_each.hpp</a>> - -</span> -<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Visitor<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span> - <span class="keyword">void</span> <span class="identifier">visit_each</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Visitor</span><span class="special">&</span> visitor<span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> t<span class="special">,</span> <span class="keyword">int</span><span class="special">)</span><span class="special">;</span></pre></div> -<div class="refsect1"> -<a name="idp63694976"></a><h2>Description</h2> -<p>The <code class="computeroutput"><a class="link" href="visit_each.html" title="Function template visit_each">visit_each</a></code> mechanism - allows a visitor to be applied to every subobject in a given - object. It is used by the Signals library to discover - <code class="computeroutput"><a class="link" href="signals/trackable.html" title="Class trackable">signals::trackable</a></code> objects within a - function object, but other uses may surface if used - universally (e.g., conservative garbage collection). To fit - within the <code class="computeroutput"><a class="link" href="visit_each.html" title="Function template visit_each">visit_each</a></code> framework, - a <code class="computeroutput"><a class="link" href="visit_each.html" title="Function template visit_each">visit_each</a></code> overload must be - supplied for each object type. </p> -<div class="variablelist"><table border="0"> -<col align="left" valign="top"> -<tbody> -<tr> -<td><p><span class="term">Effects:</span></p></td> -<td> -<p><code class="computeroutput">visitor(t)</code>, and for - every subobject <code class="computeroutput">x</code> of - <code class="computeroutput">t</code>: - </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> -<li class="listitem"><p>If <code class="computeroutput">x</code> is a reference, <code class="computeroutput">visit_each(visitor, ref(x), 0)</code></p></li> -<li class="listitem"><p>Otherwise, <code class="computeroutput">visit_each(visitor, x, 0)</code></p></li> -</ul></div> -<p> - </p> -</td> -</tr> -<tr> -<td><p><span class="term">Notes:</span></p></td> -<td> -<p>The third parameter is - <code class="computeroutput">long</code> for the fallback version - of <a class="link" href="visit_each.html" title="Function template visit_each">visit_each</a> and the argument - supplied to this third paramter must always be 0. The third - parameter is an artifact of the widespread lack of proper - function template ordering, and will be removed in the future.</p> -<p>Library authors will be expected to add additional - overloads that specialize the T argument for their classes, so - that subobjects can be visited.</p> -<p>Calls to visit_each are required to be unqualified, to - enable argument-dependent lookup.</p> -</td> -</tr> -</tbody> -</table></div> -</div> -</div> -<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> -<td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<p>Use, modification and distribution is subject to the Boost - Software License, Version 1.0. (See accompanying file - <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> -</div></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="signals/scoped_connection.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../signals/reference.html#header.boost.visit_each_hpp"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="last_value.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -</body> -</html> diff --git a/libs/signals/doc/html/doc_HTML.manifest b/libs/signals/doc/html/doc_HTML.manifest deleted file mode 100644 index dc127b8d16..0000000000 --- a/libs/signals/doc/html/doc_HTML.manifest +++ /dev/null @@ -1,16 +0,0 @@ -index.html -signals/tutorial.html -signals/reference.html -boost/signalN.html -boost/signal.html -boost/slot.html -boost/signals/trackable.html -boost/signals/connection.html -boost/signals/scoped_connection.html -boost/visit_each.html -boost/last_value.html -boost/last_value_voi_idp15355280.html -index/s04.html -index/s05.html -index/s06.html -signals/tests.html diff --git a/libs/signals/doc/html/index.html b/libs/signals/doc/html/index.html deleted file mode 100644 index c4db384271..0000000000 --- a/libs/signals/doc/html/index.html +++ /dev/null @@ -1,123 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> -<title>Chapter 1. Boost.Signals</title> -<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="index.html" title="Chapter 1. Boost.Signals"> -<link rel="next" href="signals/tutorial.html" title="Tutorial"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table cellpadding="2" width="100%"><tr> -<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td> -<td align="center"><a href="../../../../index.html">Home</a></td> -<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td> -<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> -<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> -<td align="center"><a href="../../../../more/index.htm">More</a></td> -</tr></table> -<hr> -<div class="spirit-nav"><a accesskey="n" href="signals/tutorial.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div> -<div class="chapter"> -<div class="titlepage"><div> -<div><h2 class="title"> -<a name="signals"></a>Chapter 1. Boost.Signals</h2></div> -<div><div class="author"><h3 class="author"> -<span class="firstname">Douglas</span> <span class="surname">Gregor</span> -</h3></div></div> -<div><p class="copyright">Copyright © 2001-2004 Douglas Gregor</p></div> -<div><div class="legalnotice"> -<a name="idp57782720"></a><p>Use, modification and distribution is subject to the Boost - Software License, Version 1.0. (See accompanying file - <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> -</div></div> -</div></div> -<div class="toc"> -<p><b>Table of Contents</b></p> -<dl> -<dt><span class="section"><a href="index.html#idp57785264">Introduction</a></span></dt> -<dt><span class="section"><a href="signals/tutorial.html">Tutorial</a></span></dt> -<dd><dl> -<dt><span class="section"><a href="signals/tutorial.html#idp61506304">How to Read this Tutorial</a></span></dt> -<dt><span class="section"><a href="signals/tutorial.html#idp57660384">Compatibility Note</a></span></dt> -<dt><span class="section"><a href="signals/tutorial.html#idp57674496">Hello, World! (Beginner)</a></span></dt> -<dt><span class="section"><a href="signals/tutorial.html#idp62590288">Calling multiple slots</a></span></dt> -<dt><span class="section"><a href="signals/tutorial.html#idp62631760">Passing values to and from slots</a></span></dt> -<dt><span class="section"><a href="signals/tutorial.html#idp62726080">Connection Management</a></span></dt> -<dt><span class="section"><a href="signals/tutorial.html#idp62804320">Example: Document-View</a></span></dt> -<dt><span class="section"><a href="signals/tutorial.html#idp62818608">Linking against the Signals library</a></span></dt> -</dl></dd> -<dt><span class="section"><a href="signals/reference.html">Reference</a></span></dt> -<dd><dl> -<dt><span class="section"><a href="signals/reference.html#header.boost.signal_hpp">Header <boost/signal.hpp></a></span></dt> -<dt><span class="section"><a href="signals/reference.html#header.boost.signals.slot_hpp">Header <boost/signals/slot.hpp></a></span></dt> -<dt><span class="section"><a href="signals/reference.html#header.boost.signals.trackable_hpp">Header <boost/signals/trackable.hpp></a></span></dt> -<dt><span class="section"><a href="signals/reference.html#header.boost.signals.connection_hpp">Header <boost/signals/connection.hpp></a></span></dt> -<dt><span class="section"><a href="signals/reference.html#header.boost.visit_each_hpp">Header <boost/visit_each.hpp></a></span></dt> -<dt><span class="section"><a href="signals/reference.html#header.boost.last_value_hpp">Header <boost/last_value.hpp></a></span></dt> -</dl></dd> -<dt><span class="section"><a href="index/s04.html">Frequently Asked Questions</a></span></dt> -<dt><span class="section"><a href="index/s05.html">Design Overview</a></span></dt> -<dd><dl> -<dt><span class="section"><a href="index/s05.html#idp63842256">Type Erasure</a></span></dt> -<dt><span class="section"><a href="index/s05.html#idp63850064"><code class="computeroutput">connection</code> class</a></span></dt> -<dt><span class="section"><a href="index/s05.html#idp63864912">Slot Call Iterator</a></span></dt> -<dt><span class="section"><a href="index/s05.html#idp63886304"><code class="computeroutput">visit_each</code> function template</a></span></dt> -</dl></dd> -<dt><span class="section"><a href="index/s06.html">Design Rationale</a></span></dt> -<dd><dl> -<dt><span class="section"><a href="index/s06.html#idp63905584">Choice of Slot Definitions</a></span></dt> -<dt><span class="section"><a href="index/s06.html#idp63915360">User-level Connection Management</a></span></dt> -<dt><span class="section"><a href="index/s06.html#idp63934768">Combiner Interface</a></span></dt> -<dt><span class="section"><a href="index/s06.html#idp63950240">Connection Interfaces: += operator</a></span></dt> -<dt><span class="section"><a href="index/s06.html#idp63971904"><code class="computeroutput">trackable</code> rationale</a></span></dt> -<dt><span class="section"><a href="index/s06.html#idp63993760">Comparison with other Signal/Slot implementations</a></span></dt> -</dl></dd> -<dt><span class="section"><a href="signals/tests.html">Testsuite</a></span></dt> -<dd><dl><dt><span class="section"><a href="signals/tests.html#idp64008752">Acceptance tests</a></span></dt></dl></dd> -</dl> -</div> -<div class="section"> -<div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="idp57785264"></a>Introduction</h2></div></div></div> -<div class="note"><table border="0" summary="Note"> -<tr> -<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../doc/src/images/note.png"></td> -<th align="left">Note</th> -</tr> -<tr><td align="left" valign="top"><p><span class="bold"><strong>Boost.Signals is no longer being actively maintained.</strong></span> -Do not use Boost.Signals for new development (use -<a class="link" href="">Boost.Signals2</a> -instead). If you have existing Boost.Signals-based code, it will -continue to work, but consider moving to Boost.Signals2. There is -<a class="link" href=""> -a porting guide</a> in the Signals2 documentation.</p></td></tr> -</table></div> -<p>The Boost.Signals library is an implementation of a managed -signals and slots system. Signals represent callbacks with multiple -targets, and are also called publishers or events in similar -systems. Signals are connected to some set of slots, which are -callback receivers (also called event targets or subscribers), which -are called when the signal is "emitted."</p> -<p>Signals and slots are managed, in that signals and slots (or, -more properly, objects that occur as part of the slots) track all -connections and are capable of automatically disconnecting signal/slot -connections when either is destroyed. This enables the user to make -signal/slot connections without expending a great effort to manage the -lifetimes of those connections with regard to the lifetimes of all -objects involved.</p> -<p>When signals are connected to multiple slots, there is a -question regarding the relationship between the return values of the -slots and the return value of the signals. Boost.Signals allows the -user to specify the manner in which multiple return values are -combined.</p> -</div> -</div> -<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> -<td align="left"></td> -<td align="right"><div class="copyright-footer"></div></td> -</tr></table> -<hr> -<div class="spirit-nav"><a accesskey="n" href="signals/tutorial.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div> -</body> -</html> diff --git a/libs/signals/doc/html/index/s04.html b/libs/signals/doc/html/index/s04.html deleted file mode 100644 index 91d15903cd..0000000000 --- a/libs/signals/doc/html/index/s04.html +++ /dev/null @@ -1,189 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> -<title>Frequently Asked Questions</title> -<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="up" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="prev" href="../boost/last_value_voi_idp15355280.html" title="Class last_value<void>"> -<link rel="next" href="s05.html" title="Design Overview"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table cellpadding="2" width="100%"><tr> -<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> -<td align="center"><a href="../../../../../index.html">Home</a></td> -<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> -<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> -<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> -<td align="center"><a href="../../../../../more/index.htm">More</a></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="../boost/last_value_voi_idp15355280.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s05.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -<div class="section"> -<div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="idp63812912"></a>Frequently Asked Questions</h2></div></div></div> -<div class="qandaset"> -<a name="idp63813936"></a><dl> -<dt>1. <a href="s04.html#idp63814192">Is Boost.Signals being actively maintained?</a> -</dt> -<dt>2. <a href="s04.html#idp63817616">Don't noncopyable signal semantics mean that a class - with a signal member will be noncopyable as well?</a> -</dt> -<dt>3. <a href="s04.html#idp63819968">Is Boost.Signals thread-safe?</a> -</dt> -<dt>4. <a href="s04.html#idp63822176">How do I get Boost.Signals to work with Qt?</a> -</dt> -</dl> -<table border="0" width="100%" summary="Q and A Set"> -<col align="left" width="1%"> -<col> -<tbody> -<tr class="question"> -<td align="left" valign="top"> -<a name="idp63814192"></a><a name="idp63814448"></a><p><b>1.</b></p> -</td> -<td align="left" valign="top"><p>Is Boost.Signals being actively maintained?</p></td> -</tr> -<tr class="answer"> -<td align="left" valign="top"></td> -<td align="left" valign="top"><p>No. Please migrate to <a href="http://www.boost.org/doc/html/signals2.html" target="_top">Boost.Signals2</a>. - There is a - <a href="http://www.boost.org/doc/html/signals2/api_changes.html#signals2.porting" target="_top">porting guide</a> - in the Signals2 documentation.</p></td> -</tr> -<tr class="question"> -<td align="left" valign="top"> -<a name="idp63817616"></a><a name="idp63817872"></a><p><b>2.</b></p> -</td> -<td align="left" valign="top"><p>Don't noncopyable signal semantics mean that a class - with a signal member will be noncopyable as well?</p></td> -</tr> -<tr class="answer"> -<td align="left" valign="top"></td> -<td align="left" valign="top"><p>No. The compiler will not be able to generate a copy - constructor or copy assignment operator for your class if it - has a signal as a member, but you are free to write your own - copy constructor and/or copy assignment operator. Just don't - try to copy the signal.</p></td> -</tr> -<tr class="question"> -<td align="left" valign="top"> -<a name="idp63819968"></a><a name="idp63820224"></a><p><b>3.</b></p> -</td> -<td align="left" valign="top"><p>Is Boost.Signals thread-safe?</p></td> -</tr> -<tr class="answer"> -<td align="left" valign="top"></td> -<td align="left" valign="top"><p>No. Using Boost.Signals in a multithreaded concept is - very dangerous, and it is very likely that the results will be - less than satisfying. Boost.Signals will support thread safety - in the future.</p></td> -</tr> -<tr class="question"> -<td align="left" valign="top"> -<a name="idp63822176"></a><a name="idp63822432"></a><p><b>4.</b></p> -</td> -<td align="left" valign="top"><p>How do I get Boost.Signals to work with Qt?</p></td> -</tr> -<tr class="answer"> -<td align="left" valign="top"></td> -<td align="left" valign="top"> -<p>When building with Qt, the Moc keywords - <code class="computeroutput">signals</code> and <code class="computeroutput">slots</code> are defined using - preprocessor macros, causing programs using Boost.Signals and - Qt together to fail to compile.</p> -<p><span class="emphasis"><em>For Qt 4.1 and later</em></span>, This behavior - can be turned off in Qt on a per-project or per-file basis - with the <code class="computeroutput">no_keywords</code> option. This works with - out-of-the-box builds of Boost and Qt. You do not need to - re-configure, re-build, or duplicate existing libraries. For a - project where you want to use both Boost.Signals and Qt - Signals and Slots, the relevant part of your .pro file might - look like this:</p> -<pre class="programlisting"> -CONFIG += no_keywords # so Qt won't #define any non-all-caps `keywords' -INCLUDEPATH += . /usr/local/include/boost-1_33_1/ -macx:LIBS += /usr/local/lib/libboost_signals-1_33_1.a # ...your exact paths may vary -</pre> -<p>Now you can mix Boost.Signals and Qt Signals and Slots - in the same files, and even within the same class or function. - You will have to use the upper-case versions of Qt macros in - your own code. See the article <a href="http://scottcollins.net/articles/a-deeper-look-at-signals-and-slots.html" target="_top">A - Deeper Look at Signals and Slots</a> [off-site] for more - complete examples and a survey of the strengths of the two - systems.</p> -<p><span class="emphasis"><em>Older versions of Qt</em></span> did not - provide a reliable mechanism for avoiding these unfriendly, - all lower-case `keyword'-like macros. Although this is a - problem with Qt and not Boost.Signals, a user can use the two - systems together with a little extra effort. There are two - ways to do this:</p> -<p>The first way involves defining - the <code class="computeroutput">BOOST_SIGNALS_NAMESPACE</code> - macro to some other identifier (e.g., <code class="computeroutput">signalslib</code>) - when building and using the Boost.Signals library. Then the - namespace of the Boost.Signals library will be - <code class="computeroutput">boost::BOOST_SIGNALS_NAMESPACE</code> instead of - <code class="computeroutput">boost::signals</code>. To retain the original namespace - name in translation units that do not interact with Qt, you - can use a namespace alias:</p> -<pre class="programlisting"> - namespace boost { - namespace signals = BOOST_SIGNALS_NAMESPACE; - } -</pre> -<p>The second way, provided by Frank Hess and improved by - Niels Dekker, involves - creating a header <code class="computeroutput">signalslib.hpp</code> that contains - the following code:</p> -<pre class="programlisting">#ifndef SIGNALSLIB_HPP_INCLUDED -#define SIGNALSLIB_HPP_INCLUDED - -#if defined(signals) && defined(QOBJECTDEFS_H) && \ - !defined(QT_MOC_CPP) -# undef signals -# define signals signals -#endif - -#include <boost/signal.hpp> -namespace boost -{ - namespace signalslib = signals; -} - -#if defined(signals) && defined(QOBJECTDEFS_H) && \ - !defined(QT_MOC_CPP) -# undef signals -// Restore the macro definition of "signals", as it was -// defined by Qt's <qobjectdefs.h>. -# define signals protected -#endif - -#endif</pre> -<p>Use this header to include the Boost library, then refer - to it in the namespace <code class="computeroutput">boost::signalslib</code>. This - option is often - preferable to the first option because it can be used without - recompiling the Signals library binary. </p> -</td> -</tr> -</tbody> -</table> -</div> -</div> -<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> -<td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<p>Use, modification and distribution is subject to the Boost - Software License, Version 1.0. (See accompanying file - <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> -</div></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="../boost/last_value_voi_idp15355280.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s05.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -</body> -</html> diff --git a/libs/signals/doc/html/index/s05.html b/libs/signals/doc/html/index/s05.html deleted file mode 100644 index 91b0842c03..0000000000 --- a/libs/signals/doc/html/index/s05.html +++ /dev/null @@ -1,212 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> -<title>Design Overview</title> -<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="up" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="prev" href="s04.html" title="Frequently Asked Questions"> -<link rel="next" href="s06.html" title="Design Rationale"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table cellpadding="2" width="100%"><tr> -<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> -<td align="center"><a href="../../../../../index.html">Home</a></td> -<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> -<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> -<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> -<td align="center"><a href="../../../../../more/index.htm">More</a></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="s04.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s06.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -<div class="section"> -<div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="idp63841280"></a>Design Overview</h2></div></div></div> -<div class="toc"><dl> -<dt><span class="section"><a href="s05.html#idp63842256">Type Erasure</a></span></dt> -<dt><span class="section"><a href="s05.html#idp63850064"><code class="computeroutput">connection</code> class</a></span></dt> -<dt><span class="section"><a href="s05.html#idp63864912">Slot Call Iterator</a></span></dt> -<dt><span class="section"><a href="s05.html#idp63886304"><code class="computeroutput">visit_each</code> function template</a></span></dt> -</dl></div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp63842256"></a>Type Erasure</h3></div></div></div> -<p>"Type erasure", where static type information is eliminated - by the use of dynamically dispatched interfaces, is used - extensively within the Boost.Signals library to reduce the amount - of code generated by template instantiation. Each signal must - manage a list of slots and their associated connections, along - with a <code class="computeroutput">std::map</code> to map from group identifiers to - their associated connections. However, instantiating this map for - every token type, and perhaps within each translation unit (for - some popular template instantiation strategies) increase compile - time overhead and space overhead.</p> -<p> To combat this so-called "template bloat", we use - Boost.Function and Boost.Any to store unknown types and - operations. Then, all of the code for handling the list of slots - and the mapping from slot identifiers to connections is factored - into the class <code class="computeroutput">signal_base</code> - that deals exclusively with the <code class="computeroutput">any</code> and - <code class="computeroutput">function</code> objects, hiding the - actual implementations using the well-known pimpl idiom. The - actual <code class="computeroutput"><a class="link" href="../boost/signalN.html" title="Class template signalN">signalN</a></code> class templates - deal only with code that will change depending on the number of - arguments or which is inherently template-dependent (such as - connection).</p> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp63850064"></a><code class="computeroutput">connection</code> class</h3></div></div></div> -<p> The <code class="computeroutput"><a class="link" href="../boost/signals/connection.html" title="Class connection">connection</a></code> class is - central to the behavior of the Boost.Signals library. It is the - only entity within the Boost.Signals system that has knowledge of - all objects that are associated by a given connection. To be - specific, the <code class="computeroutput"><a class="link" href="../boost/signals/connection.html" title="Class connection">connection</a></code> class - itself is merely a thin wrapper over a - <code class="computeroutput">shared_ptr</code> to a - <code class="computeroutput">basic_connection</code> object.</p> -<p> <code class="computeroutput"><a class="link" href="../boost/signals/connection.html" title="Class connection">connection</a></code> objects are - stored by all participants in the Signals system: each - <code class="computeroutput"><a class="link" href="../boost/signals/trackable.html" title="Class trackable">trackable</a></code> object contains a - list of <code class="computeroutput"><a class="link" href="../boost/signals/connection.html" title="Class connection">connection</a></code> objects - describing all connections it is a part of; similarly, all signals - contain a set of pairs that define a slot. The pairs consist of a - slot function object (generally a Boost.Function object) and a - <code class="computeroutput"><a class="link" href="../boost/signals/connection.html" title="Class connection">connection</a></code> object (that will - disconnect on destruction). Finally, the mapping from slot groups - to slots is based on the key value in a - <code class="computeroutput">std::multimap</code> (the stored data - in the <code class="computeroutput">std::multimap</code> is the - slot pair).</p> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp63864912"></a>Slot Call Iterator</h3></div></div></div> -<p> The slot call iterator is conceptually a stack of iterator - adaptors that modify the behavior of the underlying iterator - through the list of slots. The following table describes the type - and behavior of each iterator adaptor required. Note that this is - only a conceptual model: the implementation collapses all these - layers into a single iterator adaptor because several popular - compilers failed to compile the implementation of the conceptual - model.</p> -<div class="informaltable"><table class="table"> -<colgroup> -<col> -<col> -</colgroup> -<thead><tr> -<th align="left">Iterator Adaptor</th> -<th align="left">Purpose</th> -</tr></thead> -<tbody> -<tr> -<td align="left"><p>Slot List Iterator</p></td> -<td align="left"><p>An iterator through the list of slots - connected to a signal. The <code class="computeroutput">value_type</code> of this - iterator will be - <code class="computeroutput">std::pair<any, - connection></code>, where the - <code class="computeroutput">any</code> contains an - instance of the slot function type.</p></td> -</tr> -<tr> -<td align="left"><p>Filter Iterator Adaptor</p></td> -<td align="left"><p>This filtering iterator adaptor filters out - slots that have been disconnected, so we never see a - disconnected slot in later stages.</p></td> -</tr> -<tr> -<td align="left"><p>Projection Iterator Adaptor</p></td> -<td align="left"><p>The projection iterator adaptor returns a - reference to the first member of the pair that constitutes - a connected slot (e.g., just the - <code class="computeroutput">boost::any</code> object that - holds the slot function).</p></td> -</tr> -<tr> -<td align="left"><p>Transform Iterator Adaptor</p></td> -<td align="left"><p>This transform iterator adaptor performs an - <code class="computeroutput">any_cast</code> to - extract a reference to the slot function with the - appropriate slot function type.</p></td> -</tr> -<tr> -<td align="left"><p>Transform Iterator Adaptor</p></td> -<td align="left"><p>This transform iterator adaptor calls the - function object returned by dereferencing the underlying - iterator with the set of arguments given to the signal - itself, and returns the result of that slot - call.</p></td> -</tr> -<tr> -<td align="left"><p>Input Caching Iterator Adaptor</p></td> -<td align="left"><p>This iterator adaptor caches the result of - dereferencing the underlying iterator. Therefore, - dereferencing this iterator multiple times will only - result in the underlying iterator being dereferenced once; - thus, a slot can only be called once but its result can be - used multiple times.</p></td> -</tr> -<tr> -<td align="left"><p>Slot Call Iterator</p></td> -<td align="left"><p>Iterates over calls to each slot.</p></td> -</tr> -</tbody> -</table></div> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp63886304"></a><code class="computeroutput">visit_each</code> function template</h3></div></div></div> -<p> The <code class="computeroutput"><a class="link" href="../boost/visit_each.html" title="Function template visit_each">visit_each</a></code> - function template is a mechanism for discovering objects that are - stored within another object. Function template - <code class="computeroutput"><a class="link" href="../boost/visit_each.html" title="Function template visit_each">visit_each</a></code> takes three - arguments: an object to explore, a visitor function object that is - invoked with each subobject, and the <code class="computeroutput">int</code> 0. </p> -<p> The third parameter is merely a temporary solution to the - widespread lack of proper function template partial ordering. The - primary <code class="computeroutput"><a class="link" href="../boost/visit_each.html" title="Function template visit_each">visit_each</a></code> - function template specifies this third parameter type to be - <code class="computeroutput">long</code>, whereas any user specializations must specify - their third parameter to be of type <code class="computeroutput">int</code>. Thus, even - though a broken compiler cannot tell the ordering between, e.g., a - match against a parameter <code class="computeroutput">T</code> and a parameter - <code class="computeroutput">A<T></code>, it can determine that the conversion from - the integer 0 to <code class="computeroutput">int</code> is better than the conversion to - <code class="computeroutput">long</code>. The ordering determined by this conversion thus - achieves partial ordering of the function templates in a limited, - but successful, way. The following example illustrates the use of - this technique:</p> -<pre class="programlisting"> -template<typename> class A {}; -template<typename T> void foo(T, long); -template<typename T> void foo(A<T>, int); -A<T> at; -foo(at, 0); -</pre> -<p> In this example, we assume that our compiler can not tell - that <code class="computeroutput">A<T></code> is a better match than - <code class="computeroutput">T</code>, and therefore assume that the function templates - cannot be ordered based on that parameter. Then the conversion - from 0 to <code class="computeroutput">int</code> is better than the conversion from 0 to - <code class="computeroutput">long</code>, and the second function template is - chosen. </p> -</div> -</div> -<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> -<td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<p>Use, modification and distribution is subject to the Boost - Software License, Version 1.0. (See accompanying file - <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> -</div></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="s04.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="s06.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -</body> -</html> diff --git a/libs/signals/doc/html/index/s06.html b/libs/signals/doc/html/index/s06.html deleted file mode 100644 index 60169ca3bd..0000000000 --- a/libs/signals/doc/html/index/s06.html +++ /dev/null @@ -1,436 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> -<title>Design Rationale</title> -<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="up" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="prev" href="s05.html" title="Design Overview"> -<link rel="next" href="../signals/tests.html" title="Testsuite"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table cellpadding="2" width="100%"><tr> -<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> -<td align="center"><a href="../../../../../index.html">Home</a></td> -<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> -<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> -<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> -<td align="center"><a href="../../../../../more/index.htm">More</a></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="s05.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../signals/tests.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -<div class="section"> -<div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="idp63904640"></a>Design Rationale</h2></div></div></div> -<div class="toc"><dl> -<dt><span class="section"><a href="s06.html#idp63905584">Choice of Slot Definitions</a></span></dt> -<dt><span class="section"><a href="s06.html#idp63915360">User-level Connection Management</a></span></dt> -<dt><span class="section"><a href="s06.html#idp63934768">Combiner Interface</a></span></dt> -<dt><span class="section"><a href="s06.html#idp63950240">Connection Interfaces: += operator</a></span></dt> -<dt><span class="section"><a href="s06.html#idp63971904"><code class="computeroutput">trackable</code> rationale</a></span></dt> -<dt><span class="section"><a href="s06.html#idp63993760">Comparison with other Signal/Slot implementations</a></span></dt> -</dl></div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp63905584"></a>Choice of Slot Definitions</h3></div></div></div> -<p> The definition of a slot differs amongst signals and slots - libraries. Within Boost.Signals, a slot is defined in a very loose - manner: it can be any function object that is callable given - parameters of the types specified by the signal, and whose return - value is convertible to the result type expected by the - signal. However, alternative definitions have associated pros and - cons that were considered prior to the construction of - Boost.Signals.</p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> -<li class="listitem"> -<p><span class="bold"><strong>Slots derive from a specific base - class</strong></span>: generally a scheme such as this will require - all user-defined slots to derive from some library-specified - <code class="computeroutput">Slot</code> abstract class that defines a virtual - function calling the slot. Adaptors can be used to convert a - definition such as this to a definition similar to that used - by Boost.Signals, but the use of a large number of small - adaptor classes containing virtual functions has been found to - cause an unacceptable increase in the size of executables - (polymorphic class types require more code than - non-polymorphic types).</p> -<p> This approach does have the benefit of simplicity of - implementation and user interface, from an object-oriented - perspective.</p> -</li> -<li class="listitem"><p><span class="bold"><strong>Slots constructed from a set of - primitives</strong></span>: in this scheme the slot can have a - limited set of types (often derived from a common abstract - base class) that are constructed from some library-defined set - of primitives that often include conversions from free - function pointers and member function pointers, and a limited - set of binding capabilities. Such an approach is reasonably - simple and cover most common cases, but it does not allow a - large degree of flexibility in slot construction. Libraries - for function object composition have become quite advanced and - it is out of the scope of a signals and slots library to - encorporate such enhancements. Thus Boost.Signals does not - include argument binding or function object composition - primitives, but instead provides a hook (via the - <code class="computeroutput"><a class="link" href="../boost/visit_each.html" title="Function template visit_each">visit_each</a></code> - mechanism) that allows existing binder/composition libraries - to provide the necessary information to Signals.</p></li> -</ul></div> -<p> Users not satisfied with the slot definition choice may opt - to replace the default slot function type with an alternative that - meets their specific needs.</p> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp63915360"></a>User-level Connection Management</h3></div></div></div> -<p> Users need to have fine control over the connection of - signals to slots and their eventual disconnection. The approach - taken by Boost.Signals is to return a - <code class="computeroutput"><a class="link" href="../boost/signals/connection.html" title="Class connection">connection</a></code> object that enables - connected/disconnected query, manual disconnection, and an - automatic disconnection on destruction mode. Some other possible - interfaces include:</p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> -<li class="listitem"><p><span class="bold"><strong>Pass slot to - disconnect</strong></span>: in this interface model, the - disconnection of a slot connected with - <code class="computeroutput">sig.<a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a>(slot)</code> is - performed via - <code class="computeroutput">sig.<a class="link" href="../boost/signalN.html#idp5262448-bb">disconnect</a>(slot)</code>. Internally, - a linear search using slot comparison is performed and the - slot, if found, is removed from the list. Unfortunately, - querying connectedness will generally also end up as - linear-time operations. This model also fails for - implementation reasons when slots become more complex than - simple function pointers, member function pointers and a - limited set of compositions and argument binders: to match the - slot given in the call to - <code class="computeroutput"><a class="link" href="../boost/signalN.html#idp5262448-bb">disconnect</a></code> with an - existing slot we would need to be able to compare arbitrary - function objects, which is not feasible.</p></li> -<li class="listitem"> -<p><span class="bold"><strong>Pass a token to - disconnect</strong></span>: this approach identifies slots with a - token that is easily comparable (e.g., a string), enabling - slots to be arbitrary function objects. While this approach is - essentially equivalent to the approach taken by Boost.Signals, - it is possibly more error-prone for several reasons:</p> -<div class="itemizedlist"><ul class="itemizedlist" type="circle"> -<li class="listitem"><p>Connections and disconnections must be paired, so - the problem becomes similar to the problems incurred when - pairing <code class="computeroutput">new</code> and <code class="computeroutput">delete</code> for - dynamic memory allocation. While errors of this sort would - not be catastrophic for a signals and slots - implementation, their detection is generally - nontrivial.</p></li> -<li class="listitem"><p>Tokens must be unique, otherwise two slots will have - the same name and will be indistinguishable. In - environments where many connections will be made - dynamically, name generation becomes an additional task - for the user. Uniqueness of tokens also results in an - additional failure mode when attempting to connect a slot - using a token that has already been used.</p></li> -<li class="listitem"><p>More parameterization would be required, because the - token type must be user-defined. Additional - parameterization steepens the learning curver and - overcomplicates a simple interface.</p></li> -</ul></div> -<p> This type of interface is supported in Boost.Signals - via the slot grouping mechanism. It augments the - <code class="computeroutput"><a class="link" href="../boost/signals/connection.html" title="Class connection">connection</a></code> object-based - connection management scheme.</p> -</li> -</ul></div> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp63934768"></a>Combiner Interface</h3></div></div></div> -<p> The Combiner interface was chosen to mimic a call to an - algorithm in the C++ standard library. It is felt that by viewing - slot call results as merely a sequence of values accessed by input - iterators, the combiner interface would be most natural to a - proficient C++ programmer. Competing interface design generally - required the combiners to be constructed to conform to an - interface that would be customized for (and limited to) the - Signals library. While these interfaces are generally enable more - straighforward implementation of the signals & slots - libraries, the combiners are unfortunately not reusable (either in - other signals & slots libraries or within other generic - algorithms), and the learning curve is steepened slightly to learn - the specific combiner interface.</p> -<p> The Signals formulation of combiners is based on the - combiner using the "pull" mode of communication, instead of the - more complex "push" mechanism. With a "pull" mechanism, the - combiner's state can be kept on the stack and in the program - counter, because whenever new data is required (i.e., calling the - next slot to retrieve its return value), there is a simple - interface to retrieve that data immediately and without returning - from the combiner's code. Contrast this with the "push" mechanism, - where the combiner must keep all state in class members because - the combiner's routines will be invoked for each signal - called. Compare, for example, a combiner that returns the maximum - element from calling the slots. If the maximum element ever - exceeds 100, no more slots are to be called.</p> -<div class="informaltable"><table class="table"> -<colgroup> -<col> -<col> -</colgroup> -<thead><tr> -<th align="left"><p>Pull</p></th> -<th align="left"><p>Push</p></th> -</tr></thead> -<tbody><tr> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -struct pull_max { - typedef int result_type; - - template<typename InputIterator> - result_type operator()(InputIterator first, - InputIterator last) - { - if (first == last) - throw std::runtime_error("Empty!"); - - int max_value = *first++; - while(first != last && *first <= 100) { - if (*first > max_value) - max_value = *first; - ++first; - } - - return max_value; - } -}; -</pre> -</td> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -struct push_max { - typedef int result_type; - - push_max() : max_value(), got_first(false) {} - - // returns false when we want to stop - bool operator()(int result) { - if (result > 100) - return false; - - if (!got_first) { - got_first = true; - max_value = result; - return true; - } - - if (result > max_value) - max_value = result; - - return true; - } - - int get_value() const - { - if (!got_first) - throw std::runtime_error("Empty!"); - return max_value; - } - -private: - int max_value; - bool got_first; -}; -</pre> -</td> -</tr></tbody> -</table></div> -<p>There are several points to note in these examples. The - "pull" version is a reusable function object that is based on an - input iterator sequence with an integer <code class="computeroutput">value_type</code>, - and is very straightforward in design. The "push" model, on the - other hand, relies on an interface specific to the caller and is - not generally reusable. It also requires extra state values to - determine, for instance, if any elements have been - received. Though code quality and ease-of-use is generally - subjective, the "pull" model is clearly shorter and more reusable - and will often be construed as easier to write and understand, - even outside the context of a signals & slots library.</p> -<p> The cost of the "pull" combiner interface is paid in the - implementation of the Signals library itself. To correctly handle - slot disconnections during calls (e.g., when the dereference - operator is invoked), one must construct the iterator to skip over - disconnected slots. Additionally, the iterator must carry with it - the set of arguments to pass to each slot (although a reference to - a structure containing those arguments suffices), and must cache - the result of calling the slot so that multiple dereferences don't - result in multiple calls. This apparently requires a large degree - of overhead, though if one considers the entire process of - invoking slots one sees that the overhead is nearly equivalent to - that in the "push" model, but we have inverted the control - structures to make iteration and dereference complex (instead of - making combiner state-finding complex).</p> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp63950240"></a>Connection Interfaces: += operator</h3></div></div></div> -<p> Boost.Signals supports a connection syntax with the form - <code class="computeroutput">sig.<a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a>(slot)</code>, but a - more terse syntax <code class="computeroutput">sig += slot</code> has been suggested (and - has been used by other signals & slots implementations). There - are several reasons as to why this syntax has been - rejected:</p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> -<li class="listitem"><p><span class="bold"><strong>It's unnecessary</strong></span>: the - connection syntax supplied by Boost.Signals is no less - powerful that that supplied by the <code class="computeroutput">+=</code> - operator. The savings in typing (<code class="computeroutput">connect()</code> - vs. <code class="computeroutput">+=</code>) is essentially negligible. Furthermore, - one could argue that calling <code class="computeroutput">connect()</code> is more - readable than an overload of <code class="computeroutput">+=</code>.</p></li> -<li class="listitem"><p><span class="bold"><strong>Ambiguous return type</strong></span>: - there is an ambiguity concerning the return value of the - <code class="computeroutput">+=</code> operation: should it be a reference to the - signal itself, to enable <code class="computeroutput">sig += slot1 += slot2</code>, - or should it return a - <code class="computeroutput"><a class="link" href="../boost/signals/connection.html" title="Class connection">connection</a></code> for the - newly-created signal/slot connection?</p></li> -<li class="listitem"> -<p><span class="bold"><strong>Gateway to operators -=, - +</strong></span>: when one has added a connection operator - <code class="computeroutput">+=</code>, it seems natural to have a disconnection - operator <code class="computeroutput">-=</code>. However, this presents problems when - the library allows arbitrary function objects to implicitly - become slots, because slots are no longer comparable. </p> -<p> The second obvious addition when one has - <code class="computeroutput">operator+=</code> would be to add a <code class="computeroutput">+</code> - operator that supports addition of multiple slots, followed by - assignment to a signal. However, this would require - implementing <code class="computeroutput">+</code> such that it can accept any two - function objects, which is technically infeasible.</p> -</li> -</ul></div> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp63971904"></a><code class="computeroutput">trackable</code> rationale</h3></div></div></div> -<div class="toc"><dl> -<dt><span class="section"><a href="s06.html#idp63976976"><code class="computeroutput">trackable</code> copying behavior</a></span></dt> -<dt><span class="section"><a href="s06.html#idp63983808">Why derivation from <code class="computeroutput">trackable</code>?</a></span></dt> -</dl></div> -<p> The <code class="computeroutput"><a class="link" href="../boost/signals/trackable.html" title="Class trackable">trackable</a></code> - class is the primary user interface to automatic connection - lifetime management, and its design affects users directly. Two - issues stick out most: the odd copying behavior of - <code class="computeroutput">trackable</code>, and the limitation requiring users to - derive from <code class="computeroutput">trackable</code> to create types that can - participate in automatic connection management.</p> -<div class="section"> -<div class="titlepage"><div><div><h4 class="title"> -<a name="idp63976976"></a><code class="computeroutput">trackable</code> copying behavior</h4></div></div></div> -<p> The copying behavior of - <code class="computeroutput"><a class="link" href="../boost/signals/trackable.html" title="Class trackable">trackable</a></code> is essentially - that <code class="computeroutput"><a class="link" href="../boost/signals/trackable.html" title="Class trackable">trackable</a></code> subobjects - are never copied; instead, the copy operation is merely a - no-op. To understand this, we look at the nature of a - signal-slot connection and note that the connection is based on - the entities that are being connected; when one of the entities - is destroyed, the connection is destroyed. Therefore, when a - <code class="computeroutput"><a class="link" href="../boost/signals/trackable.html" title="Class trackable">trackable</a></code> subobject is - copied, we cannot copy the connections because the connections - don't refer to the target entity - they refer to the source - entity. This reason is dual to the reason signals are - noncopyable: the slots connected to them are connected to that - particular signal, not the data contained in the signal.</p> -</div> -<div class="section"> -<div class="titlepage"><div><div><h4 class="title"> -<a name="idp63983808"></a>Why derivation from <code class="computeroutput">trackable</code>?</h4></div></div></div> -<p> For <code class="computeroutput"><a class="link" href="../boost/signals/trackable.html" title="Class trackable">trackable</a></code> to work - properly, there are two constraints:</p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> -<li class="listitem"><p><code class="computeroutput"><a class="link" href="../boost/signals/trackable.html" title="Class trackable">trackable</a></code> must - have storage space to keep track of all connections made to - this object.</p></li> -<li class="listitem"><p><code class="computeroutput"><a class="link" href="../boost/signals/trackable.html" title="Class trackable">trackable</a></code> must be - notified when the object is being destructed so that it can - disconnect its connections.</p></li> -</ul></div> -<p>Clearly, deriving from - <code class="computeroutput"><a class="link" href="../boost/signals/trackable.html" title="Class trackable">trackable</a></code> meets these two - guidelines. We have not yet found a superior solution.</p> -</div> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp63993760"></a>Comparison with other Signal/Slot implementations</h3></div></div></div> -<div class="toc"><dl> -<dt><span class="section"><a href="s06.html#idp63994464">libsigc++</a></span></dt> -<dt><span class="section"><a href="s06.html#idp64001760">.NET delegates</a></span></dt> -</dl></div> -<div class="section"> -<div class="titlepage"><div><div><h4 class="title"> -<a name="idp63994464"></a>libsigc++</h4></div></div></div> -<p> <a href="http://libsigc.sourceforge.net" target="_top">libsigc++</a> is a C++ - signals & slots library that originally started as part of - an initiative to wrap the C interfaces to <a href="http://www.gtk.org" target="_top">GTK</a> libraries in C++, and has - grown to be a separate library maintained by Karl Nelson. There - are many similarities between libsigc++ and Boost.Signals, and - indeed Boost.Signals was strongly influenced by Karl Nelson and - libsigc++. A cursory inspection of each library will find a - similar syntax for the construction of signals and in the use of - connections and automatic connection lifetime management. There - are some major differences in design that separate these - libraries:</p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> -<li class="listitem"><p><span class="bold"><strong>Slot definitions</strong></span>: - slots in libsigc++ are created using a set of primitives - defined by the library. These primitives allow binding of - objects (as part of the library), explicit adaptation from - the argument and return types of the signal to the argument - and return types of the slot (libsigc++ is, by default, more - strict about types than Boost.Signals). A discussion of this - approach with a comparison against the approach taken by - Boost.Signals is given in Choice of Slot Definitions.</p></li> -<li class="listitem"><p><span class="bold"><strong>Combiner/Marshaller - interface</strong></span>: the equivalent to Boost.Signals - combiners in libsigc++ are the marshallers. Marshallers are - similar to the "push" interface described in Combiner - Interface, and a proper treatment of the topic is given - there.</p></li> -</ul></div> -</div> -<div class="section"> -<div class="titlepage"><div><div><h4 class="title"> -<a name="idp64001760"></a>.NET delegates</h4></div></div></div> -<p> <a href="http://www.microsoft.com" target="_top">Microsoft</a> - has introduced the .NET Framework and an associated set of - languages and language extensions, one of which is the - delegate. Delegates are similar to signals and slots, but they - are more limited than most C++ signals and slots implementations - in that they:</p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> -<li class="listitem"><p>Require exact type matches between a delegate and what - it is calling.</p></li> -<li class="listitem"><p>Only return the result of the last target called, with no option for customization.</p></li> -<li class="listitem"><p>Must call a method with <code class="computeroutput">this</code> already - bound.</p></li> -</ul></div> -</div> -</div> -</div> -<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> -<td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<p>Use, modification and distribution is subject to the Boost - Software License, Version 1.0. (See accompanying file - <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> -</div></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="s05.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../signals/tests.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -</body> -</html> diff --git a/libs/signals/doc/html/signals/reference.html b/libs/signals/doc/html/signals/reference.html deleted file mode 100644 index 39a58aa9b6..0000000000 --- a/libs/signals/doc/html/signals/reference.html +++ /dev/null @@ -1,112 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> -<title>Reference</title> -<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="up" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="prev" href="tutorial.html" title="Tutorial"> -<link rel="next" href="../boost/signalN.html" title="Class template signalN"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table cellpadding="2" width="100%"><tr> -<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> -<td align="center"><a href="../../../../../index.html">Home</a></td> -<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> -<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> -<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> -<td align="center"><a href="../../../../../more/index.htm">More</a></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="tutorial.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/signalN.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -<div class="section"> -<div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="signals.reference"></a>Reference</h2></div></div></div> -<div class="toc"><dl> -<dt><span class="section"><a href="reference.html#header.boost.signal_hpp">Header <boost/signal.hpp></a></span></dt> -<dt><span class="section"><a href="reference.html#header.boost.signals.slot_hpp">Header <boost/signals/slot.hpp></a></span></dt> -<dt><span class="section"><a href="reference.html#header.boost.signals.trackable_hpp">Header <boost/signals/trackable.hpp></a></span></dt> -<dt><span class="section"><a href="reference.html#header.boost.signals.connection_hpp">Header <boost/signals/connection.hpp></a></span></dt> -<dt><span class="section"><a href="reference.html#header.boost.visit_each_hpp">Header <boost/visit_each.hpp></a></span></dt> -<dt><span class="section"><a href="reference.html#header.boost.last_value_hpp">Header <boost/last_value.hpp></a></span></dt> -</dl></div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="header.boost.signal_hpp"></a>Header <<a href="../../../../../boost/signal.hpp" target="_top">boost/signal.hpp</a>></h3></div></div></div> -<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> - <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> R<span class="special">,</span> <span class="keyword">typename</span> T1<span class="special">,</span> <span class="keyword">typename</span> T2<span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="keyword">typename</span> TN<span class="special">,</span> - <span class="keyword">typename</span> Combiner <span class="special">=</span> <a class="link" href="../boost/last_value.html" title="Class template last_value">last_value</a><span class="special"><</span><span class="identifier">R</span><span class="special">></span><span class="special">,</span> <span class="keyword">typename</span> Group <span class="special">=</span> <span class="keyword">int</span><span class="special">,</span> - <span class="keyword">typename</span> GroupCompare <span class="special">=</span> std::less<span class="special"><</span><span class="identifier">Group</span><span class="special">></span><span class="special">,</span> - <span class="keyword">typename</span> SlotFunction <span class="special">=</span> functionN<span class="special"><</span><span class="identifier">R</span><span class="special">,</span> <span class="identifier">T1</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">TN</span><span class="special">></span> <span class="special">></span> - <span class="keyword">class</span> <a class="link" href="../boost/signalN.html" title="Class template signalN">signalN</a><span class="special">;</span> - <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Combiner <span class="special">=</span> <a class="link" href="../boost/last_value.html" title="Class template last_value">last_value</a><span class="special"><</span><span class="identifier">R</span><span class="special">></span><span class="special">,</span> - <span class="keyword">typename</span> Group <span class="special">=</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">typename</span> GroupCompare <span class="special">=</span> std::less<span class="special"><</span><span class="identifier">Group</span><span class="special">></span><span class="special">,</span> - <span class="keyword">typename</span> SlotFunction <span class="special">=</span> functionN<span class="special"><</span><span class="identifier">Signature</span><span class="special">></span> <span class="special">></span> - <span class="keyword">class</span> <a class="link" href="../boost/signal.html" title="Class template signal">signal</a><span class="special">;</span> - <span class="keyword">namespace</span> <span class="identifier">signals</span> <span class="special">{</span> - - <span class="keyword">enum</span> <a name="boost.signals.connect_position"></a>connect_position <span class="special">{</span> at_front, at_back <span class="special">}</span><span class="special">;</span> - <span class="special">}</span> -<span class="special">}</span></pre> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="header.boost.signals.slot_hpp"></a>Header <<a href="../../../../../boost/signals/slot.hpp" target="_top">boost/signals/slot.hpp</a>></h3></div></div></div> -<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> - <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> SlotFunction<span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/slot.html" title="Class template slot">slot</a><span class="special">;</span> -<span class="special">}</span></pre> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="header.boost.signals.trackable_hpp"></a>Header <<a href="../../../../../boost/signals/trackable.hpp" target="_top">boost/signals/trackable.hpp</a>></h3></div></div></div> -<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> - <span class="keyword">namespace</span> <span class="identifier">signals</span> <span class="special">{</span> - <span class="keyword">class</span> <a class="link" href="../boost/signals/trackable.html" title="Class trackable">trackable</a><span class="special">;</span> - <span class="special">}</span> -<span class="special">}</span></pre> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="header.boost.signals.connection_hpp"></a>Header <<a href="../../../../../boost/signals/connection.hpp" target="_top">boost/signals/connection.hpp</a>></h3></div></div></div> -<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> - <span class="keyword">namespace</span> <span class="identifier">signals</span> <span class="special">{</span> - <span class="keyword">class</span> <a class="link" href="../boost/signals/connection.html" title="Class connection">connection</a><span class="special">;</span> - <span class="keyword">void</span> <a class="link" href="../boost/signals/connection.html#boost.signals.connection.swap"><span class="identifier">swap</span></a><span class="special">(</span><a class="link" href="../boost/signals/connection.html" title="Class connection">connection</a><span class="special">&</span><span class="special">,</span> <a class="link" href="../boost/signals/connection.html" title="Class connection">connection</a><span class="special">&</span><span class="special">)</span><span class="special">;</span> - <span class="keyword">class</span> <a class="link" href="../boost/signals/scoped_connection.html" title="Class scoped_connection">scoped_connection</a><span class="special">;</span> - <span class="special">}</span> -<span class="special">}</span></pre> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="header.boost.visit_each_hpp"></a>Header <<a href="../../../../../boost/visit_each.hpp" target="_top">boost/visit_each.hpp</a>></h3></div></div></div> -<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> - <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> Visitor<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">></span> - <span class="keyword">void</span> <a class="link" href="../boost/visit_each.html" title="Function template visit_each"><span class="identifier">visit_each</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Visitor</span><span class="special">&</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span><span class="special">,</span> <span class="keyword">int</span><span class="special">)</span><span class="special">;</span> -<span class="special">}</span></pre> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="header.boost.last_value_hpp"></a>Header <<a href="../../../../../boost/last_value.hpp" target="_top">boost/last_value.hpp</a>></h3></div></div></div> -<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> - <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/last_value.html" title="Class template last_value">last_value</a><span class="special">;</span> - - <span class="keyword">template</span><span class="special"><</span><span class="special">></span> <span class="keyword">class</span> <a class="link" href="../boost/last_value_voi_idp15355280.html" title="Class last_value<void>">last_value</a><span class="special"><</span><span class="keyword">void</span><span class="special">></span><span class="special">;</span> -<span class="special">}</span></pre> -</div> -</div> -<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> -<td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<p>Use, modification and distribution is subject to the Boost - Software License, Version 1.0. (See accompanying file - <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> -</div></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="tutorial.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../boost/signalN.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -</body> -</html> diff --git a/libs/signals/doc/html/signals/tests.html b/libs/signals/doc/html/signals/tests.html deleted file mode 100644 index 0e4cb37566..0000000000 --- a/libs/signals/doc/html/signals/tests.html +++ /dev/null @@ -1,104 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> -<title>Testsuite</title> -<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="up" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="prev" href="../index/s06.html" title="Design Rationale"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table cellpadding="2" width="100%"><tr> -<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> -<td align="center"><a href="../../../../../index.html">Home</a></td> -<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> -<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> -<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> -<td align="center"><a href="../../../../../more/index.htm">More</a></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="../index/s06.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a> -</div> -<div class="section"> -<div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="signals.tests"></a>Testsuite</h2></div></div></div> -<div class="toc"><dl><dt><span class="section"><a href="tests.html#idp64008752">Acceptance tests</a></span></dt></dl></div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp64008752"></a>Acceptance tests</h3></div></div></div> -<div class="informaltable"><table class="table"> -<colgroup> -<col> -<col width="1in"> -<col> -</colgroup> -<thead><tr> -<th>Test</th> -<th>Type</th> -<th>Description</th> -<th>If failing...</th> -</tr></thead> -<tbody> -<tr> -<td><p><a href="../../../libs/signals/test/dead_slot_test.cpp" target="_top">dead_slot_test.cpp</a></p></td> -<td><p>run</p></td> -<td><p>Ensure that calling <code class="computeroutput">connect</code> with a slot -that has already been disconnected via deletion does not actually -connect to the slot.</p></td> -<td> </td> -</tr> -<tr> -<td><p><a href="../../../libs/signals/test/deletion_test.cpp" target="_top">deletion_test.cpp</a></p></td> -<td><p>run</p></td> -<td><p>Test deletion of slots.</p></td> -<td> </td> -</tr> -<tr> -<td><p><a href="../../../libs/signals/test/ordering_test.cpp" target="_top">ordering_test.cpp</a></p></td> -<td><p>run</p></td> -<td><p>Test slot group ordering.</p></td> -<td> </td> -</tr> -<tr> -<td><p><a href="../../../libs/signals/test/signal_n_test.cpp" target="_top">signal_n_test.cpp</a></p></td> -<td><p>run</p></td> -<td><p>Basic test of signal/slot connections and invocation using the -<code class="computeroutput"><a class="link" href="../boost/signalN.html" title="Class template signalN">boost::signalN</a></code> class templates.</p></td> -<td> </td> -</tr> -<tr> -<td><p><a href="../../../libs/signals/test/signal_test.cpp" target="_top">signal_test.cpp</a></p></td> -<td><p>run</p></td> -<td><p>Basic test of signal/slot connections and invocation using the -<code class="computeroutput"><a class="link" href="../boost/signal.html" title="Class template signal">boost::signal</a></code> class template.</p></td> -<td><p>The <code class="computeroutput"><a class="link" href="../boost/signal.html" title="Class template signal">boost::signal</a></code> class template may not -be usable on your compiler. However, the -<code class="computeroutput"><a class="link" href="../boost/signalN.html" title="Class template signalN">boost::signalN</a></code> class templates may still be -usable.</p></td> -</tr> -<tr> -<td><p><a href="../../../libs/signals/test/trackable_test.cpp" target="_top">trackable_test.cpp</a></p></td> -<td><p>run</p></td> -<td><p>Test automatic lifetime management using - <code class="computeroutput">boost::trackable</code> objects.</p></td> -<td> </td> -</tr> -</tbody> -</table></div> -</div> -</div> -<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> -<td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<p>Use, modification and distribution is subject to the Boost - Software License, Version 1.0. (See accompanying file - <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> -</div></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="../index/s06.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a> -</div> -</body> -</html> diff --git a/libs/signals/doc/html/signals/tutorial.html b/libs/signals/doc/html/signals/tutorial.html deleted file mode 100644 index 35d8925bc5..0000000000 --- a/libs/signals/doc/html/signals/tutorial.html +++ /dev/null @@ -1,1151 +0,0 @@ -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> -<title>Tutorial</title> -<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> -<link rel="home" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="up" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="prev" href="../index.html" title="Chapter 1. Boost.Signals"> -<link rel="next" href="reference.html" title="Reference"> -</head> -<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> -<table cellpadding="2" width="100%"><tr> -<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> -<td align="center"><a href="../../../../../index.html">Home</a></td> -<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> -<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> -<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> -<td align="center"><a href="../../../../../more/index.htm">More</a></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -<div class="section"> -<div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="signals.tutorial"></a>Tutorial</h2></div></div></div> -<div class="toc"><dl> -<dt><span class="section"><a href="tutorial.html#idp61506304">How to Read this Tutorial</a></span></dt> -<dt><span class="section"><a href="tutorial.html#idp57660384">Compatibility Note</a></span></dt> -<dt><span class="section"><a href="tutorial.html#idp57674496">Hello, World! (Beginner)</a></span></dt> -<dt><span class="section"><a href="tutorial.html#idp62590288">Calling multiple slots</a></span></dt> -<dt><span class="section"><a href="tutorial.html#idp62631760">Passing values to and from slots</a></span></dt> -<dt><span class="section"><a href="tutorial.html#idp62726080">Connection Management</a></span></dt> -<dt><span class="section"><a href="tutorial.html#idp62804320">Example: Document-View</a></span></dt> -<dt><span class="section"><a href="tutorial.html#idp62818608">Linking against the Signals library</a></span></dt> -</dl></div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp61506304"></a>How to Read this Tutorial</h3></div></div></div> -<p>This tutorial is not meant to be read linearly. Its top-level -structure roughly separates different concepts in the library -(e.g., handling calling multiple slots, passing values to and from -slots) and in each of these concepts the basic ideas are presented -first and then more complex uses of the library are described -later. Each of the sections is marked <span class="emphasis"><em>Beginner</em></span>, -<span class="emphasis"><em>Intermediate</em></span>, or <span class="emphasis"><em>Advanced</em></span> to help guide the -reader. The <span class="emphasis"><em>Beginner</em></span> sections include information that all -library users should know; one can make good use of the Signals -library after having read only the <span class="emphasis"><em>Beginner</em></span> sections. The -<span class="emphasis"><em>Intermediate</em></span> sections build on the <span class="emphasis"><em>Beginner</em></span> -sections with slightly more complex uses of the library. Finally, -the <span class="emphasis"><em>Advanced</em></span> sections detail very advanced uses of the -Signals library, that often require a solid working knowledge of -the <span class="emphasis"><em>Beginner</em></span> and <span class="emphasis"><em>Intermediate</em></span> topics; most users -will not need to read the <span class="emphasis"><em>Advanced</em></span> sections.</p> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp57660384"></a>Compatibility Note</h3></div></div></div> -<p>Boost.Signals has two syntactical forms: the preferred form and -the compatibility form. The preferred form fits more closely with the -C++ language and reduces the number of separate template parameters -that need to be considered, often improving readability; however, the -preferred form is not supported on all platforms due to compiler -bugs. The compatible form will work on all compilers supported by -Boost.Signals. Consult the table below to determine which syntactic -form to use for your compiler. Users of Boost.Function, please note -that the preferred syntactic form in Signals is equivalent to that of -Function's preferred syntactic form.</p> -<p>If your compiler does not appear in this list, please try the -preferred syntax and report your results to the Boost list so that -we can keep this table up-to-date.</p> -<div class="informaltable"><table class="table"> -<colgroup> -<col> -<col> -</colgroup> -<thead><tr> -<th align="left">Preferred syntax</th> -<th align="left">Portable syntax</th> -</tr></thead> -<tbody><tr> -<td align="left"> - <div class="itemizedlist"><ul class="itemizedlist" type="disc"> -<li class="listitem"><p>GNU C++ 2.95.x, 3.0.x, 3.1.x</p></li> -<li class="listitem"><p>Comeau C++ 4.2.45.2</p></li> -<li class="listitem"><p>SGI MIPSpro 7.3.0</p></li> -<li class="listitem"><p>Intel C++ 5.0, 6.0</p></li> -<li class="listitem"><p>Compaq's cxx 6.2</p></li> -<li class="listitem"><p>Microsoft Visual C++ 7.1</p></li> -</ul></div> - </td> -<td align="left"> - <div class="itemizedlist"><ul class="itemizedlist" type="disc"> -<li class="listitem"><p><span class="emphasis"><em>Any compiler supporting the preferred syntax</em></span></p></li> -<li class="listitem"><p>Microsoft Visual C++ 6.0, 7.0</p></li> -<li class="listitem"><p>Borland C++ 5.5.1</p></li> -<li class="listitem"><p>Sun WorkShop 6 update 2 C++ 5.3</p></li> -<li class="listitem"><p>Metrowerks CodeWarrior 8.1</p></li> -</ul></div> - </td> -</tr></tbody> -</table></div> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp57674496"></a>Hello, World! (Beginner)</h3></div></div></div> -<p>The following example writes "Hello, World!" using signals and -slots. First, we create a signal <code class="computeroutput">sig</code>, a signal that -takes no arguments and has a void return value. Next, we connect -the <code class="computeroutput">hello</code> function object to the signal using the -<code class="computeroutput">connect</code> method. Finally, use the signal -<code class="computeroutput">sig</code> like a function to call the slots, which in turns -invokes <code class="computeroutput">HelloWorld::operator()</code> to print "Hello, -World!".</p> -<div class="informaltable"><table class="table"> -<colgroup> -<col> -<col> -</colgroup> -<thead><tr> -<th align="left">Preferred syntax</th> -<th align="left">Portable syntax</th> -</tr></thead> -<tbody><tr> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -struct HelloWorld -{ - void operator()() const - { - std::cout << "Hello, World!" << std::endl; - } -}; - -// ... - -// Signal with no arguments and a void return value -<code class="computeroutput"><a class="link" href="../boost/signal.html" title="Class template signal">boost::signal</a></code><void ()> sig; - -// Connect a HelloWorld slot -HelloWorld hello; -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(hello); - -// Call all of the slots -sig(); -</pre> -</td> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -struct HelloWorld -{ - void operator()() const - { - std::cout << "Hello, World!" << std::endl; - } -}; - -// ... - -// Signal with no arguments and a void return value -<code class="computeroutput"><a class="link" href="../boost/signalN.html" title="Class template signalN">boost::signal0</a></code><void> sig; - -// Connect a HelloWorld slot -HelloWorld hello; -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(hello); - -// Call all of the slots -sig(); -</pre> -</td> -</tr></tbody> -</table></div> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp62590288"></a>Calling multiple slots</h3></div></div></div> -<div class="toc"><dl> -<dt><span class="section"><a href="tutorial.html#idp62590800">Connecting multiple slots (Beginner)</a></span></dt> -<dt><span class="section"><a href="tutorial.html#idp62609776">Ordering slot call groups (Intermediate)</a></span></dt> -</dl></div> -<div class="section"> -<div class="titlepage"><div><div><h4 class="title"> -<a name="idp62590800"></a>Connecting multiple slots (Beginner)</h4></div></div></div> -<p>Calling a single slot from a signal isn't very interesting, so -we can make the Hello, World program more interesting by splitting -the work of printing "Hello, World!" into two completely separate -slots. The first slot will print "Hello" and may look like -this:</p> -<pre class="programlisting"> -struct Hello -{ - void operator()() const - { - std::cout << "Hello"; - } -}; -</pre> -<p>The second slot will print ", World!" and a newline, to complete -the program. The second slot may look like this:</p> -<pre class="programlisting"> -struct World -{ - void operator()() const - { - std::cout << ", World!" << std::endl; - } -}; -</pre> -<p>Like in our previous example, we can create a signal -<code class="computeroutput">sig</code> that takes no arguments and has a -<code class="computeroutput">void</code> return value. This time, we connect both a -<code class="computeroutput">hello</code> and a <code class="computeroutput">world</code> slot to the same -signal, and when we call the signal both slots will be called.</p> -<div class="informaltable"><table class="table"> -<colgroup> -<col> -<col> -</colgroup> -<thead><tr> -<th align="left">Preferred syntax</th> -<th align="left">Portable syntax</th> -</tr></thead> -<tbody><tr> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -<code class="computeroutput"><a class="link" href="../boost/signal.html" title="Class template signal">boost::signal</a></code><void ()> sig; - -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(Hello()); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(World()); - -sig(); -</pre> -</td> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -<code class="computeroutput"><a class="link" href="../boost/signalN.html" title="Class template signalN">boost::signal0</a></code><void> sig; - -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(Hello()); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(World()); - -sig(); -</pre> -</td> -</tr></tbody> -</table></div> -<p>By default, slots are called in first-in first-out (FIFO) order, -so the output of this program will be as expected:</p> -<pre class="programlisting"> -Hello, World! -</pre> -</div> -<div class="section"> -<div class="titlepage"><div><div><h4 class="title"> -<a name="idp62609776"></a>Ordering slot call groups (Intermediate)</h4></div></div></div> -<p>Slots are free to have side effects, and that can mean that some -slots will have to be called before others even if they are not connected in that order. The Boost.Signals -library allows slots to be placed into groups that are ordered in -some way. For our Hello, World program, we want "Hello" to be -printed before ", World!", so we put "Hello" into a group that must -be executed before the group that ", World!" is in. To do this, we -can supply an extra parameter at the beginning of the -<code class="computeroutput">connect</code> call that specifies the group. Group values -are, by default, <code class="computeroutput">int</code>s, and are ordered by the integer -< relation. Here's how we construct Hello, World:</p> -<div class="informaltable"><table class="table"> -<colgroup> -<col> -<col> -</colgroup> -<thead><tr> -<th align="left">Preferred syntax</th> -<th align="left">Portable syntax</th> -</tr></thead> -<tbody><tr> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -<code class="computeroutput"><a class="link" href="../boost/signal.html" title="Class template signal">boost::signal</a></code><void ()> sig; -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(1, World()); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(0, Hello()); -sig(); -</pre> -</td> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -<code class="computeroutput"><a class="link" href="../boost/signalN.html" title="Class template signalN">boost::signal0</a></code><void> sig; -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(1, World()); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(0, Hello()); -sig(); -</pre> -</td> -</tr></tbody> -</table></div> -<p>This program will correctly print "Hello, World!", because the -<code class="computeroutput">Hello</code> object is in group 0, which precedes group 1 where -the <code class="computeroutput">World</code> object resides. The group -parameter is, in fact, optional. We omitted it in the first Hello, -World example because it was unnecessary when all of the slots are -independent. So what happens if we mix calls to connect that use the -group parameter and those that don't? The "unnamed" slots (i.e., those -that have been connected without specifying a group name) can be -placed at the front or back of the slot list (by passing -<code class="computeroutput">boost::signals::at_front</code> or <code class="computeroutput">boost::signals::at_back</code> -as the last parameter to <code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>, respectively), and defaults to the end of the list. When -a group is specified, the final parameter describes where the slot -will be placed within the group ordering. If we add a new slot -to our example like this:</p> -<pre class="programlisting"> -struct GoodMorning -{ - void operator()() const - { - std::cout << "... and good morning!" << std::endl; - } -}; - -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(GoodMorning()); -</pre> -<p>... we will get the result we wanted:</p> -<pre class="programlisting"> -Hello, World! -... and good morning! -</pre> -</div> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp62631760"></a>Passing values to and from slots</h3></div></div></div> -<div class="toc"><dl> -<dt><span class="section"><a href="tutorial.html#idp62632272">Slot Arguments (Beginner)</a></span></dt> -<dt><span class="section"><a href="tutorial.html#idp62657600">Signal Return Values (Advanced)</a></span></dt> -</dl></div> -<div class="section"> -<div class="titlepage"><div><div><h4 class="title"> -<a name="idp62632272"></a>Slot Arguments (Beginner)</h4></div></div></div> -<p>Signals can propagate arguments to each of the slots they call. -For instance, a signal that propagates mouse motion events might -want to pass along the new mouse coordinates and whether the mouse -buttons are pressed.</p> -<p>As an example, we'll create a signal that passes two -<code class="computeroutput">float</code> arguments to its slots. Then we'll create a few -slots that print the results of various arithmetic operations on -these values.</p> -<pre class="programlisting"> -void print_sum(float x, float y) -{ - std::cout << "The sum is " << x+y << std::endl; -} - -void print_product(float x, float y) -{ - std::cout << "The product is " << x*y << std::endl; -} - -void print_difference(float x, float y) -{ - std::cout << "The difference is " << x-y << std::endl; -} - -void print_quotient(float x, float y) -{ - std::cout << "The quotient is " << x/y << std::endl; -} -</pre> -<div class="informaltable"><table class="table"> -<colgroup> -<col> -<col> -</colgroup> -<thead><tr> -<th align="left">Preferred syntax</th> -<th align="left">Portable syntax</th> -</tr></thead> -<tbody><tr> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -<code class="computeroutput"><a class="link" href="../boost/signal.html" title="Class template signal">boost::signal</a></code><void (float, float)> sig; - -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&print_sum); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&print_product); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&print_difference); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&print_quotient); - -sig(5, 3); -</pre> -</td> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -<code class="computeroutput"><a class="link" href="../boost/signalN.html" title="Class template signalN">boost::signal2</a></code><void, float, float> sig; - -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&print_sum); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&print_product); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&print_difference); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&print_quotient); - -sig(5, 3); -</pre> -</td> -</tr></tbody> -</table></div> -<p>This program will print out the following:</p> -<pre class="programlisting"> -The sum is 8 -The product is 15 -The difference is 2 -The quotient is 1.66667 -</pre> -<p>So any values that are given to <code class="computeroutput">sig</code> when it is -called like a function are passed to each of the slots. We have to -declare the types of these values up front when we create the -signal. The type <code class="computeroutput"><a class="link" href="../boost/signal.html" title="Class template signal">boost::signal</a><void (float, -float)></code> means that the signal has a <code class="computeroutput">void</code> -return value and takes two <code class="computeroutput">float</code> values. Any slot -connected to <code class="computeroutput">sig</code> must therefore be able to take two -<code class="computeroutput">float</code> values.</p> -</div> -<div class="section"> -<div class="titlepage"><div><div><h4 class="title"> -<a name="idp62657600"></a>Signal Return Values (Advanced)</h4></div></div></div> -<p>Just as slots can receive arguments, they can also return -values. These values can then be returned back to the caller of the -signal through a <em class="firstterm">combiner</em>. The combiner is a mechanism -that can take the results of calling slots (there many be no -results or a hundred; we don't know until the program runs) and -coalesces them into a single result to be returned to the caller. -The single result is often a simple function of the results of the -slot calls: the result of the last slot call, the maximum value -returned by any slot, or a container of all of the results are some -possibilities.</p> -<p>We can modify our previous arithmetic operations example -slightly so that the slots all return the results of computing the -product, quotient, sum, or difference. Then the signal itself can -return a value based on these results to be printed:</p> -<div class="informaltable"><table class="table"> -<colgroup> -<col> -<col> -</colgroup> -<thead><tr> -<th align="left">Preferred syntax</th> -<th align="left">Portable syntax</th> -</tr></thead> -<tbody><tr> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -float product(float x, float y) { return x*y; } -float quotient(float x, float y) { return x/y; } -float sum(float x, float y) { return x+y; } -float difference(float x, float y) { return x-y; } - -<code class="computeroutput"><a class="link" href="../boost/signal.html" title="Class template signal">boost::signal</a></code><float (float x, float y)> sig; - -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&product); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&quotient); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&sum); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&difference); - -std::cout << sig(5, 3) << std::endl; -</pre> -</td> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -float product(float x, float y) { return x*y; } -float quotient(float x, float y) { return x/y; } -float sum(float x, float y) { return x+y; } -float difference(float x, float y) { return x-y; } - -<code class="computeroutput"><a class="link" href="../boost/signalN.html" title="Class template signalN">boost::signal2</a></code><float, float, float> sig; - -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&product); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&quotient); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&sum); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&difference); - -std::cout << sig(5, 3) << std::endl; -</pre> -</td> -</tr></tbody> -</table></div> -<p>This example program will output <code class="computeroutput">2</code>. This is because the -default behavior of a signal that has a return type -(<code class="computeroutput">float</code>, the first template argument given to the -<code class="computeroutput"><a class="link" href="../boost/signal.html" title="Class template signal">boost::signal</a></code> class template) is to call all slots and -then return the result returned by the last slot called. This -behavior is admittedly silly for this example, because slots have -no side effects and the result is the last slot connect.</p> -<p>A more interesting signal result would be the maximum of the -values returned by any slot. To do this, we create a custom -combiner that looks like this:</p> -<pre class="programlisting"> -template<typename T> -struct maximum -{ - typedef T result_type; - - template<typename InputIterator> - T operator()(InputIterator first, InputIterator last) const - { - // If there are no slots to call, just return the - // default-constructed value - if (first == last) - return T(); - - T max_value = *first++; - while (first != last) { - if (max_value < *first) - max_value = *first; - ++first; - } - - return max_value; - } -}; -</pre> -<p>The <code class="computeroutput">maximum</code> class template acts as a function -object. Its result type is given by its template parameter, and -this is the type it expects to be computing the maximum based on -(e.g., <code class="computeroutput">maximum<float></code> would find the maximum -<code class="computeroutput">float</code> in a sequence of <code class="computeroutput">float</code>s). When a -<code class="computeroutput">maximum</code> object is invoked, it is given an input -iterator sequence <code class="computeroutput">[first, last)</code> that includes the -results of calling all of the slots. <code class="computeroutput">maximum</code> uses this -input iterator sequence to calculate the maximum element, and -returns that maximum value.</p> -<p>We actually use this new function object type by installing it -as a combiner for our signal. The combiner template argument -follows the signal's calling signature:</p> -<div class="informaltable"><table class="table"> -<colgroup> -<col> -<col> -</colgroup> -<thead><tr> -<th align="left">Preferred syntax</th> -<th align="left">Portable syntax</th> -</tr></thead> -<tbody><tr> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -<code class="computeroutput"><a class="link" href="../boost/signal.html" title="Class template signal">boost::signal</a></code><float (float x, float y), - maximum<float> > sig; -</pre> -</td> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -<code class="computeroutput"><a class="link" href="../boost/signalN.html" title="Class template signalN">boost::signal2</a></code><float, float, float, - maximum<float> > sig; -</pre> -</td> -</tr></tbody> -</table></div> -<p>Now we can connect slots that perform arithmetic functions and -use the signal:</p> -<pre class="programlisting"> -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&quotient); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&product); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&sum); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&difference); - -std::cout << sig(5, 3) << std::endl; -</pre> -<p>The output of this program will be <code class="computeroutput">15</code>, because -regardless of the order in which the slots are connected, the product -of 5 and 3 will be larger than the quotient, sum, or -difference.</p> -<p>In other cases we might want to return all of the values -computed by the slots together, in one large data structure. This -is easily done with a different combiner:</p> -<pre class="programlisting"> -template<typename Container> -struct aggregate_values -{ - typedef Container result_type; - - template<typename InputIterator> - Container operator()(InputIterator first, InputIterator last) const - { - return Container(first, last); - } -}; -</pre> -<p> -Again, we can create a signal with this new combiner: -</p> -<div class="informaltable"><table class="table"> -<colgroup> -<col> -<col> -</colgroup> -<thead><tr> -<th align="left">Preferred syntax</th> -<th align="left">Portable syntax</th> -</tr></thead> -<tbody><tr> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -<code class="computeroutput"><a class="link" href="../boost/signal.html" title="Class template signal">boost::signal</a></code><float (float, float), - aggregate_values<std::vector<float> > > sig; - -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&quotient); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&product); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&sum); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&difference); - -std::vector<float> results = sig(5, 3); -std::copy(results.begin(), results.end(), - std::ostream_iterator<float>(cout, " ")); -</pre> -</td> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -<code class="computeroutput"><a class="link" href="../boost/signalN.html" title="Class template signalN">boost::signal2</a></code><float, float, float, - aggregate_values<std::vector<float> > > sig; - -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&quotient); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&product); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&sum); -sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(&difference); - -std::vector<float> results = sig(5, 3); -std::copy(results.begin(), results.end(), - std::ostream_iterator<float>(cout, " ")); -</pre> -</td> -</tr></tbody> -</table></div> -<p>The output of this program will contain 15, 8, 1.6667, and 2. It -is interesting here that -the first template argument for the <code class="computeroutput">signal</code> class, -<code class="computeroutput">float</code>, is not actually the return type of the signal. -Instead, it is the return type used by the connected slots and will -also be the <code class="computeroutput">value_type</code> of the input iterators passed -to the combiner. The combiner itself is a function object and its -<code class="computeroutput">result_type</code> member type becomes the return type of the -signal.</p> -<p>The input iterators passed to the combiner transform dereference -operations into slot calls. Combiners therefore have the option to -invoke only some slots until some particular criterion is met. For -instance, in a distributed computing system, the combiner may ask -each remote system whether it will handle the request. Only one -remote system needs to handle a particular request, so after a -remote system accepts the work we do not want to ask any other -remote systems to perform the same task. Such a combiner need only -check the value returned when dereferencing the iterator, and -return when the value is acceptable. The following combiner returns -the first non-NULL pointer to a <code class="computeroutput">FulfilledRequest</code> data -structure, without asking any later slots to fulfill the -request:</p> -<pre class="programlisting"> -struct DistributeRequest { - typedef FulfilledRequest* result_type; - - template<typename InputIterator> - result_type operator()(InputIterator first, InputIterator last) const - { - while (first != last) { - if (result_type fulfilled = *first) - return fulfilled; - ++first; - } - return 0; - } -}; -</pre> -</div> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp62726080"></a>Connection Management</h3></div></div></div> -<div class="toc"><dl> -<dt><span class="section"><a href="tutorial.html#idp62726592">Disconnecting Slots (Beginner)</a></span></dt> -<dt><span class="section"><a href="tutorial.html#idp62738320">Blocking Slots (Beginner)</a></span></dt> -<dt><span class="section"><a href="tutorial.html#idp62746224">Scoped connections (Intermediate)</a></span></dt> -<dt><span class="section"><a href="tutorial.html#idp62751168">Disconnecting equivalent slots (Intermediate)</a></span></dt> -<dt><span class="section"><a href="tutorial.html#idp62759952">Automatic connection management (Intermediate)</a></span></dt> -<dt><span class="section"><a href="tutorial.html#idp62781760">When can disconnections occur? (Intermediate)</a></span></dt> -<dt><span class="section"><a href="tutorial.html#idp62788704">Passing slots (Intermediate)</a></span></dt> -</dl></div> -<div class="section"> -<div class="titlepage"><div><div><h4 class="title"> -<a name="idp62726592"></a>Disconnecting Slots (Beginner)</h4></div></div></div> -<p>Slots aren't expected to exist indefinately after they are -connected. Often slots are only used to receive a few events and -are then disconnected, and the programmer needs control to decide -when a slot should no longer be connected.</p> -<p>The entry point for managing connections explicitly is the -<code class="computeroutput"><a class="link" href="../boost/signals/connection.html" title="Class connection">boost::signals::connection</a></code> class. The -<code class="computeroutput"><a class="link" href="../boost/signals/connection.html" title="Class connection">connection</a></code> class uniquely represents the connection -between a particular signal and a particular slot. The -<code class="computeroutput"><a class="link" href="../boost/signals/connection.html#idp15454784-bb">connected</a>()</code> method checks if the signal and slot are -still connected, and the <code class="computeroutput"><a class="link" href="../boost/signals/connection.html#idp12155424-bb">disconnect()</a></code> method -disconnects the signal and slot if they are connected before it is -called. Each call to the signal's <code class="computeroutput">connect()</code> method -returns a connection object, which can be used to determine if the -connection still exists or to disconnect the signal and slot.</p> -<pre class="programlisting"> -boost::signals::connection c = sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(HelloWorld()); -if (c.<code class="computeroutput">connected</code>()) { -<span class="emphasis"><em>// c is still connected to the signal</em></span> - sig(); <span class="emphasis"><em>// Prints "Hello, World!"</em></span> -} - -c.disconnect(); <span class="emphasis"><em>// Disconnect the HelloWorld object</em></span> -assert(!c.<code class="computeroutput">connected</code>()); <span class="emphasis"><em>c isn't connected any more</em></span> - -sig(); <span class="emphasis"><em>// Does nothing: there are no connected slots</em></span> -</pre> -</div> -<div class="section"> -<div class="titlepage"><div><div><h4 class="title"> -<a name="idp62738320"></a>Blocking Slots (Beginner)</h4></div></div></div> -<p>Slots can be temporarily "blocked", meaning that they will be -ignored when the signal is invoked but have not been disconnected. The -<code class="computeroutput">block</code> member function -temporarily blocks a slot, which can be unblocked via -<code class="computeroutput">unblock</code>. Here is an example of -blocking/unblocking slots:</p> -<pre class="programlisting"> -boost::signals::connection c = sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(HelloWorld()); -sig(); <span class="emphasis"><em>// Prints "Hello, World!"</em></span> - -c.<code class="computeroutput">block</code>(); <span class="emphasis"><em>// block the slot</em></span> -assert(c.<code class="computeroutput">blocked</code>()); -sig(); <span class="emphasis"><em>// No output: the slot is blocked</em></span> - -c.<code class="computeroutput">unblock</code>(); <span class="emphasis"><em>// unblock the slot</em></span> -sig(); <span class="emphasis"><em>// Prints "Hello, World!"</em></span> -</pre> -</div> -<div class="section"> -<div class="titlepage"><div><div><h4 class="title"> -<a name="idp62746224"></a>Scoped connections (Intermediate)</h4></div></div></div> -<p>The <code class="computeroutput">boost::signals::scoped_connection</code> class -references a signal/slot connection that will be disconnected when -the <code class="computeroutput">scoped_connection</code> class goes out of scope. This -ability is useful when a connection need only be temporary, -e.g.,</p> -<pre class="programlisting"> -{ - boost::signals::scoped_connection c = sig.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(ShortLived()); - sig(); <span class="emphasis"><em>// will call ShortLived function object</em></span> -} -sig(); <span class="emphasis"><em>// ShortLived function object no longer connected to sig</em></span> -</pre> -</div> -<div class="section"> -<div class="titlepage"><div><div><h4 class="title"> -<a name="idp62751168"></a>Disconnecting equivalent slots (Intermediate)</h4></div></div></div> -<p>One can disconnect slots that are equivalent to a given function -object using a form of the -<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp5262448-bb">disconnect</a></code> method, so long as -the type of the function object has an accessible <code class="computeroutput">==</code> -operator. For instance: - -</p> -<div class="informaltable"><table class="table"> -<colgroup> -<col> -<col> -</colgroup> -<thead><tr> -<th align="left">Preferred syntax</th> -<th align="left">Portable syntax</th> -</tr></thead> -<tbody><tr> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -void foo(); -void bar(); - -signal<void()> sig; - -sig.connect(&foo); -sig.connect(&bar); - -// disconnects foo, but not bar -sig.disconnect(&foo); -</pre> -</td> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -void foo(); -void bar(); - -signal0<void> sig; - -sig.connect(&foo); -sig.connect(&bar); - -// disconnects foo, but not bar -sig.disconnect(&foo); -</pre> -</td> -</tr></tbody> -</table></div> -</div> -<div class="section"> -<div class="titlepage"><div><div><h4 class="title"> -<a name="idp62759952"></a>Automatic connection management (Intermediate)</h4></div></div></div> -<p>Boost.Signals can automatically track the lifetime of objects -involved in signal/slot connections, including automatic -disconnection of slots when objects involved in the slot call are -destroyed. For instance, consider a simple news delivery service, -where clients connect to a news provider that then sends news to -all connected clients as information arrives. The news delivery -service may be constructed like this: </p> -<div class="informaltable"><table class="table"> -<colgroup> -<col> -<col> -</colgroup> -<thead><tr> -<th align="left">Preferred syntax</th> -<th align="left">Portable syntax</th> -</tr></thead> -<tbody><tr> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -class NewsItem { /* ... */ }; - -boost::signal<void (const NewsItem&)> deliverNews; -</pre> -</td> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -class NewsItem { /* ... */ }; - -boost::signal1<void, const NewsItem&> deliverNews; -</pre> -</td> -</tr></tbody> -</table></div> -<p>Clients that wish to receive news updates need only connect a -function object that can receive news items to the -<code class="computeroutput">deliverNews</code> signal. For instance, we may have a -special message area in our application specifically for news, -e.g.,:</p> -<pre class="programlisting"> -struct NewsMessageArea : public MessageArea -{ -public: - // ... - - void displayNews(const NewsItem& news) const - { - messageText = news.text(); - update(); - } -}; - -// ... -NewsMessageArea newsMessageArea = new NewsMessageArea(/* ... */); -// ... -deliverNews.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(boost::bind(&NewsMessageArea::displayNews, - newsMessageArea, _1)); -</pre> -<p>However, what if the user closes the news message area, -destroying the <code class="computeroutput">newsMessageArea</code> object that -<code class="computeroutput">deliverNews</code> knows about? Most likely, a segmentation -fault will occur. However, with Boost.Signals one need only make -<code class="computeroutput">NewsMessageArea</code> <span class="emphasis"><em>trackable</em></span>, and the slot -involving <code class="computeroutput">newsMessageArea</code> will be disconnected when -<code class="computeroutput">newsMessageArea</code> is destroyed. The -<code class="computeroutput">NewsMessageArea</code> class is made trackable by deriving -publicly from the <code class="computeroutput">boost::signals::trackable</code> class, -e.g.:</p> -<pre class="programlisting"> -struct NewsMessageArea : public MessageArea, public boost::signals::trackable -{ - // ... -}; -</pre> -<p>At this time there is a significant limitation to the use of -<code class="computeroutput">trackable</code> objects in making slot connections: function -objects built using Boost.Bind are understood, such that pointers -or references to <code class="computeroutput">trackable</code> objects passed to -<code class="computeroutput">boost::bind</code> will be found and tracked.</p> -<p><span class="bold"><strong>Warning</strong></span>: User-defined function objects and function -objects from other libraries (e.g., Boost.Function or Boost.Lambda) -do not implement the required interfaces for <code class="computeroutput">trackable</code> -object detection, and <span class="emphasis"><em>will silently ignore any bound trackable -objects</em></span>. Future versions of the Boost libraries will address -this limitation.</p> -</div> -<div class="section"> -<div class="titlepage"><div><div><h4 class="title"> -<a name="idp62781760"></a>When can disconnections occur? (Intermediate)</h4></div></div></div> -<p>Signal/slot disconnections occur when any of these conditions -occur:</p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> -<li class="listitem"><p>The connection is explicitly disconnected via the connection's -<code class="computeroutput">disconnect</code> method directly, or indirectly via the -signal's <code class="computeroutput">disconnect</code> method or -<code class="computeroutput">scoped_connection</code>'s destructor.</p></li> -<li class="listitem"><p>A <code class="computeroutput">trackable</code> object bound to the slot is -destroyed.</p></li> -<li class="listitem"><p>The signal is destroyed.</p></li> -</ul></div> -<p>These events can occur at any time without disrupting a signal's -calling sequence. If a signal/slot connection is disconnected at -any time during a signal's calling sequence, the calling sequence -will still continue but will not invoke the disconnected slot. -Additionally, a signal may be destroyed while it is in a calling -sequence, and which case it will complete its slot call sequence -but may not be accessed directly.</p> -<p>Signals may be invoked recursively (e.g., a signal A calls a -slot B that invokes signal A...). The disconnection behavior does -not change in the recursive case, except that the slot calling -sequence includes slot calls for all nested invocations of the -signal.</p> -</div> -<div class="section"> -<div class="titlepage"><div><div><h4 class="title"> -<a name="idp62788704"></a>Passing slots (Intermediate)</h4></div></div></div> -<p>Slots in the Boost.Signals library are created from arbitrary -function objects, and therefore have no fixed type. However, it is -commonplace to require that slots be passed through interfaces that -cannot be templates. Slots can be passed via the -<code class="computeroutput">slot_type</code> for each particular signal type and any -function object compatible with the signature of the signal can be -passed to a <code class="computeroutput">slot_type</code> parameter. For instance:</p> -<div class="informaltable"><table class="table"> -<colgroup> -<col> -<col> -</colgroup> -<thead><tr> -<th align="left">Preferred syntax</th> -<th align="left">Portable syntax</th> -</tr></thead> -<tbody><tr> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -class Button -{ - typedef boost::signal<void (int x, int y)> OnClick; - -public: - void doOnClick(const OnClick::slot_type& slot); - -private: - OnClick onClick; -}; - -void Button::doOnClick( - const OnClick::slot_type& slot - ) -{ - onClick.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(slot); -} - -void printCoordinates(long x, long y) -{ - std::cout << "(" << x << ", " << y << ")\n"; -} - -void f(Button& button) -{ - button.doOnClick(&printCoordinates); -} -</pre> -</td> -<td align="left"> -<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"> -class Button -{ - typedef <code class="computeroutput"><a class="link" href="../boost/signalN.html" title="Class template signalN">boost::signal2</a></code><void,int,int> OnClick; - -public: - void doOnClick(const OnClick::slot_type& slot); - -private: - OnClick onClick; -}; - -void Button::doOnClick( - const OnClick::slot_type& slot - ) -{ - onClick.<code class="computeroutput"><a class="link" href="../boost/signalN.html#idp14296960-bb">connect</a></code>(slot); -} - -void printCoordinates(long x, long y) -{ - std::cout << "(" << x << ", " << y << ")\n"; -} - -void f(Button& button) -{ - button.doOnClick(&printCoordinates); -} -</pre> -</td> -</tr></tbody> -</table></div> -<p>The <code class="computeroutput">doOnClick</code> method is now functionally equivalent -to the <code class="computeroutput">connect</code> method of the <code class="computeroutput">onClick</code> -signal, but the details of the <code class="computeroutput">doOnClick</code> method can be -hidden in an implementation detail file.</p> -</div> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp62804320"></a>Example: Document-View</h3></div></div></div> -<p>Signals can be used to implement flexible Document-View - architectures. The document will contain a signal to which each of - the views can connect. The following <code class="computeroutput">Document</code> class - defines a simple text document that supports mulitple views. Note - that it stores a single signal to which all of the views will be - connected.</p> -<pre class="programlisting">class Document -{ -public: - typedef boost::signal<void (bool)> signal_t; - typedef boost::signals::connection connection_t; - -public: - Document() - {} - - connection_t connect(signal_t::slot_function_type subscriber) - { - return m_sig.connect(subscriber); - } - - void disconnect(connection_t subscriber) - { - subscriber.disconnect(); - } - - void append(const char* s) - { - m_text += s; - m_sig(true); - } - - const std::string& getText() const - { - return m_text; - } - -private: - signal_t m_sig; - std::string m_text; -};</pre> -<p>Next, we can define a <code class="computeroutput">View</code> base class from which - views can derive. This isn't strictly required, but it keeps the - Document-View logic separate from the logic itself. Note that the - constructor just connects the view to the document and the - destructor disconnects the view.</p> -<pre class="programlisting"> -class View -{ -public: - View(Document& m) - : m_document(m) - { - m_connection = m_document.connect(boost::bind(&View::refresh, this, _1)); - } - - virtual ~View() - { - m_document.disconnect(m_connection); - } - - virtual void refresh(bool bExtended) const = 0; - -protected: - Document& m_document; - -private: - Document::connection_t m_connection; -}; - </pre> -<p>Finally, we can begin to define views. The - following <code class="computeroutput">TextView</code> class provides a simple view of the - document text.</p> -<pre class="programlisting">class TextView : public View -{ -public: - TextView(Document& doc) - : View(doc) - {} - - virtual void refresh(bool bExtended) const - { - std::cout << "TextView: " << m_document.getText() << std::endl; - } -};</pre> -<p>Alternatively, we can provide a view of the document - translated into hex values using the <code class="computeroutput">HexView</code> - view:</p> -<pre class="programlisting">class HexView : public View -{ -public: - HexView(Document& doc) - : View(doc) - {} - - virtual void refresh(bool bExtended) const - { - const std::string& s = m_document.getText(); - - std::cout << "HexView:"; - - for (std::string::const_iterator it = s.begin(); it != s.end(); ++it) - std::cout << ' ' << std::hex << static_cast<int>(*it); - - std::cout << std::endl; - } -};</pre> -<p>To tie the example together, here is a - simple <code class="computeroutput">main</code> function that sets up two views and then - modifies the document:</p> -<pre class="programlisting">int main(int argc, char* argv[]) -{ - Document doc; - TextView v1(doc); - HexView v2(doc); - - doc.append(argc == 2 ? argv[1] : "Hello world!"); - return 0; -}</pre> -<p>The complete example source, contributed by Keith MacDonald, - is available in <a href="../../../libs/signals/example/doc_view.cpp" target="_top"><code class="computeroutput">libs/signals/example/doc_view.cpp</code></a>.</p> -</div> -<div class="section"> -<div class="titlepage"><div><div><h3 class="title"> -<a name="idp62818608"></a>Linking against the Signals library</h3></div></div></div> -<p>Part of the Boost.Signals library is compiled into a binary - library that must be linked into your application to use - Signals. Please refer to - the <a href="../../../more/getting_started.html" target="_top">Getting Started</a> - guide. You will need to link against the <code class="computeroutput">boost_signals</code> - library.</p> -</div> -</div> -<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> -<td align="left"></td> -<td align="right"><div class="copyright-footer">Copyright © 2001-2004 Douglas Gregor<p>Use, modification and distribution is subject to the Boost - Software License, Version 1.0. (See accompanying file - <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p> -</div></td> -</tr></table> -<hr> -<div class="spirit-nav"> -<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> -</div> -</body> -</html> |