<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
-<link rel="up" href="../signals.html" title="Chapter 34. Boost.Signals">
+<link rel="up" href="../signals.html" title="Chapter 35. Boost.Signals">
<link rel="prev" href="s05.html" title="Design Overview">
<link rel="next" href="tests.html" title="Testsuite">
</head>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idp609150320"></a>Design Rationale</h2></div></div></div>
+<a name="idp521445440"></a>Design Rationale</h2></div></div></div>
<div class="toc"><dl class="toc">
-<dt><span class="section"><a href="s06.html#idp609151296">Choice of Slot Definitions</a></span></dt>
-<dt><span class="section"><a href="s06.html#idp609161536">User-level Connection Management</a></span></dt>
-<dt><span class="section"><a href="s06.html#idp609180272">Combiner Interface</a></span></dt>
-<dt><span class="section"><a href="s06.html#idp609195360">Connection Interfaces: += operator</a></span></dt>
-<dt><span class="section"><a href="s06.html#idp609214736"><code class="computeroutput">trackable</code> rationale</a></span></dt>
-<dt><span class="section"><a href="s06.html#idp609234848">Comparison with other Signal/Slot implementations</a></span></dt>
+<dt><span class="section"><a href="s06.html#idp521446416">Choice of Slot Definitions</a></span></dt>
+<dt><span class="section"><a href="s06.html#idp521455808">User-level Connection Management</a></span></dt>
+<dt><span class="section"><a href="s06.html#idp521474624">Combiner Interface</a></span></dt>
+<dt><span class="section"><a href="s06.html#idp521490544">Connection Interfaces: += operator</a></span></dt>
+<dt><span class="section"><a href="s06.html#idp521509920"><code class="computeroutput">trackable</code> rationale</a></span></dt>
+<dt><span class="section"><a href="s06.html#idp521530032">Comparison with other Signal/Slot implementations</a></span></dt>
</dl></div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
-<a name="idp609151296"></a>Choice of Slot Definitions</h3></div></div></div>
+<a name="idp521446416"></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
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
-<a name="idp609161536"></a>User-level Connection Management</h3></div></div></div>
+<a name="idp521455808"></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
<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#idp944910256-bb">connect</a>(slot)</code> is
+ <code class="computeroutput">sig.<a class="link" href="../boost/signalN.html#idp718707248-bb">connect</a>(slot)</code> is
performed via
- <code class="computeroutput">sig.<a class="link" href="../boost/signalN.html#idp944926720-bb">disconnect</a>(slot)</code>. Internally,
+ <code class="computeroutput">sig.<a class="link" href="../boost/signalN.html#idp718723712-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
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#idp944926720-bb">disconnect</a></code> with an
+ <code class="computeroutput"><a class="link" href="../boost/signalN.html#idp718723712-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">
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
-<a name="idp609180272"></a>Combiner Interface</h3></div></div></div>
+<a name="idp521474624"></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
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
-<a name="idp609195360"></a>Connection Interfaces: += operator</h3></div></div></div>
+<a name="idp521490544"></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#idp944910256-bb">connect</a>(slot)</code>, but a
+ <code class="computeroutput">sig.<a class="link" href="../boost/signalN.html#idp718707248-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
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
-<a name="idp609214736"></a><code class="computeroutput">trackable</code> rationale</h3></div></div></div>
+<a name="idp521509920"></a><code class="computeroutput">trackable</code> rationale</h3></div></div></div>
<div class="toc"><dl class="toc">
-<dt><span class="section"><a href="s06.html#idp609219360"><code class="computeroutput">trackable</code> copying behavior</a></span></dt>
-<dt><span class="section"><a href="s06.html#idp609225520">Why derivation from <code class="computeroutput">trackable</code>?</a></span></dt>
+<dt><span class="section"><a href="s06.html#idp521514544"><code class="computeroutput">trackable</code> copying behavior</a></span></dt>
+<dt><span class="section"><a href="s06.html#idp521520704">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
participate in automatic connection management.</p>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
-<a name="idp609219360"></a><code class="computeroutput">trackable</code> copying behavior</h4></div></div></div>
+<a name="idp521514544"></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
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
-<a name="idp609225520"></a>Why derivation from <code class="computeroutput">trackable</code>?</h4></div></div></div>
+<a name="idp521520704"></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" style="list-style-type: disc; ">
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
-<a name="idp609234848"></a>Comparison with other Signal/Slot implementations</h3></div></div></div>
+<a name="idp521530032"></a>Comparison with other Signal/Slot implementations</h3></div></div></div>
<div class="toc"><dl class="toc">
-<dt><span class="section"><a href="s06.html#idp609235552">libsigc++</a></span></dt>
-<dt><span class="section"><a href="s06.html#idp609242896">.NET delegates</a></span></dt>
+<dt><span class="section"><a href="s06.html#idp521530736">libsigc++</a></span></dt>
+<dt><span class="section"><a href="s06.html#idp521538080">.NET delegates</a></span></dt>
</dl></div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
-<a name="idp609235552"></a>libsigc++</h4></div></div></div>
+<a name="idp521530736"></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
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
-<a name="idp609242896"></a>.NET delegates</h4></div></div></div>
+<a name="idp521538080"></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