|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r48979 - in sandbox/thread_safe_signals/trunk/libs/signals2/doc: . reference
From: fmhess_at_[hidden]
Date: 2008-09-26 17:10:42
Author: fmhess
Date: 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
New Revision: 48979
URL: http://svn.boost.org/trac/boost/changeset/48979
Log:
Partially updated docs to reflect API changes.
Added:
sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/dummy_mutex.xml (contents, props changed)
sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/lightweight_mutex.xml (contents, props changed)
Removed:
sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/auto_threaded.xml
sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/multi_threaded.xml
sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/single_threaded.xml
Text files modified:
sandbox/thread_safe_signals/trunk/libs/signals2/doc/Makefile | 5
sandbox/thread_safe_signals/trunk/libs/signals2/doc/introduction.xml | 27
sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/connection.xml | 6
sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/deconstruct_ptr.xml | 97 ++--
sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/last_value.xml | 218 +++++-----
sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/postconstructible.xml | 34
sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/predestructible.xml | 38 +-
sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/reference.xml | 12
sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/shared_connection_block.xml | 10
sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/signal_base.xml | 4
sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/signal_header.xml | 752 ++++++++++++++++++++--------------------
sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/slot.xml | 578 +++++++++++++++---------------
sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/slot_base.xml | 38 +-
sandbox/thread_safe_signals/trunk/libs/signals2/doc/signals.xml | 9
sandbox/thread_safe_signals/trunk/libs/signals2/doc/tutorial.xml | 109 ++--
15 files changed, 976 insertions(+), 961 deletions(-)
Modified: sandbox/thread_safe_signals/trunk/libs/signals2/doc/Makefile
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/Makefile (original)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/Makefile 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -11,18 +11,17 @@
signals.xml \
tests.xml \
tutorial.xml \
- reference/auto_threaded.xml \
reference/connection.xml \
reference/deconstruct_ptr.xml \
+ reference/dummy_mutex.xml \
reference/last_value.xml \
- reference/multi_threaded.xml \
+ reference/lightweight_mutex.xml \
reference/postconstructible.xml \
reference/predestructible.xml \
reference/reference.xml \
reference/shared_connection_block.xml \
reference/signal_base.xml \
reference/signal_header.xml \
- reference/single_threaded.xml \
reference/slot_base.xml \
reference/slot.xml
# reference/trackable.xml \
Modified: sandbox/thread_safe_signals/trunk/libs/signals2/doc/introduction.xml
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/introduction.xml (original)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/introduction.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -4,7 +4,7 @@
<section last-revision="$Date: 2007-06-12 14:01:23 -0400 (Tue, 12 Jun 2007) $">
<title>Introduction</title>
- <para>The Boost.Signals library is an implementation of a managed
+ <para>The Boost.Signals2 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
@@ -21,14 +21,14 @@
<para>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
+ slots and the return value of the signals. Boost.Signals2 allows the
user to specify the manner in which multiple return values are
combined.</para>
<section>
- <title>thread_safe_signals</title>
+ <title>Signals2 (formerly known as thread_safe_signals)</title>
<para>This documentation describes a thread-safe variant of the
- official Boost.Signals library. There have been some changes to
+ orignal Boost.Signals library. There have been some changes to
the interface to support thread-safety, mostly with respect to
automatic connection management. This implementation was written by
Frank Mori Hess. Acknowledgements are also due to Timmo Stange, Peter
@@ -38,17 +38,20 @@
</section>
<section>
<title>Download</title>
- <para>The latest release is available from the <ulink url="http://www.boost-consulting.com/vault/index.php?&direction=0&order=&directory=thread_safe_signals">Boost vault</ulink>.
- The development version of the code is available in the sandbox of the
- <ulink url="http://svn.boost.org/trac/boost/wiki/BoostSubversion">Boost svn</ulink>.
- The files for thread_safe_signals are located in the <code>sandbox/thread_safe_signals</code>
- subdirectory and may be <ulink url="http://svn.boost.org/trac/boost/browser/sandbox/thread_safe_signals">
- browsed online</ulink> or checked out with the following command:
- <programlisting>svn co http://svn.boost.org/svn/boost/sandbox/thread_safe_signals thread_safe_signals</programlisting>
+ <para>
+ The latest release is available from the
+ <ulink url="http://www.boost-consulting.com/vault/index.php?&direction=0&order=&directory=thread_safe_signals">
+ Boost vault</ulink>.
+ The development version of the code is available in the sandbox of the
+ <ulink url="http://svn.boost.org/trac/boost/wiki/BoostSubversion">Boost svn</ulink>.
+ The files for thread_safe_signals are located in the <code>sandbox/thread_safe_signals</code>
+ subdirectory and may be <ulink url="http://svn.boost.org/trac/boost/browser/sandbox/thread_safe_signals">
+ browsed online</ulink> or the trunk checked out with the following command:
+ <programlisting>svn co http://svn.boost.org/svn/boost/sandbox/thread_safe_signals/trunk thread_safe_signals</programlisting>
</para>
<para>
The current version of this document should be available
- <ulink url="http://www.comedi.org/projects/thread_safe_signals/libs/thread_safe_signals/doc/html/index.html">online</ulink>.
+ <ulink url="http://www.comedi.org/projects/thread_safe_signals/libs/signals2/doc/html/index.html">online</ulink>.
</para>
</section>
</section>
\ No newline at end of file
Deleted: sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/auto_threaded.xml
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/auto_threaded.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
+++ (empty file)
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<header name="boost/signals/auto_threaded.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
- <using-namespace name="boost"/>
- <using-namespace name="boost::signalslib"/>
- <namespace name="boost">
- <namespace name="signalslib">
- <class name="auto_threaded">
- <purpose>Automatically enabled/disabled thread-safety for a signal.</purpose>
-
- <description>
- <para>The <code>auto_threaded</code> class will produce a thread-safe signal
- class when used as a signal's <code>ThreadingModel</code> template parameter if and only if boost
- has detected thread support in the compiler's current
- translation mode. The header file <code>boost/config.hpp</code>
- defines the macro BOOST_HAS_THREADS when boost detects threading support.
- The user may globally disable thread support
- in boost by defining BOOST_DISABLE_THREADS before any boost header files are included.
- </para>
- <para>When in thread-safe mode, the <code>auto_threaded</code> class uses a
- header-only mutex implementation. Thus, it has no dependence on the boost.threads
- library. If you are already using boost.threads, you may prefer to use the
- <classname>boost::signalslib::multi_threaded</classname> <code>ThreadingModel</code>, which uses a
- mutex class provided by boost.threads.
- </para>
- <para>You may wish to use a thread-unsafe signal in a multi-threaded program, if
- the signal is only used by a single thread. In that case, you may prefer to
- use the <classname>boost::signalslib::single_threaded</classname> class as your <code>ThreadingModel</code>.
- </para>
- </description>
- </class>
- </namespace>
- </namespace>
-</header>
Modified: sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/connection.xml
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/connection.xml (original)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/connection.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<header name="boost/signals/connection.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
+<header name="boost/signals2/connection.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
<namespace name="boost">
- <namespace name="signalslib">
+ <namespace name="signals2">
<class name="connection">
<!-- Models LessThanComparable and EqualityComparable -->
<purpose>Query/disconnect a signal-slot connection.</purpose>
@@ -75,7 +75,7 @@
<description>
<para>
Queries if the connection is blocked. A connection may be blocked by creating a
- <classname>boost::signalslib::shared_connection_block</classname> object.
+ <classname>boost::signals2::shared_connection_block</classname> object.
</para>
</description>
<returns><para><code>true</code> if the associated slot is either disconnected or blocked, <code>false</code> otherwise.</para></returns>
Modified: sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/deconstruct_ptr.xml
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/deconstruct_ptr.xml (original)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/deconstruct_ptr.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -1,57 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<header name="boost/deconstruct_ptr.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
+<header name="boost/signals2/deconstruct_ptr.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
<using-namespace name="boost"/>
+ <using-namespace name="boost::signals2"/>
<namespace name="boost">
- <overloaded-function name="deconstruct_ptr">
- <signature>
- <template>
- <template-type-parameter name="T"/>
- </template>
- <type>shared_ptr<T></type>
- <parameter name="pointer"><paramtype>T*</paramtype></parameter>
- </signature>
- <signature>
- <template>
- <template-type-parameter name="T"/>
- <template-type-parameter name="D"/>
- </template>
- <type>shared_ptr<T></type>
- <parameter name="pointer"><paramtype>T*</paramtype></parameter>
- <parameter name="deleter"><paramtype>D</paramtype></parameter>
- </signature>
+ <namespace name="signals2">
+ <overloaded-function name="deconstruct_ptr">
+ <signature>
+ <template>
+ <template-type-parameter name="T"/>
+ </template>
+ <type>shared_ptr<T></type>
+ <parameter name="pointer"><paramtype>T*</paramtype></parameter>
+ </signature>
+ <signature>
+ <template>
+ <template-type-parameter name="T"/>
+ <template-type-parameter name="D"/>
+ </template>
+ <type>shared_ptr<T></type>
+ <parameter name="pointer"><paramtype>T*</paramtype></parameter>
+ <parameter name="deleter"><paramtype>D</paramtype></parameter>
+ </signature>
- <purpose>Create a <code>shared_ptr</code> which supports post-constructors and pre-destructors.</purpose>
+ <purpose>Create a <code>shared_ptr</code> which supports post-constructors and pre-destructors.</purpose>
- <effects><para>Creates a <code>shared_ptr<T></code> by passing the <code>pointer</code> and
- <code>deleter</code> parameters to the <code>shared_ptr</code> constructor. If no
- <code>deleter</code> is specified, then <classname>predestructing_deleter</classname> is
- used as the default. If <code>T</code> is derived from <classname>postconstructible</classname>
- (and <code>pointer</code> is not a null pointer),
- then <code>pointer->postconstruct()</code> will be called after the <code>shared_ptr</code> is constructed.</para>
- </effects>
- <returns><para>A <code>shared_ptr<T></code> owning <code>pointer</code>.</para></returns>
- </overloaded-function>
-
- <class name="predestructing_deleter">
- <template>
- <template-type-parameter name="T"/>
- </template>
- <method name="operator()" cv="const">
- <type>void</type>
- <parameter name="pointer"><paramtype>const T *</paramtype>
- </parameter>
- <effects>
- <para>Calls <code>pointer-><methodname alt="predestructible::predestruct">predestruct</methodname>()</code>
- if <code>T</code> is derived from
- <classname>predestructible</classname>. Then <code>pointer</code> is deleted using
- <functionname>checked_delete</functionname>.
- </para>
+ <effects><para>Creates a <code>shared_ptr<T></code> by passing the <code>pointer</code> and
+ <code>deleter</code> parameters to the <code>shared_ptr</code> constructor. If no
+ <code>deleter</code> is specified, then <classname>predestructing_deleter</classname> is
+ used as the default. If <code>T</code> is derived from <classname>postconstructible</classname>
+ (and <code>pointer</code> is not a null pointer),
+ then <code>pointer->postconstruct()</code> will be called after the <code>shared_ptr</code> is constructed.</para>
</effects>
- </method>
- <purpose>Predestruct object if it is predestructible, then delete.
- </purpose>
- </class>
+ <returns><para>A <code>shared_ptr<T></code> owning <code>pointer</code>.</para></returns>
+ </overloaded-function>
+
+ <class name="predestructing_deleter">
+ <template>
+ <template-type-parameter name="T"/>
+ </template>
+ <method name="operator()" cv="const">
+ <type>void</type>
+ <parameter name="pointer"><paramtype>const T *</paramtype>
+ </parameter>
+ <effects>
+ <para>Calls <code>pointer-><methodname alt="predestructible::predestruct">predestruct</methodname>()</code>
+ if <code>T</code> is derived from
+ <classname>predestructible</classname>. Then <code>pointer</code> is deleted using
+ <functionname>checked_delete</functionname>.
+ </para>
+ </effects>
+ </method>
+ <purpose>Predestruct object if it is predestructible, then delete.
+ </purpose>
+ </class>
+ </namespace>
</namespace>
</header>
\ No newline at end of file
Added: sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/dummy_mutex.xml
==============================================================================
--- (empty file)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/dummy_mutex.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
+ "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
+<header name="boost/signals/single_threaded.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
+ <using-namespace name="boost"/>
+ <using-namespace name="boost::signals2"/>
+ <namespace name="boost">
+ <namespace name="signals2">
+ <class name="dummy_mutex">
+ <inherit access="public">
+ <type><classname>noncopyable</classname></type>
+ </inherit>
+ <purpose>Fake mutex which does nothing.</purpose>
+ <description>
+ <para>You may wish to use the <code>dummy_mutex</code> class for the <code>Mutex</code>
+ template type of your signals if you are not concerned about thread safety.
+ This may give slightly faster
+ performance, since <code>dummy_mutex</code> performs no actual locking.
+ </para>
+ </description>
+ <access name="public">
+ <method name="lock">
+ <type>void</type>
+ <description>
+ <para>No effect.
+ </para>
+ </description>
+ </method>
+ <method name="try_lock">
+ <type>bool</type>
+ <description>
+ <para>No effect.
+ </para>
+ </description>
+ <returns><para><code>true</code>.</para></returns>
+ </method>
+ <method name="unlock">
+ <type>void</type>
+ <description>
+ <para>No effect.
+ </para>
+ </description>
+ </method>
+ </access>
+ </class>
+ </namespace>
+ </namespace>
+</header>
Modified: sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/last_value.xml
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/last_value.xml (original)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/last_value.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -1,115 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<header name="boost/last_value.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
+<header name="boost/signals2/last_value.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
<namespace name="boost">
- <class name="last_value">
- <template>
- <template-type-parameter name="T"/>
- </template>
-
- <purpose>Evaluate an <conceptname>InputIterator</conceptname> sequence and return the
- last value in the sequence.</purpose>
-
- <typedef name="result_type"><type>T</type></typedef>
-
- <method-group name="invocation">
- <method name="operator()" cv="const">
- <template>
- <template-type-parameter name="InputIterator"/>
- </template>
- <type>result_type</type>
- <parameter name="first">
- <paramtype>InputIterator</paramtype>
- </parameter>
- <parameter name="last">
- <paramtype>InputIterator</paramtype>
- </parameter>
-
- <effects><para>Attempts to dereference every iterator in the sequence <computeroutput>[first, last)</computeroutput>.
- Swallows <classname>boost::expired_slot</classname> exceptions thrown by failed dereference attempts.</para></effects>
- <returns><para>The result of the last successful iterator dereference.</para></returns>
- <throws><para><classname>boost::no_slots_error</classname> if no iterators were successfully dereferenced,
- unless the template type of <code>last_value</code> is <code>void</code> or <code>optional<T></code>.</para></throws>
+ <namespace name="signals2">
+ <class name="last_value">
+ <template>
+ <template-type-parameter name="T"/>
+ </template>
+
+ <purpose>Evaluate an <conceptname>InputIterator</conceptname> sequence and return the
+ last value in the sequence.</purpose>
+
+ <typedef name="result_type"><type>T</type></typedef>
+
+ <method-group name="invocation">
+ <method name="operator()" cv="const">
+ <template>
+ <template-type-parameter name="InputIterator"/>
+ </template>
+ <type>result_type</type>
+ <parameter name="first">
+ <paramtype>InputIterator</paramtype>
+ </parameter>
+ <parameter name="last">
+ <paramtype>InputIterator</paramtype>
+ </parameter>
+
+ <effects><para>Attempts to dereference every iterator in the sequence <computeroutput>[first, last)</computeroutput>.
+ Swallows <classname>expired_slot</classname> exceptions thrown by failed dereference attempts.</para></effects>
+ <returns><para>The result of the last successful iterator dereference.</para></returns>
+ <throws><para><classname>no_slots_error</classname> if no iterators were successfully dereferenced,
+ unless the template type of <code>last_value</code> is <code>void</code> or <code>optional<T></code>.</para></throws>
+ </method>
+ </method-group>
+ </class>
+
+ <class-specialization name="last_value">
+ <template/>
+ <specialization>
+ <template-arg>void</template-arg>
+ </specialization>
+
+ <purpose>Evaluate an InputIterator sequence.</purpose>
+
+ <typedef name="result_type">
+ <type><emphasis>unspecified</emphasis></type>
+ </typedef>
+
+ <method-group name="invocation">
+ <method name="operator()" cv="const">
+ <template>
+ <template-type-parameter name="InputIterator"/>
+ </template>
+ <type>result_type</type>
+ <parameter name="first">
+ <paramtype>InputIterator</paramtype>
+ </parameter>
+ <parameter name="last">
+ <paramtype>InputIterator</paramtype>
+ </parameter>
+
+ <effects><para>Attempts to dereference every iterator in the sequence <computeroutput>[first, last)</computeroutput>.
+ Swallows <classname>expired_slot</classname> exceptions thrown by failed dereference attempts.</para></effects>
+ </method>
+ </method-group>
+ </class-specialization>
+
+ <class-specialization name="last_value">
+ <template>
+ <template-type-parameter name="T"/>
+ </template>
+ <specialization>
+ <template-arg>optional<T></template-arg>
+ </specialization>
+
+ <purpose>Evaluate an InputIterator sequence.</purpose>
+
+ <typedef name="result_type">
+ <type>optional<T></type>
+ </typedef>
+
+ <method-group name="invocation">
+ <method name="operator()" cv="const">
+ <template>
+ <template-type-parameter name="InputIterator"/>
+ </template>
+ <type>result_type</type>
+ <parameter name="first">
+ <paramtype>InputIterator</paramtype>
+ </parameter>
+ <parameter name="last">
+ <paramtype>InputIterator</paramtype>
+ </parameter>
+
+ <effects><para>Attempts to dereference every iterator in the sequence <computeroutput>[first, last)</computeroutput>.
+ Swallows <classname>expired_slot</classname> exceptions thrown by failed dereference attempts.</para></effects>
+ <returns><para>An <code>optional<T></code> containing the result of the last successful iterator dereference,
+ or an uninitalized <code>optional<T></code> if no iterators were successfully dereferenced.</para></returns>
+ </method>
+ </method-group>
+ </class-specialization>
+
+ <class name="no_slots_error">
+ <inherit access="public"><classname>std::exception</classname></inherit>
+ <purpose>Indicates a combiner was unable to synthesize a return value.</purpose>
+ <description>The <code>no_slots_error</code> exception may be thrown by <classname>last_value</classname>
+ when it is run but unable to obtain any results from its input iterators.
+ </description>
+ <method name="what" cv="const" specifiers="virtual">
+ <type>const char * </type>
</method>
- </method-group>
- </class>
-
- <class-specialization name="last_value">
- <template/>
- <specialization>
- <template-arg>void</template-arg>
- </specialization>
-
- <purpose>Evaluate an InputIterator sequence.</purpose>
-
- <typedef name="result_type">
- <type><emphasis>unspecified</emphasis></type>
- </typedef>
-
- <method-group name="invocation">
- <method name="operator()" cv="const">
- <template>
- <template-type-parameter name="InputIterator"/>
- </template>
- <type>result_type</type>
- <parameter name="first">
- <paramtype>InputIterator</paramtype>
- </parameter>
- <parameter name="last">
- <paramtype>InputIterator</paramtype>
- </parameter>
-
- <effects><para>Attempts to dereference every iterator in the sequence <computeroutput>[first, last)</computeroutput>.
- Swallows <classname>boost::expired_slot</classname> exceptions thrown by failed dereference attempts.</para></effects>
- </method>
- </method-group>
- </class-specialization>
-
- <class-specialization name="last_value">
- <template>
- <template-type-parameter name="T"/>
- </template>
- <specialization>
- <template-arg>optional<T></template-arg>
- </specialization>
-
- <purpose>Evaluate an InputIterator sequence.</purpose>
-
- <typedef name="result_type">
- <type>optional<T></type>
- </typedef>
-
- <method-group name="invocation">
- <method name="operator()" cv="const">
- <template>
- <template-type-parameter name="InputIterator"/>
- </template>
- <type>result_type</type>
- <parameter name="first">
- <paramtype>InputIterator</paramtype>
- </parameter>
- <parameter name="last">
- <paramtype>InputIterator</paramtype>
- </parameter>
-
- <effects><para>Attempts to dereference every iterator in the sequence <computeroutput>[first, last)</computeroutput>.
- Swallows <classname>boost::expired_slot</classname> exceptions thrown by failed dereference attempts.</para></effects>
- <returns><para>An <code>optional<T></code> containing the result of the last successful iterator dereference,
- or an uninitalized <code>optional<T></code> if no iterators were successfully dereferenced.</para></returns>
- </method>
- </method-group>
- </class-specialization>
-
- <class name="no_slots_error">
- <inherit access="public"><classname>std::exception</classname></inherit>
- <purpose>Indicates a combiner was unable to synthesize a return value.</purpose>
- <description>The <code>no_slots_error</code> exception may be thrown by <classname>last_value</classname>
- when it is run but unable to obtain any results from its input iterators.
- </description>
- <method name="what" cv="const" specifiers="virtual">
- <type>const char * </type>
- </method>
- </class>
+ </class>
+ </namespace>
</namespace>
</header>
Added: sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/lightweight_mutex.xml
==============================================================================
--- (empty file)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/lightweight_mutex.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
+ "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
+<header name="boost/signals2/lightweight_mutex.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
+ <using-namespace name="boost"/>
+ <using-namespace name="boost::signals2"/>
+ <namespace name="boost">
+ <namespace name="signals2">
+ <class name="lightweight_mutex">
+ <purpose>A header-only mutex which implements the Lockable concept of Boost.Thread.</purpose>
+
+ <description>
+ <para>
+ The <code>lightweight mutex</code> class implements the <code>Lockable</code>
+ concept of Boost.Thread, and is the default <code>Mutex</code> type for signals.
+ If boost has detected thread support in the compiler's current
+ translation mode, lightweight mutex will map to a CRITICAL_SECTION on Windows
+ or a pthread_mutex on POSIX. If thread support is not detected, lightweight_mutex
+ will behave similarly to a <classname>dummy_mutex</classname>.
+ The header file <code>boost/config.hpp</code>
+ defines the macro BOOST_HAS_THREADS when boost detects threading support.
+ The user may globally disable thread support
+ in boost by defining BOOST_DISABLE_THREADS before any boost header files are included.
+ </para>
+ <para>
+ If you are already using the Boost.Thread library, you may prefer to use its
+ <classname>boost::mutex</classname> class as the mutex type for your signals.
+ </para>
+ <para>
+ You may wish to use a thread-unsafe signal in a multi-threaded program, if
+ the signal is only used by a single thread. In that case, you may prefer to
+ use the <classname>dummy_mutex</classname> class as the <code>Mutex</code>
+ template type for your signal.
+ </para>
+ </description>
+ <access name="public">
+ <method name="lock">
+ <type>void</type>
+ <description>
+ <para>Locks the mutex.
+ </para>
+ </description>
+ </method>
+ <method name="try_lock">
+ <type>bool</type>
+ <description>
+ <para>Makes a non-blocking attempt to lock the mutex.
+ </para>
+ </description>
+ <returns><para><code>true</code> on success.</para></returns>
+ </method>
+ <method name="unlock">
+ <type>void</type>
+ <description>
+ <para>Unlocks the mutex.
+ </para>
+ </description>
+ </method>
+ </access>
+ </class>
+ </namespace>
+ </namespace>
+</header>
Deleted: sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/multi_threaded.xml
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/multi_threaded.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
+++ (empty file)
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<header name="boost/signals/multi_threaded.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
- <using-namespace name="boost"/>
- <using-namespace name="boost::signalslib"/>
- <namespace name="boost">
- <namespace name="signalslib">
- <class name="multi_threaded">
- <purpose>Thread-safety for a signal, using Boost.Threads.</purpose>
-
- <description>
- <para>The <code>multi_threaded</code> class will produce a thread-safe signal
- class when used as the signal's <code>ThreadingModel</code> template parameter.
- The <code>multi_threaded</code> class depends on the boost.threads library.
- If you include the boost/signals/multi_threaded.hpp header file, you will
- be required to link your code to the boost.threads binary library. Thus
- boost/signals/multi_threaded.hpp is not automatically included when
- you include boost/signal.hpp, and must be included separately if you wish
- to use <code>multi_threaded</code>.
- </para>
- </description>
- </class>
- </namespace>
- </namespace>
-</header>
Modified: sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/postconstructible.xml
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/postconstructible.xml (original)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/postconstructible.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -1,22 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<header name="boost/postconstructible.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
+<header name="boost/signals2/postconstructible.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
<using-namespace name="boost"/>
<namespace name="boost">
- <class name="postconstructible">
- <purpose>A base class for classes with postconstructors, used in conjunction with <functionname>deconstruct_ptr</functionname>().
- </purpose>
- <access name="protected">
- <destructor specifiers="virtual"/>
- <method name="postconstruct" specifiers="virtual">
- <type>void</type>
- <notes><para>Override <code>postconstruct()</code> with your class's post-constructor.
- It will be called automatically if you manage your objects with <code>shared_ptr</code>s
- created with <functionname>deconstruct_ptr()</functionname>.
- </para></notes>
- </method>
- </access>
- </class>
+ <namespace name="signals2">
+ <class name="postconstructible">
+ <purpose>A base class for classes with postconstructors, used in conjunction with <functionname>deconstruct_ptr</functionname>().
+ </purpose>
+ <access name="protected">
+ <destructor specifiers="virtual"/>
+ <method name="postconstruct" specifiers="virtual">
+ <type>void</type>
+ <notes><para>Override <code>postconstruct()</code> with your class's post-constructor.
+ It will be called automatically if you manage your objects with <code>shared_ptr</code>s
+ created with <functionname>deconstruct_ptr()</functionname>.
+ </para></notes>
+ </method>
+ </access>
+ </class>
+ </namespace>
</namespace>
-</header>
\ No newline at end of file
+</header>
Modified: sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/predestructible.xml
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/predestructible.xml (original)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/predestructible.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -1,25 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<header name="boost/predestructible.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
+<header name="boost/signals2/predestructible.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
<using-namespace name="boost"/>
<namespace name="boost">
- <class name="predestructible">
- <purpose>A base class for classes with predestructors, used in conjunction with <functionname>deconstruct_ptr</functionname>().
- </purpose>
- <access name="protected">
- <destructor specifiers="virtual"/>
- </access>
- <access name="public">
- <method name="predestruct" specifiers="virtual">
- <type>void</type>
- <notes><para>Override <code>predestruct()</code> with your class' pre-destructor.
- It will be called automatically if you manage your objects with <code>shared_ptr</code>s
- that use <classname>predestructing_deleter</classname> as their deleter, such as
- those created with <functionname>deconstruct_ptr()</functionname></para>
- </notes>
- </method>
- </access>
- </class>
+ <namespace name="signals2">
+ <class name="predestructible">
+ <purpose>A base class for classes with predestructors, used in conjunction with <functionname>deconstruct_ptr</functionname>().
+ </purpose>
+ <access name="protected">
+ <destructor specifiers="virtual"/>
+ <method name="predestruct" specifiers="virtual">
+ <type>void</type>
+ <notes><para>Override <code>predestruct()</code> with your class' pre-destructor.
+ It will be called automatically if you manage your objects with <code>shared_ptr</code>s
+ that use <classname>predestructing_deleter</classname> as their deleter, such as
+ those created with <functionname>deconstruct_ptr()</functionname></para>
+ </notes>
+ </method>
+ </access>
+ </class>
+ </namespace>
</namespace>
-</header>
\ No newline at end of file
+</header>
Modified: sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/reference.xml
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/reference.xml (original)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/reference.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -3,6 +3,13 @@
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
<library-reference xmlns:xi="http://www.w3.org/2001/XInclude"
last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
+ <header name="boost/signals2.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
+ <para>
+ Including the "boost/signals2.hpp" header pulls in all the other headers of the Signals2
+ library. It is provided as a convenience.
+ </para>
+ </header>
+
<xi:include href="signal_header.xml"/>
<xi:include href="signal_base.xml"/>
<xi:include href="slot.xml"/>
@@ -10,9 +17,8 @@
<xi:include href="connection.xml"/>
<xi:include href="shared_connection_block.xml"/>
<xi:include href="last_value.xml"/>
- <xi:include href="auto_threaded.xml"/>
- <xi:include href="single_threaded.xml"/>
- <xi:include href="multi_threaded.xml"/>
+ <xi:include href="lightweight_mutex.xml"/>
+ <xi:include href="dummy_mutex.xml"/>
<xi:include href="deconstruct_ptr.xml"/>
<xi:include href="postconstructible.xml"/>
<xi:include href="predestructible.xml"/>
Modified: sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/shared_connection_block.xml
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/shared_connection_block.xml (original)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/shared_connection_block.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<header name="boost/signals/shared_connection_block.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
+<header name="boost/signals2/shared_connection_block.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
<using-namespace name="boost"/>
- <using-namespace name="boost::signalslib"/>
- <using-class name="boost::signalslib::connection"/>
+ <using-namespace name="boost::signals2"/>
+ <using-class name="boost::signals2::connection"/>
<namespace name="boost">
- <namespace name="signalslib">
+ <namespace name="signals2">
<class name="shared_connection_block">
<purpose>Blocks a connection between a signal and a slot.</purpose>
@@ -38,7 +38,7 @@
<constructor>
<parameter name="conn">
- <paramtype>boost::signalslib::connection &</paramtype>
+ <paramtype>boost::signals2::connection &</paramtype>
</parameter>
<effects>
Modified: sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/signal_base.xml
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/signal_base.xml (original)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/signal_base.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<header name="boost/signals/signal_base.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
+<header name="boost/signals2/signal_base.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
<namespace name="boost">
- <namespace name="signalslib">
+ <namespace name="signals2">
<class name="signal_base">
<inherit access="public">
Modified: sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/signal_header.xml
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/signal_header.xml (original)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/signal_header.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -1,390 +1,390 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<header name="boost/signal.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
+<header name="boost/signals2/signal.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
<using-namespace name="boost"/>
- <using-namespace name="boost::signalslib"/>
+ <using-namespace name="boost::signals2"/>
<namespace name="boost">
- <namespace name="signalslib">
+ <namespace name="signals2">
<enum name="connect_position">
<enumvalue name="at_front"/>
<enumvalue name="at_back"/>
</enum>
- </namespace>
- <class name="signalN">
- <template>
- <template-type-parameter name="R"/>
- <template-type-parameter name="T1"/>
- <template-type-parameter name="T2"/>
- <template-varargs/>
- <template-type-parameter name="TN"/>
- <template-type-parameter name="Combiner">
- <default><classname>last_value</classname><R></default>
- </template-type-parameter>
- <template-type-parameter name="Group">
- <default>int</default>
- </template-type-parameter>
- <template-type-parameter name="GroupCompare">
- <default><classname>std::less</classname><Group></default>
- </template-type-parameter>
- <template-type-parameter name="SlotFunction">
- <default><classname>functionN</classname><R, T1, T2, ..., TN></default>
- </template-type-parameter>
- <template-type-parameter name="ThreadingModel">
- <default><classname>signalslib::auto_threaded</classname></default>
- </template-type-parameter>
- </template>
- <inherit access="public">
- <type><classname>signal_base</classname></type>
- </inherit>
-
- <purpose>Set of safe multicast callback types.</purpose>
-
- <description>
- <para>The class template <classname>signalN</classname> 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
- <classname>signalN</classname> will be described, where N
- represents the number of function parameters.</para>
- </description>
-
- <typedef name="result_type">
- <type>typename Combiner::result_type</type>
- </typedef>
- <typedef name="combiner_type"><type>Combiner</type></typedef>
- <typedef name="group_type"><type>Group</type></typedef>
- <typedef name="group_compare_type"><type>GroupCompare</type></typedef>
- <typedef name="slot_function_type"><type>SlotFunction</type></typedef>
- <typedef name="slot_type">
- <type><classname>slotN</classname><R, T1, T2, ..., TN, SlotFunction></type>
- </typedef>
- <typedef name="slot_result_type">
- <type><emphasis>unspecified</emphasis></type>
- </typedef>
- <typedef name="slot_call_iterator">
- <type><emphasis>unspecified</emphasis></type>
- </typedef>
- <typedef name="argument_type">
- <type>T1</type>
- <purpose>If N == 1</purpose>
- </typedef>
- <typedef name="first_argument_type">
- <type>T1</type>
- <purpose>If N == 2</purpose>
- </typedef>
- <typedef name="second_argument_type">
- <type>T2</type>
- <purpose>If N == 2</purpose>
- </typedef>
- <typedef name="arg1_type"><type>T1</type></typedef>
- <typedef name="arg2_type"><type>T2</type></typedef>
- <typedef name="..."><type/></typedef>
- <typedef name="argN_type"><type>TN</type></typedef>
-
- <static-constant name="arity">
- <type>int</type>
- <default>N</default>
- </static-constant>
-
- <constructor>
- <parameter name="combiner">
- <paramtype>const combiner_type&</paramtype>
- <default>combiner_type()</default>
- </parameter>
- <parameter name="compare">
- <paramtype>const group_compare_type&</paramtype>
- <default>group_compare_type()</default>
- </parameter>
-
- <effects><para>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.</para></effects>
-
- <postconditions><para><computeroutput>this-><methodname>empty</methodname>()</computeroutput></para></postconditions>
- </constructor>
-
- <destructor>
- <effects><para>Disconnects all slots connected to <computeroutput>*this</computeroutput>.</para></effects>
- </destructor>
-
- <method-group name="connection management">
- <overloaded-method name="connect">
- <signature>
- <type><classname>signalslib::connection</classname></type>
- <parameter name="slot">
- <paramtype>const slot_type&</paramtype>
- </parameter>
- <parameter name="at">
- <paramtype>signalslib::connect_position</paramtype>
- <default>signalslib::at_back</default>
- </parameter>
- </signature>
-
- <signature>
- <type><classname>signalslib::connection</classname></type>
- <parameter name="group">
- <paramtype>const group_type&</paramtype>
- </parameter>
- <parameter name="slot">
- <paramtype>const slot_type&</paramtype>
- </parameter>
- <parameter name="at">
- <paramtype>signalslib::connect_position</paramtype>
- <default>signalslib::at_back</default>
- </parameter>
- </signature>
-
- <effects><para>Connects the signal this to the incoming
- slot. If the slot is inactive, i.e., any of the slots's tracked
- objects have been destroyed, then the
- call to connect is a no-op. If the second version of
- <computeroutput>connect</computeroutput> is invoked, the
- slot is associated with the given group. The <code>at</code>
- parameter specifies where the slot should be connected:
- <code>at_front</code> indicates that the slot will be
- connected at the front of the list or group of slots and
- <code>at_back</code> indicates that the slot will be
- connected at the back of the list or group of
- slots.</para></effects>
-
- <returns><para>A
- <computeroutput><classname>signalslib::connection</classname></computeroutput>
- object that references the newly-created connection between
- the signal and the slot; if the slot is inactive, returns a
- disconnected connection.</para></returns>
-
- <throws><para>This routine meets the strong exception guarantee,
- where any exception thrown will cause the slot to not be
- connected to the signal.</para></throws>
-
- <complexity><para>Constant time when connecting a slot
- without a group name or logarithmic in the number of groups
- when connecting to a particular
- group.</para></complexity>
-
- <notes><para>It is unspecified whether connecting a slot while the
- signal is calling will result in the slot being called
- immediately.</para></notes>
- </overloaded-method>
+ <class name="signalN">
+ <template>
+ <template-type-parameter name="R"/>
+ <template-type-parameter name="T1"/>
+ <template-type-parameter name="T2"/>
+ <template-varargs/>
+ <template-type-parameter name="TN"/>
+ <template-type-parameter name="Combiner">
+ <default><classname>last_value</classname><R></default>
+ </template-type-parameter>
+ <template-type-parameter name="Group">
+ <default>int</default>
+ </template-type-parameter>
+ <template-type-parameter name="GroupCompare">
+ <default><classname>std::less</classname><Group></default>
+ </template-type-parameter>
+ <template-type-parameter name="SlotFunction">
+ <default><classname>functionN</classname><R, T1, T2, ..., TN></default>
+ </template-type-parameter>
+ <template-type-parameter name="Mutex">
+ <default><classname>lightweight_mutex</classname></default>
+ </template-type-parameter>
+ </template>
+ <inherit access="public">
+ <type><classname>signal_base</classname></type>
+ </inherit>
+
+ <purpose>Set of safe multicast callback types.</purpose>
+
+ <description>
+ <para>The class template <classname>signalN</classname> 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
+ <classname>signalN</classname> will be described, where N
+ represents the number of function parameters.</para>
+ </description>
+
+ <typedef name="result_type">
+ <type>typename Combiner::result_type</type>
+ </typedef>
+ <typedef name="combiner_type"><type>Combiner</type></typedef>
+ <typedef name="group_type"><type>Group</type></typedef>
+ <typedef name="group_compare_type"><type>GroupCompare</type></typedef>
+ <typedef name="slot_function_type"><type>SlotFunction</type></typedef>
+ <typedef name="slot_type">
+ <type><classname>slotN</classname><R, T1, T2, ..., TN, SlotFunction></type>
+ </typedef>
+ <typedef name="slot_result_type">
+ <type><emphasis>unspecified</emphasis></type>
+ </typedef>
+ <typedef name="slot_call_iterator">
+ <type><emphasis>unspecified</emphasis></type>
+ </typedef>
+ <typedef name="argument_type">
+ <type>T1</type>
+ <purpose>If N == 1</purpose>
+ </typedef>
+ <typedef name="first_argument_type">
+ <type>T1</type>
+ <purpose>If N == 2</purpose>
+ </typedef>
+ <typedef name="second_argument_type">
+ <type>T2</type>
+ <purpose>If N == 2</purpose>
+ </typedef>
+ <typedef name="arg1_type"><type>T1</type></typedef>
+ <typedef name="arg2_type"><type>T2</type></typedef>
+ <typedef name="..."><type/></typedef>
+ <typedef name="argN_type"><type>TN</type></typedef>
+
+ <static-constant name="arity">
+ <type>int</type>
+ <default>N</default>
+ </static-constant>
+
+ <constructor>
+ <parameter name="combiner">
+ <paramtype>const combiner_type&</paramtype>
+ <default>combiner_type()</default>
+ </parameter>
+ <parameter name="compare">
+ <paramtype>const group_compare_type&</paramtype>
+ <default>group_compare_type()</default>
+ </parameter>
+
+ <effects><para>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.</para></effects>
+
+ <postconditions><para><computeroutput>this-><methodname>empty</methodname>()</computeroutput></para></postconditions>
+ </constructor>
+
+ <destructor>
+ <effects><para>Disconnects all slots connected to <computeroutput>*this</computeroutput>.</para></effects>
+ </destructor>
+
+ <method-group name="connection management">
+ <overloaded-method name="connect">
+ <signature>
+ <type><classname>connection</classname></type>
+ <parameter name="slot">
+ <paramtype>const slot_type&</paramtype>
+ </parameter>
+ <parameter name="at">
+ <paramtype>connect_position</paramtype>
+ <default>at_back</default>
+ </parameter>
+ </signature>
+
+ <signature>
+ <type><classname>connection</classname></type>
+ <parameter name="group">
+ <paramtype>const group_type&</paramtype>
+ </parameter>
+ <parameter name="slot">
+ <paramtype>const slot_type&</paramtype>
+ </parameter>
+ <parameter name="at">
+ <paramtype>connect_position</paramtype>
+ <default>at_back</default>
+ </parameter>
+ </signature>
+
+ <effects><para>Connects the signal this to the incoming
+ slot. If the slot is inactive, i.e., any of the slots's tracked
+ objects have been destroyed, then the
+ call to connect is a no-op. If the second version of
+ <computeroutput>connect</computeroutput> is invoked, the
+ slot is associated with the given group. The <code>at</code>
+ parameter specifies where the slot should be connected:
+ <code>at_front</code> indicates that the slot will be
+ connected at the front of the list or group of slots and
+ <code>at_back</code> indicates that the slot will be
+ connected at the back of the list or group of
+ slots.</para></effects>
+
+ <returns><para>A
+ <computeroutput><classname>connection</classname></computeroutput>
+ object that references the newly-created connection between
+ the signal and the slot; if the slot is inactive, returns a
+ disconnected connection.</para></returns>
+
+ <throws><para>This routine meets the strong exception guarantee,
+ where any exception thrown will cause the slot to not be
+ connected to the signal.</para></throws>
+
+ <complexity><para>Constant time when connecting a slot
+ without a group name or logarithmic in the number of groups
+ when connecting to a particular
+ group.</para></complexity>
+
+ <notes><para>It is unspecified whether connecting a slot while the
+ signal is calling will result in the slot being called
+ immediately.</para></notes>
+ </overloaded-method>
+
+ <overloaded-method name="disconnect">
+ <signature>
+ <type>void</type>
+ <parameter name="group">
+ <paramtype>const group_type&</paramtype>
+ </parameter>
+ </signature>
+ <signature>
+ <template>
+ <template-type-parameter name="Slot"/>
+ </template>
+ <type>void</type>
+ <parameter name="slot">
+ <paramtype>const Slot&</paramtype>
+ </parameter>
+ </signature>
+
+ <effects><para>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.</para></effects>
+
+ <throws><para>Will not throw unless a user destructor or
+ equality operator <code>==</code> throws. If either throws,
+ not all slots may be disconnected.</para></throws>
+
+ <complexity><para>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.</para></complexity>
+ </overloaded-method>
- <overloaded-method name="disconnect">
- <signature>
+ <method name="disconnect_all_slots">
<type>void</type>
- <parameter name="group">
- <paramtype>const group_type&</paramtype>
- </parameter>
- </signature>
- <signature>
- <template>
- <template-type-parameter name="Slot"/>
- </template>
+ <effects><para>Disconnects all slots connected to the signal.</para></effects>
+
+ <postconditions><para><computeroutput>this-><methodname>empty</methodname>()</computeroutput>.</para></postconditions>
+
+ <throws><para>If disconnecting a slot causes an exception to be
+ thrown, not all slots may be disconnected.</para></throws>
+
+ <complexity><para>Linear in the number of slots known to the
+ signal.</para></complexity>
+
+ <notes><para>May be called at any time within the lifetime of the
+ signal, including during calls to the signal's slots.</para></notes>
+ </method>
+
+ <method name="empty" cv="const">
+ <type>bool</type>
+ <returns><para><computeroutput>true</computeroutput> if no slots
+ are connected to the signal, and
+ <computeroutput>false</computeroutput> otherwise.</para></returns>
+
+ <throws><para>Will not throw.</para></throws>
+
+ <complexity><para>Linear in the number of slots known to the
+ signal.</para></complexity>
+
+ <rationale><para>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.</para></rationale>
+ </method>
+
+ <method name="num_slots" cv="const">
+ <type>std::size_t</type>
+ <returns><para>The number of slots connected to the signal</para></returns>
+
+ <throws><para>Will not throw.</para></throws>
+
+ <complexity><para>Linear in the number of slots known to the
+ signal.</para></complexity>
+
+ <rationale><para>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.</para></rationale>
+ </method>
+ </method-group>
+
+ <method-group name="invocation">
+ <overloaded-method name="operator()">
+ <signature>
+ <type>result_type</type>
+ <parameter name="a1"><paramtype>arg1_type</paramtype></parameter>
+ <parameter name="a2"><paramtype>arg2_type</paramtype></parameter>
+ <parameter><paramtype>...</paramtype></parameter>
+ <parameter name="aN"><paramtype>argN_type</paramtype></parameter>
+ </signature>
+
+ <signature cv="const">
+ <type>result_type</type>
+ <parameter name="a1"><paramtype>arg1_type</paramtype></parameter>
+ <parameter name="a2"><paramtype>arg2_type</paramtype></parameter>
+ <parameter><paramtype>...</paramtype></parameter>
+ <parameter name="aN"><paramtype>argN_type</paramtype></parameter>
+ </signature>
+
+ <effects><para>Invokes the combiner with a
+ <computeroutput>slot_call_iterator</computeroutput> range
+ [first, last) corresponding to the sequence of calls to the
+ slots connected to signal
+ <computeroutput>*this</computeroutput>. Dereferencing an
+ iterator in this range causes a slot call with the given set
+ of parameters <computeroutput>(a1, a2, ...,
+ aN)</computeroutput>, the result of which is returned from
+ the iterator dereference operation. Note, dereferencing
+ a slot iterator may throw a <classname>expired_slot</classname>
+ exception, if the slot has been disconnected via automatic
+ connection management. Combiners should simply swallow
+ such <classname>expired_slot</classname> exceptions and move
+ on to the next slot.</para></effects>
+
+ <returns><para>The result returned by the combiner.</para></returns>
+
+ <throws><para>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.</para></throws>
+
+ <notes><para>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.</para>
+
+ <para>The <computeroutput>const</computeroutput> version of
+ the function call operator will invoke the combiner as
+ <computeroutput>const</computeroutput>, whereas the
+ non-<computeroutput>const</computeroutput> version will
+ invoke the combiner as
+ non-<computeroutput>const</computeroutput>.</para>
+
+ <para>Calling the function call operator may throw an
+ exception if no slots are connected to the signal, depending
+ on the combiner used. The default combiner will not throw
+ for zero slots when the return type is <code>void</code> or
+ <classname>optional</classname><T>,
+ but will throw when the return type is any other type (because there is no
+ way to synthesize a return value).</para></notes>
+ </overloaded-method>
+ </method-group>
+
+ <method-group name="combiner access">
+ <method name="combiner" cv="const">
+ <type>combiner_type</type>
+
+ <returns><para>A copy of the stored combiner.</para></returns>
+ <throws><para>Will not throw.</para></throws>
+ </method>
+ <method name="set_combiner">
<type>void</type>
- <parameter name="slot">
- <paramtype>const Slot&</paramtype>
- </parameter>
- </signature>
-
- <effects><para>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.</para></effects>
-
- <throws><para>Will not throw unless a user destructor or
- equality operator <code>==</code> throws. If either throws,
- not all slots may be disconnected.</para></throws>
-
- <complexity><para>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.</para></complexity>
- </overloaded-method>
-
- <method name="disconnect_all_slots">
- <type>void</type>
- <effects><para>Disconnects all slots connected to the signal.</para></effects>
-
- <postconditions><para><computeroutput>this-><methodname>empty</methodname>()</computeroutput>.</para></postconditions>
-
- <throws><para>If disconnecting a slot causes an exception to be
- thrown, not all slots may be disconnected.</para></throws>
-
- <complexity><para>Linear in the number of slots known to the
- signal.</para></complexity>
-
- <notes><para>May be called at any time within the lifetime of the
- signal, including during calls to the signal's slots.</para></notes>
- </method>
-
- <method name="empty" cv="const">
- <type>bool</type>
- <returns><para><computeroutput>true</computeroutput> if no slots
- are connected to the signal, and
- <computeroutput>false</computeroutput> otherwise.</para></returns>
-
- <throws><para>Will not throw.</para></throws>
-
- <complexity><para>Linear in the number of slots known to the
- signal.</para></complexity>
-
- <rationale><para>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.</para></rationale>
- </method>
-
- <method name="num_slots" cv="const">
- <type>std::size_t</type>
- <returns><para>The number of slots connected to the signal</para></returns>
-
- <throws><para>Will not throw.</para></throws>
-
- <complexity><para>Linear in the number of slots known to the
- signal.</para></complexity>
-
- <rationale><para>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.</para></rationale>
- </method>
- </method-group>
-
- <method-group name="invocation">
- <overloaded-method name="operator()">
- <signature>
- <type>result_type</type>
- <parameter name="a1"><paramtype>arg1_type</paramtype></parameter>
- <parameter name="a2"><paramtype>arg2_type</paramtype></parameter>
- <parameter><paramtype>...</paramtype></parameter>
- <parameter name="aN"><paramtype>argN_type</paramtype></parameter>
- </signature>
-
- <signature cv="const">
- <type>result_type</type>
- <parameter name="a1"><paramtype>arg1_type</paramtype></parameter>
- <parameter name="a2"><paramtype>arg2_type</paramtype></parameter>
- <parameter><paramtype>...</paramtype></parameter>
- <parameter name="aN"><paramtype>argN_type</paramtype></parameter>
- </signature>
-
- <effects><para>Invokes the combiner with a
- <computeroutput>slot_call_iterator</computeroutput> range
- [first, last) corresponding to the sequence of calls to the
- slots connected to signal
- <computeroutput>*this</computeroutput>. Dereferencing an
- iterator in this range causes a slot call with the given set
- of parameters <computeroutput>(a1, a2, ...,
- aN)</computeroutput>, the result of which is returned from
- the iterator dereference operation. Note, dereferencing
- a slot iterator may throw a <classname>expired_slot</classname>
- exception, if the slot has been disconnected via automatic
- connection management. Combiners should simply swallow
- such <classname>expired_slot</classname> exceptions and move
- on to the next slot.</para></effects>
-
- <returns><para>The result returned by the combiner.</para></returns>
-
- <throws><para>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.</para></throws>
-
- <notes><para>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.</para>
-
- <para>The <computeroutput>const</computeroutput> version of
- the function call operator will invoke the combiner as
- <computeroutput>const</computeroutput>, whereas the
- non-<computeroutput>const</computeroutput> version will
- invoke the combiner as
- non-<computeroutput>const</computeroutput>.</para>
-
- <para>Calling the function call operator may throw an
- exception if no slots are connected to the signal, depending
- on the combiner used. The default combiner will not throw
- for zero slots when the return type is <code>void</code> or
- <classname>optional</classname><T>,
- but will throw when the return type is any other type (because there is no
- way to synthesize a return value).</para></notes>
- </overloaded-method>
- </method-group>
-
- <method-group name="combiner access">
- <method name="combiner" cv="const">
- <type>combiner_type</type>
-
- <returns><para>A copy of the stored combiner.</para></returns>
- <throws><para>Will not throw.</para></throws>
- </method>
- <method name="set_combiner">
- <type>void</type>
- <parameter name="combiner"><paramtype>const combiner_type&</paramtype></parameter>
-
- <effects><para>Copies a new combiner into the signal for use with
- future signal invocations.</para></effects>
- <throws><para>Will not throw.</para></throws>
- </method>
- </method-group>
- </class>
-
- <class name="signal">
- <template>
- <template-type-parameter name="Signature">
- <purpose>Function type R (T1, T2, ..., TN)</purpose>
- </template-type-parameter>
- <template-type-parameter name="Combiner">
- <default><classname>last_value</classname><R></default>
- </template-type-parameter>
- <template-type-parameter name="Group">
- <default>int</default>
- </template-type-parameter>
- <template-type-parameter name="GroupCompare">
- <default><classname>std::less</classname><Group></default>
- </template-type-parameter>
- <template-type-parameter name="SlotFunction">
- <default><classname>function</classname><Signature></default>
- </template-type-parameter>
- <template-type-parameter name="ThreadingModel">
- <default><classname>signalslib::auto_threaded</classname></default>
- </template-type-parameter>
- </template>
-
- <inherit access="public">
- <type><classname>signalN</classname><R, T1, T2, ..., TN, Combiner, Group, GroupCompare, SlotFunction, ThreadingModel></type>
- </inherit>
- <purpose>Safe multicast callback.</purpose>
-
- <description>
- <para>Class template <classname>signal</classname> is a thin
- wrapper around the numbered class templates <classname
- alt="signalN">signal0</classname>, <classname
- alt="signalN">signal1</classname>, etc. It accepts a function
- type with N arguments instead of N separate arguments, and
- derives from the appropriate <classname>signalN</classname>
- instantiation.</para>
-
- <para>All functionality of this class template is in its base
- class <classname>signalN</classname>.</para>
- </description>
-
- <constructor>
- <parameter name="combiner">
- <paramtype>const combiner_type&</paramtype>
- <default>combiner_type()</default>
- </parameter>
- <parameter name="compare">
- <paramtype>const group_compare_type&</paramtype>
- <default>group_compare_type()</default>
- </parameter>
-
- <effects><para>Initializes the base class with the given combiner
- and comparison objects.</para></effects>
- </constructor>
- </class>
+ <parameter name="combiner"><paramtype>const combiner_type&</paramtype></parameter>
+
+ <effects><para>Copies a new combiner into the signal for use with
+ future signal invocations.</para></effects>
+ <throws><para>Will not throw.</para></throws>
+ </method>
+ </method-group>
+ </class>
+
+ <class name="signal">
+ <template>
+ <template-type-parameter name="Signature">
+ <purpose>Function type R (T1, T2, ..., TN)</purpose>
+ </template-type-parameter>
+ <template-type-parameter name="Combiner">
+ <default><classname>last_value</classname><R></default>
+ </template-type-parameter>
+ <template-type-parameter name="Group">
+ <default>int</default>
+ </template-type-parameter>
+ <template-type-parameter name="GroupCompare">
+ <default><classname>std::less</classname><Group></default>
+ </template-type-parameter>
+ <template-type-parameter name="SlotFunction">
+ <default><classname>function</classname><Signature></default>
+ </template-type-parameter>
+ <template-type-parameter name="Mutex">
+ <default><classname>lightweight_mutex</classname></default>
+ </template-type-parameter>
+ </template>
+
+ <inherit access="public">
+ <type><classname>signalN</classname><R, T1, T2, ..., TN, Combiner, Group, GroupCompare, SlotFunction, Mutex></type>
+ </inherit>
+ <purpose>Safe multicast callback.</purpose>
+
+ <description>
+ <para>Class template <classname>signal</classname> is a thin
+ wrapper around the numbered class templates <classname
+ alt="signalN">signal0</classname>, <classname
+ alt="signalN">signal1</classname>, etc. It accepts a function
+ type with N arguments instead of N separate arguments, and
+ derives from the appropriate <classname>signalN</classname>
+ instantiation.</para>
+
+ <para>All functionality of this class template is in its base
+ class <classname>signalN</classname>.</para>
+ </description>
+
+ <constructor>
+ <parameter name="combiner">
+ <paramtype>const combiner_type&</paramtype>
+ <default>combiner_type()</default>
+ </parameter>
+ <parameter name="compare">
+ <paramtype>const group_compare_type&</paramtype>
+ <default>group_compare_type()</default>
+ </parameter>
+
+ <effects><para>Initializes the base class with the given combiner
+ and comparison objects.</para></effects>
+ </constructor>
+ </class>
+ </namespace>
</namespace>
</header>
Deleted: sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/single_threaded.xml
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/single_threaded.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
+++ (empty file)
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
- "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<header name="boost/signals/single_threaded.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
- <using-namespace name="boost"/>
- <using-namespace name="boost::signalslib"/>
- <namespace name="boost">
- <namespace name="signalslib">
- <class name="single_threaded">
- <purpose>Single-threaded choice for the ThreadingModel template parameter of a signal.</purpose>
-
- <description>
- <para>The <code>single_threaded</code> class will produce a multi-thread-unsafe signal
- class when used as the signal's <code>ThreadingModel</code> template parameter.
- The signal might still be used in a multi-threaded program, as long as
- the signal is only used by a single thread. The signal may have slightly
- better performance that a thread-safe signal, since it performs no locking.
- </para>
- </description>
- </class>
- </namespace>
- </namespace>
-</header>
Modified: sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/slot.xml
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/slot.xml (original)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/slot.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -1,308 +1,310 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<header name="boost/signals/slot.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
+<header name="boost/signals2/slot.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
<using-namespace name="boost"/>
- <using-namespace name="boost::signalslib"/>
- <using-class name="boost::signalN"/>
- <using-class name="boost::signalslib::slot_base"/>
+ <using-namespace name="boost::signals2"/>
+ <using-class name="boost::signals2::signalN"/>
+ <using-class name="boost::signals2::slot_base"/>
<namespace name="boost">
- <class name="slotN">
- <template>
- <template-type-parameter name="R"/>
- <template-type-parameter name="T1"/>
- <template-type-parameter name="T2"/>
- <template-varargs/>
- <template-type-parameter name="TN"/>
- <template-type-parameter name="SlotFunction">
- <default><classname>functionN</classname><R, T1, T2, ..., TN></default>
- </template-type-parameter>
- </template>
- <inherit access="public">
- <type><classname>boost::signalslib::slot_base</classname></type>
- </inherit>
- <purpose>Pass slots as function arguments, and associate tracked objects with a slot.</purpose>
-
- <description>
- <para>The class template <classname>slotN</classname> covers
- several related classes slot0, slot1, slot2, etc.,
- where the number suffix describes the number of function
- parameters the slot will
- take. Instead of enumerating all classes, a single pattern
- <classname>slotN</classname> will be described, where N
- represents the number of function parameters.</para>
- </description>
-
- <typedef name="result_type">
- <type>R</type>
- </typedef>
- <typedef name="argument_type">
- <type>T1</type>
- <purpose>If N == 1</purpose>
- </typedef>
- <typedef name="first_argument_type">
- <type>T1</type>
- <purpose>If N == 2</purpose>
- </typedef>
- <typedef name="second_argument_type">
- <type>T2</type>
- <purpose>If N == 2</purpose>
- </typedef>
- <typedef name="arg1_type"><type>T1</type></typedef>
- <typedef name="arg2_type"><type>T2</type></typedef>
- <typedef name="..."><type/></typedef>
- <typedef name="argN_type"><type>TN</type></typedef>
- <typedef name="slot_function_type">
- <type>SlotFunction</type>
- </typedef>
-
- <static-constant name="arity">
- <type>int</type>
- <default>N</default>
- </static-constant>
-
- <constructor>
- <template>
- <template-type-parameter name="Slot"/>
- </template>
-
- <parameter name="target">
- <paramtype>const Slot &</paramtype>
- </parameter>
-
- <effects>
- <para>Initializes the <code>SlotFunction</code> object in <code>this</code>
- with <code>target</code>, which may be any
- function object with which a
- <code>SlotFunction</code> can be
- constructed. The slot's tracked object list is initially empty.</para>
- </effects>
- </constructor>
- <constructor>
+ <namespace name="signals2">
+ <class name="slotN">
<template>
- <template-type-parameter name="OtherR"/>
- <template-type-parameter name="OtherT1"/>
- <template-type-parameter name="OtherT2"/>
+ <template-type-parameter name="R"/>
+ <template-type-parameter name="T1"/>
+ <template-type-parameter name="T2"/>
<template-varargs/>
- <template-type-parameter name="OtherTN"/>
- <template-type-parameter name="OtherSlotFunction"/>
- </template>
-
- <parameter name="other_slot">
- <paramtype>const slotN<OtherR, OtherT1, OtherT2, ..., OtherTN, OtherSlotFunction> &</paramtype>
- </parameter>
-
- <effects>
- <para>Initializes <code>this</code> with a copy of
- <code>other_slot</code>'s <code>SlotFunction</code> object and tracked object list.
- </para></effects>
- </constructor>
- <constructor>
- <template>
- <template-type-parameter name="OtherSignature"/>
- <template-type-parameter name="OtherSlotFunction"/>
+ <template-type-parameter name="TN"/>
+ <template-type-parameter name="SlotFunction">
+ <default><classname>functionN</classname><R, T1, T2, ..., TN></default>
+ </template-type-parameter>
</template>
+ <inherit access="public">
+ <type><classname>slot_base</classname></type>
+ </inherit>
+ <purpose>Pass slots as function arguments, and associate tracked objects with a slot.</purpose>
+
+ <description>
+ <para>The class template <classname>slotN</classname> covers
+ several related classes slot0, slot1, slot2, etc.,
+ where the number suffix describes the number of function
+ parameters the slot will
+ take. Instead of enumerating all classes, a single pattern
+ <classname>slotN</classname> will be described, where N
+ represents the number of function parameters.</para>
+ </description>
+
+ <typedef name="result_type">
+ <type>R</type>
+ </typedef>
+ <typedef name="argument_type">
+ <type>T1</type>
+ <purpose>If N == 1</purpose>
+ </typedef>
+ <typedef name="first_argument_type">
+ <type>T1</type>
+ <purpose>If N == 2</purpose>
+ </typedef>
+ <typedef name="second_argument_type">
+ <type>T2</type>
+ <purpose>If N == 2</purpose>
+ </typedef>
+ <typedef name="arg1_type"><type>T1</type></typedef>
+ <typedef name="arg2_type"><type>T2</type></typedef>
+ <typedef name="..."><type/></typedef>
+ <typedef name="argN_type"><type>TN</type></typedef>
+ <typedef name="slot_function_type">
+ <type>SlotFunction</type>
+ </typedef>
+
+ <static-constant name="arity">
+ <type>int</type>
+ <default>N</default>
+ </static-constant>
- <parameter name="other_slot">
- <paramtype>const slot<OtherSignature, OtherSlotFunction> &</paramtype>
- </parameter>
-
- <effects>
- <para>Initializes <code>this</code> with a copy of
- <code>other_slot</code>'s <code>OtherSlotFunction</code> object and tracked object list.
- </para></effects>
- </constructor>
<constructor>
- <template>
- <template-type-parameter name="Func"/>
- <template-type-parameter name="Arg1"/>
- <template-type-parameter name="Arg2"/>
- <template-varargs/>
- <template-type-parameter name="ArgN"/>
- </template>
+ <template>
+ <template-type-parameter name="Slot"/>
+ </template>
+
+ <parameter name="target">
+ <paramtype>const Slot &</paramtype>
+ </parameter>
- <parameter name="f">
- <paramtype>Func</paramtype>
- </parameter>
- <parameter name="a1">
- <paramtype>Arg1</paramtype>
- </parameter>
- <parameter name="a2">
- <paramtype>Arg2</paramtype>
- </parameter>
- <parameter>
- <paramtype>...</paramtype>
- </parameter>
- <parameter name="aN">
- <paramtype>ArgN</paramtype>
- </parameter>
-
- <effects>
- <para>Syntactic sugar for <code>bind()</code> when the constructor is passed more than
- one argument. As if:
- <code>slotN(boost::bind(f, a1, a2, ..., aN))</code>
- </para></effects>
- </constructor>
-
- <method-group name="invocation">
- <overloaded-method name="operator()">
- <signature>
- <type>result_type</type>
- <parameter name="a1"><paramtype>arg1_type</paramtype></parameter>
- <parameter name="a2"><paramtype>arg2_type</paramtype></parameter>
- <parameter><paramtype>...</paramtype></parameter>
- <parameter name="aN"><paramtype>argN_type</paramtype></parameter>
- </signature>
-
- <signature cv="const">
- <type>result_type</type>
- <parameter name="a1"><paramtype>arg1_type</paramtype></parameter>
- <parameter name="a2"><paramtype>arg2_type</paramtype></parameter>
- <parameter><paramtype>...</paramtype></parameter>
- <parameter name="aN"><paramtype>argN_type</paramtype></parameter>
- </signature>
-
- <effects><para>Calls the slot's <code>SlotFunction</code> object.
- </para></effects>
-
- <returns><para>The result returned by the slot's <code>SlotFunction</code> object.</para></returns>
-
- <throws><para>Any exceptions thrown by the slot's <code>SlotFunction</code> object.
- <classname>boost::expired_slot</classname> if any object in the tracked object list
- has expired.</para></throws>
-
- <notes><para>If you have already used <methodname>lock</methodname> to insure the
- tracked objects are valid, it is slightly more efficient to use the
- <methodname>slot_function</methodname>() method
- and call the slot's <code>SlotFunction</code> directly.</para>
- </notes>
- </overloaded-method>
- </method-group>
-
- <method-group name="tracking">
- <overloaded-method name="track">
- <signature>
- <type>slotN &</type>
- <parameter name="tracked_object">
- <paramtype>const weak_ptr<void> &</paramtype>
- </parameter>
- </signature>
- <signature>
- <type>slotN &</type>
- <parameter name="tracked_signal">
- <paramtype>const <classname>signalslib::signal_base</classname> &</paramtype>
- </parameter>
- </signature>
- <signature>
- <type>slotN &</type>
- <parameter name="tracked_slot">
- <paramtype>const <classname>signalslib::slot_base</classname> &</paramtype>
- </parameter>
- </signature>
<effects>
- <para>
- Adds object(s) to the slot's tracked object list. Should any of the
- tracked objects expire, then subsequent attempts to call the slot's <code>operator()</code>
- or <code>lock()</code> methods will throw an <classname>expired_slot</classname> exception.
- </para>
- <para>When tracking a signal, a <classname>shared_ptr</classname>
- internal to the signal class is used for tracking. The signal does not
- need to be owned by an external <code>shared_ptr</code>.
- </para>
- <para>
- In the case of passing another slot as the argument to <code>track()</code>,
- only the objects currently in the other slot's tracked object list are added
- to the tracked object list of <code>this</code>. The other slot object itself
- is not tracked.
- </para>
+ <para>Initializes the <code>SlotFunction</code> object in <code>this</code>
+ with <code>target</code>, which may be any
+ function object with which a
+ <code>SlotFunction</code> can be
+ constructed. The slot's tracked object list is initially empty.</para>
</effects>
- <returns><para><code>*this</code></para></returns>
- </overloaded-method>
- </method-group>
-
- <method-group name="slot function access">
- <overloaded-method name="slot_function">
- <signature>
- <type>slot_function_type &</type>
- </signature>
- <signature cv="const">
- <type>const slot_function_type &</type>
- </signature>
- <returns><para>A reference to the slot's underlying SlotFunction object.</para></returns>
- </overloaded-method>
- </method-group>
- </class>
-
- <class name="slot">
- <template>
- <template-type-parameter name="Signature">
- <purpose>Function type R (T1, T2, ..., TN)</purpose>
- </template-type-parameter>
- <template-type-parameter name="SlotFunction">
- <default><classname>function</classname><Signature></default>
- </template-type-parameter>
- </template>
-
- <inherit access="public"><classname>slotN</classname><R, T1, T2, ..., TN, SlotFunction></inherit>
- <purpose>Pass slots as function arguments, and associate tracked objects with a slot.</purpose>
-
- <description>
- <para>Class template <classname>slot</classname> is a thin
- wrapper around the numbered class templates <classname
- alt="slotN">slot0</classname>, <classname
- alt="slotN">slot1</classname>, etc. It accepts a function
- type with N arguments instead of N separate arguments, and
- derives from the appropriate <classname>slotN</classname>
- instantiation.</para>
-
- <para>All functionality of this class template is in its base
- class <classname>slotN</classname>.</para>
- </description>
+ </constructor>
+ <constructor>
+ <template>
+ <template-type-parameter name="OtherR"/>
+ <template-type-parameter name="OtherT1"/>
+ <template-type-parameter name="OtherT2"/>
+ <template-varargs/>
+ <template-type-parameter name="OtherTN"/>
+ <template-type-parameter name="OtherSlotFunction"/>
+ </template>
+
+ <parameter name="other_slot">
+ <paramtype>const slotN<OtherR, OtherT1, OtherT2, ..., OtherTN, OtherSlotFunction> &</paramtype>
+ </parameter>
+
+ <effects>
+ <para>Initializes <code>this</code> with a copy of
+ <code>other_slot</code>'s <code>SlotFunction</code> object and tracked object list.
+ </para></effects>
+ </constructor>
+ <constructor>
+ <template>
+ <template-type-parameter name="OtherSignature"/>
+ <template-type-parameter name="OtherSlotFunction"/>
+ </template>
+
+ <parameter name="other_slot">
+ <paramtype>const slot<OtherSignature, OtherSlotFunction> &</paramtype>
+ </parameter>
- <constructor>
+ <effects>
+ <para>Initializes <code>this</code> with a copy of
+ <code>other_slot</code>'s <code>OtherSlotFunction</code> object and tracked object list.
+ </para></effects>
+ </constructor>
+ <constructor>
+ <template>
+ <template-type-parameter name="Func"/>
+ <template-type-parameter name="Arg1"/>
+ <template-type-parameter name="Arg2"/>
+ <template-varargs/>
+ <template-type-parameter name="ArgN"/>
+ </template>
+
+ <parameter name="f">
+ <paramtype>const Func &</paramtype>
+ </parameter>
+ <parameter name="a1">
+ <paramtype>const Arg1 &</paramtype>
+ </parameter>
+ <parameter name="a2">
+ <paramtype>const Arg2 &</paramtype>
+ </parameter>
+ <parameter>
+ <paramtype>...</paramtype>
+ </parameter>
+ <parameter name="aN">
+ <paramtype>const ArgN &</paramtype>
+ </parameter>
+
+ <effects>
+ <para>Syntactic sugar for <code>bind()</code> when the constructor is passed more than
+ one argument. As if:
+ <code>slotN(boost::bind(f, a1, a2, ..., aN))</code>
+ </para></effects>
+ </constructor>
+
+ <method-group name="invocation">
+ <overloaded-method name="operator()">
+ <signature>
+ <type>result_type</type>
+ <parameter name="a1"><paramtype>arg1_type</paramtype></parameter>
+ <parameter name="a2"><paramtype>arg2_type</paramtype></parameter>
+ <parameter><paramtype>...</paramtype></parameter>
+ <parameter name="aN"><paramtype>argN_type</paramtype></parameter>
+ </signature>
+
+ <signature cv="const">
+ <type>result_type</type>
+ <parameter name="a1"><paramtype>arg1_type</paramtype></parameter>
+ <parameter name="a2"><paramtype>arg2_type</paramtype></parameter>
+ <parameter><paramtype>...</paramtype></parameter>
+ <parameter name="aN"><paramtype>argN_type</paramtype></parameter>
+ </signature>
+
+ <effects><para>Calls the slot's <code>SlotFunction</code> object.
+ </para></effects>
+
+ <returns><para>The result returned by the slot's <code>SlotFunction</code> object.</para></returns>
+
+ <throws><para>Any exceptions thrown by the slot's <code>SlotFunction</code> object.
+ <classname>boost::expired_slot</classname> if any object in the tracked object list
+ has expired.</para></throws>
+
+ <notes><para>If you have already used <methodname>lock</methodname> to insure the
+ tracked objects are valid, it is slightly more efficient to use the
+ <methodname>slot_function</methodname>() method
+ and call the slot's <code>SlotFunction</code> directly.</para>
+ </notes>
+ </overloaded-method>
+ </method-group>
+
+ <method-group name="tracking">
+ <overloaded-method name="track">
+ <signature>
+ <type>slotN &</type>
+ <parameter name="tracked_object">
+ <paramtype>const weak_ptr<void> &</paramtype>
+ </parameter>
+ </signature>
+ <signature>
+ <type>slotN &</type>
+ <parameter name="tracked_signal">
+ <paramtype>const <classname>signal_base</classname> &</paramtype>
+ </parameter>
+ </signature>
+ <signature>
+ <type>slotN &</type>
+ <parameter name="tracked_slot">
+ <paramtype>const <classname>slot_base</classname> &</paramtype>
+ </parameter>
+ </signature>
+ <effects>
+ <para>
+ Adds object(s) to the slot's tracked object list. Should any of the
+ tracked objects expire, then subsequent attempts to call the slot's <code>operator()</code>
+ or <code>lock()</code> methods will throw an <classname>expired_slot</classname> exception.
+ </para>
+ <para>When tracking a signal, a <classname>shared_ptr</classname>
+ internal to the signal class is used for tracking. The signal does not
+ need to be owned by an external <code>shared_ptr</code>.
+ </para>
+ <para>
+ In the case of passing another slot as the argument to <code>track()</code>,
+ only the objects currently in the other slot's tracked object list are added
+ to the tracked object list of <code>this</code>. The other slot object itself
+ is not tracked.
+ </para>
+ </effects>
+ <returns><para><code>*this</code></para></returns>
+ </overloaded-method>
+ </method-group>
+
+ <method-group name="slot function access">
+ <overloaded-method name="slot_function">
+ <signature>
+ <type>slot_function_type &</type>
+ </signature>
+ <signature cv="const">
+ <type>const slot_function_type &</type>
+ </signature>
+ <returns><para>A reference to the slot's underlying SlotFunction object.</para></returns>
+ </overloaded-method>
+ </method-group>
+ </class>
+
+ <class name="slot">
<template>
- <template-type-parameter name="F"/>
+ <template-type-parameter name="Signature">
+ <purpose>Function type R (T1, T2, ..., TN)</purpose>
+ </template-type-parameter>
+ <template-type-parameter name="SlotFunction">
+ <default><classname>function</classname><Signature></default>
+ </template-type-parameter>
</template>
- <parameter name="f">
- <paramtype>const F &</paramtype>
- </parameter>
-
- <effects>
- <para>Passes argument to the base type <classname>slotN</classname> constructor.</para>
- </effects>
- </constructor>
+ <inherit access="public"><classname>slotN</classname><R, T1, T2, ..., TN, SlotFunction></inherit>
+ <purpose>Pass slots as function arguments, and associate tracked objects with a slot.</purpose>
+
+ <description>
+ <para>Class template <classname>slot</classname> is a thin
+ wrapper around the numbered class templates <classname
+ alt="slotN">slot0</classname>, <classname
+ alt="slotN">slot1</classname>, etc. It accepts a function
+ type with N arguments instead of N separate arguments, and
+ derives from the appropriate <classname>slotN</classname>
+ instantiation.</para>
+
+ <para>All functionality of this class template is in its base
+ class <classname>slotN</classname>.</para>
+ </description>
+
<constructor>
- <template>
- <template-type-parameter name="Func"/>
- <template-type-parameter name="Arg1"/>
- <template-type-parameter name="Arg2"/>
- <template-varargs/>
- <template-type-parameter name="ArgN"/>
- </template>
+ <template>
+ <template-type-parameter name="F"/>
+ </template>
+
+ <parameter name="f">
+ <paramtype>const F &</paramtype>
+ </parameter>
+
+ <effects>
+ <para>Passes argument to the base type <classname>slotN</classname> constructor.</para>
+ </effects>
+ </constructor>
+ <constructor>
+ <template>
+ <template-type-parameter name="Func"/>
+ <template-type-parameter name="Arg1"/>
+ <template-type-parameter name="Arg2"/>
+ <template-varargs/>
+ <template-type-parameter name="ArgN"/>
+ </template>
+
+ <parameter name="f">
+ <paramtype>const Func &</paramtype>
+ </parameter>
+ <parameter name="a1">
+ <paramtype>const Arg1 &</paramtype>
+ </parameter>
+ <parameter name="a2">
+ <paramtype>const Arg2 &</paramtype>
+ </parameter>
+ <parameter>
+ <paramtype>...</paramtype>
+ </parameter>
+ <parameter name="aN">
+ <paramtype>const ArgN &</paramtype>
+ </parameter>
- <parameter name="f">
- <paramtype>Func</paramtype>
- </parameter>
- <parameter name="a1">
- <paramtype>Arg1</paramtype>
- </parameter>
- <parameter name="a2">
- <paramtype>Arg2</paramtype>
- </parameter>
- <parameter>
- <paramtype>...</paramtype>
- </parameter>
- <parameter name="aN">
- <paramtype>ArgN</paramtype>
- </parameter>
-
- <effects>
- <para>Syntactic sugar for <code>bind()</code> when the constructor is passed more than
- one argument. As if:
- <code>slot(boost::bind(f, a1, a2, ..., aN))</code>
- </para></effects>
- </constructor>
- </class>
+ <effects>
+ <para>Syntactic sugar for <code>bind()</code> when the constructor is passed more than
+ one argument. As if:
+ <code>slot(boost::bind(f, a1, a2, ..., aN))</code>
+ </para></effects>
+ </constructor>
+ </class>
+ </namespace>
</namespace>
-</header>
\ No newline at end of file
+</header>
Modified: sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/slot_base.xml
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/slot_base.xml (original)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/reference/slot_base.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<header name="boost/signals/slot_base.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
+<header name="boost/signals2/slot_base.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
<using-namespace name="boost"/>
- <using-namespace name="boost::signalslib"/>
+ <using-namespace name="boost::signals2"/>
<namespace name="boost">
- <namespace name="signalslib">
+ <namespace name="signals2">
<class name="slot_base">
<purpose>Base class for slots.</purpose>
@@ -37,21 +37,21 @@
</method>
</method-group>
</class>
+ <class name="expired_slot">
+ <inherit access="public"><classname>bad_weak_ptr</classname></inherit>
+ <purpose>Indicates at least one of a slot's tracked objects has expired.</purpose>
+ <description>The <code>expired_slot</code> exception is thrown to indicate at least one of
+ a slot's tracked objects has expired. A <classname alt="signalN">signal</classname>
+ will automatically disconnect any slot which throws this exception during
+ signal invocation. Combiners
+ that wish to support disconnection via expired_slot exceptions should be
+ prepared to handle <code>expired_slot</code> exceptions thrown
+ by the slot iterator dereference operation.
+ </description>
+ <method name="what" cv="const" specifiers="virtual">
+ <type>const char * </type>
+ </method>
+ </class>
</namespace>
- <class name="expired_slot">
- <inherit access="public"><classname>bad_weak_ptr</classname></inherit>
- <purpose>Indicates at least one of a slot's tracked objects has expired.</purpose>
- <description>The <code>expired_slot</code> exception is thrown to indicate at least one of
- a slot's tracked objects has expired. A <classname alt="signalN">signal</classname>
- will automatically disconnect any slot which throws this exception during
- signal invocation. Combiners
- that wish to support disconnection via expired_slot exceptions should be
- prepared to handle <code>expired_slot</code> exceptions thrown
- by the slot iterator dereference operation.
- </description>
- <method name="what" cv="const" specifiers="virtual">
- <type>const char * </type>
- </method>
- </class>
- </namespace>
+ </namespace>
</header>
\ No newline at end of file
Modified: sandbox/thread_safe_signals/trunk/libs/signals2/doc/signals.xml
Modified: sandbox/thread_safe_signals/trunk/libs/signals2/doc/tutorial.xml
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/signals.xml (original)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/signals.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<library name="Signals" dirname="thread_safe_signals"
- xmlns:xi="http://www.w3.org/2001/XInclude" id="signals"
+<library name="Signals2" dirname="signals2"
+ xmlns:xi="http://www.w3.org/2001/XInclude" id="signals2"
last-revision="$Date: 2007-06-12 14:01:23 -0400 (Tue, 12 Jun 2007) $">
<libraryinfo>
<author>
@@ -26,11 +26,12 @@
</copyright>
<copyright>
<year>2007</year>
+ <year>2008</year>
<holder>Frank Mori Hess</holder>
</copyright>
<legalnotice>
- <para>Use, modification and distribution is subject to the Boost
+ <para>Distributed under the Boost
Software License, Version 1.0. (See accompanying file
<filename>LICENSE_1_0.txt</filename> or copy at <ulink
url="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt>)</para>
@@ -40,7 +41,7 @@
<librarycategory name="category:higher-order"/>
</libraryinfo>
-<title>Boost.Signals (thread_safe_signals version)</title>
+<title>Boost.Signals2</title>
<xi:include href="introduction.xml"/>
<xi:include href="tutorial.xml"/>
<xi:include href="reference/reference.xml"/>
==============================================================================
--- sandbox/thread_safe_signals/trunk/libs/signals2/doc/tutorial.xml (original)
+++ sandbox/thread_safe_signals/trunk/libs/signals2/doc/tutorial.xml 2008-09-26 17:10:39 EDT (Fri, 26 Sep 2008)
@@ -5,9 +5,9 @@
<title>Tutorial</title>
<using-namespace name="boost"/>
- <using-namespace name="boost::signalslib"/>
- <using-class name="boost::signalN"/>
- <using-class name="boost::slotN"/>
+ <using-namespace name="boost::signals2"/>
+ <using-class name="boost::signals2::signalN"/>
+ <using-class name="boost::signals2::slotN"/>
<section>
<title>How to Read this Tutorial</title>
@@ -19,27 +19,27 @@
later. Each of the sections is marked <emphasis>Beginner</emphasis>,
<emphasis>Intermediate</emphasis>, or <emphasis>Advanced</emphasis> to help guide the
reader. The <emphasis>Beginner</emphasis> sections include information that all
-library users should know; one can make good use of the Signals
+library users should know; one can make good use of the Signals2
library after having read only the <emphasis>Beginner</emphasis> sections. The
<emphasis>Intermediate</emphasis> sections build on the <emphasis>Beginner</emphasis>
sections with slightly more complex uses of the library. Finally,
the <emphasis>Advanced</emphasis> sections detail very advanced uses of the
-Signals library, that often require a solid working knowledge of
+Signals2 library, that often require a solid working knowledge of
the <emphasis>Beginner</emphasis> and <emphasis>Intermediate</emphasis> topics; most users
will not need to read the <emphasis>Advanced</emphasis> sections.</para>
</section>
<section><title>Compatibility Note</title>
-<para>Boost.Signals has two syntactical forms: the preferred form and
+<para>Boost.Signals2 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
+Boost.Signals2. 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
+that the preferred syntactic form in Signals2 is equivalent to that of
Function's preferred syntactic form.</para>
<para>If your compiler does not appear in this list, please try the
@@ -113,7 +113,7 @@
// ...
// Signal with no arguments and a void return value
-<classname>boost::signal</classname><void ()> sig;
+<classname>boost::signals2::signal</classname><void ()> sig;
// Connect a HelloWorld slot
HelloWorld hello;
@@ -136,7 +136,7 @@
// ...
// Signal with no arguments and a void return value
-<classname alt="boost::signalN">boost::signal0</classname><void> sig;
+<classname alt="boost::signals2::signalN">boost::signals2::signal0</classname><void> sig;
// Connect a HelloWorld slot
HelloWorld hello;
@@ -196,7 +196,7 @@
<row>
<entry>
<programlisting>
-<classname>boost::signal</classname><void ()> sig;
+<classname>boost::signals2::signal</classname><void ()> sig;
sig.<methodname>connect</methodname>(Hello());
sig.<methodname>connect</methodname>(World());
@@ -206,7 +206,7 @@
</entry>
<entry>
<programlisting>
-<classname alt="boost::signalN">boost::signal0</classname><void> sig;
+<classname alt="boost::signals2::signalN">boost::signals2::signal0</classname><void> sig;
sig.<methodname>connect</methodname>(Hello());
sig.<methodname>connect</methodname>(World());
@@ -227,7 +227,7 @@
<section><title>Ordering slot call groups (Intermediate)</title>
<para>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
+slots will have to be called before others even if they are not connected in that order. The Boost.Signals2
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
@@ -248,7 +248,7 @@
<row>
<entry>
<programlisting>
-<classname>boost::signal</classname><void ()> sig;
+<classname>boost::signals2::signal</classname><void ()> sig;
sig.<methodname>connect</methodname>(1, World());
sig.<methodname>connect</methodname>(0, Hello());
sig();
@@ -256,7 +256,7 @@
</entry>
<entry>
<programlisting>
-<classname alt="boost::signalN">boost::signal0</classname><void> sig;
+<classname alt="boost::signals2::signalN">boost::signals2::signal0</classname><void> sig;
sig.<methodname>connect</methodname>(1, World());
sig.<methodname>connect</methodname>(0, Hello());
sig();
@@ -276,9 +276,9 @@
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>boost::signalslib::at_front</code> or <code>boost::signalslib::at_back</code>
+<code>boost::signals2::at_front</code> or <code>boost::signals2::at_back</code>
as the last parameter to <code><methodname
-alt="boost::signalN::connect">connect</methodname></code>, respectively), and defaults to the end of the list. When
+alt="boost::signals2::signalN::connect">connect</methodname></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:</para>
@@ -345,7 +345,7 @@
<row>
<entry>
<programlisting>
-<classname>boost::signal</classname><void (float, float)> sig;
+<classname>boost::signals2::signal</classname><void (float, float)> sig;
sig.<methodname>connect</methodname>(&print_sum);
sig.<methodname>connect</methodname>(&print_product);
@@ -357,7 +357,7 @@
</entry>
<entry>
<programlisting>
-<classname alt="boost::signalN">boost::signal2</classname><void, float, float> sig;
+<classname alt="boost::signals2::signalN">boost::signals2::signal2</classname><void, float, float> sig;
sig.<methodname>connect</methodname>(&print_sum);
sig.<methodname>connect</methodname>(&print_product);
@@ -382,7 +382,7 @@
<para>So any values that are given to <code>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><classname>boost::signal</classname><void (float,
+signal. The type <code><classname>boost::signals2::signal</classname><void (float,
float)></code> means that the signal has a <code>void</code>
return value and takes two <code>float</code> values. Any slot
connected to <code>sig</code> must therefore be able to take two
@@ -421,7 +421,7 @@
float sum(float x, float y) { return x+y; }
float difference(float x, float y) { return x-y; }
-<classname>boost::signal</classname><float (float x, float y)> sig;
+<classname>boost::signals2::signal</classname><float (float x, float y)> sig;
sig.<methodname>connect</methodname>(&product);
sig.<methodname>connect</methodname>(&quotient);
@@ -438,7 +438,7 @@
float sum(float x, float y) { return x+y; }
float difference(float x, float y) { return x-y; }
-<classname alt="boost::signalN">boost::signal2</classname><float, float, float> sig;
+<classname alt="boost::signals2::signalN">boost::signals2::signal2</classname><float, float, float> sig;
sig.<methodname>connect</methodname>(&product);
sig.<methodname>connect</methodname>(&quotient);
@@ -456,7 +456,7 @@
<para>This example program will output <code>2</code>. This is because the
default behavior of a signal that has a return type
(<code>float</code>, the first template argument given to the
-<code><classname>boost::signal</classname></code> class template) is to call all slots and
+<code><classname>boost::signals2::signal</classname></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.</para>
@@ -480,9 +480,9 @@
if (max_value < *first)
max_value = *first;
}
- // Iterator dereference may throw boost::expired_slot if the
+ // Iterator dereference may throw boost::signals2::expired_slot if the
// slot has expired due to automatic connection management.
- catch(const boost::expired_slot &) {}
+ catch(const boost::signals2::expired_slot &) {}
++first;
}
@@ -515,13 +515,13 @@
<row>
<entry>
<programlisting>
-<classname>boost::signal</classname><float (float x, float y),
+<classname>boost::signals2::signal</classname><float (float x, float y),
maximum<float> > sig;
</programlisting>
</entry>
<entry>
<programlisting>
-<classname alt="boost::signalN">boost::signal2</classname><float, float, float,
+<classname alt="boost::signals2::signalN">boost::signals2::signal2</classname><float, float, float,
maximum<float> > sig;
</programlisting>
</entry>
@@ -562,7 +562,7 @@
try {
values.push_back(*first);
}
- catch(const boost::expired_slot &) {}
+ catch(const boost::signals2::expired_slot &) {}
++first;
}
return values;
@@ -584,7 +584,7 @@
<row>
<entry>
<programlisting>
-<classname>boost::signal</classname><float (float, float),
+<classname>boost::signals2::signal</classname><float (float, float),
aggregate_values<std::vector<float> > > sig;
sig.<methodname>connect</methodname>(&quotient);
@@ -599,7 +599,7 @@
</entry>
<entry>
<programlisting>
-<classname alt="boost::signalN">boost::signal2</classname><float, float, float,
+<classname alt="boost::signals2::signalN">boost::signals2::signal2</classname><float, float, float,
aggregate_values<std::vector<float> > > sig;
sig.<methodname>connect</methodname>(&quotient);
@@ -651,7 +651,7 @@
if (result_type fulfilled = *first)
return fulfilled;
}
- catch(const boost::expired_slot &) {}
+ catch(const boost::signals2::expired_slot &) {}
++first;
}
return 0;
@@ -668,7 +668,7 @@
are then disconnected, and the programmer needs control to decide
when a slot should no longer be connected.</para>
<para>The entry point for managing connections explicitly is the
-<code><classname>boost::signalslib::connection</classname></code> class. The
+<code><classname>boost::signals2::connection</classname></code> class. The
<code><classname>connection</classname></code> class uniquely represents the connection
between a particular signal and a particular slot. The
<code><methodname alt="connection::connected">connected</methodname>()</code> method checks if the signal and slot are
@@ -678,7 +678,7 @@
returns a connection object, which can be used to determine if the
connection still exists or to disconnect the signal and slot.</para>
<programlisting>
-boost::signalslib::connection c = sig.<methodname>connect</methodname>(HelloWorld());
+boost::signals2::connection c = sig.<methodname>connect</methodname>(HelloWorld());
if (c.<methodname alt="connection::connected">connected</methodname>()) {
<emphasis>// c is still connected to the signal</emphasis>
sig(); <emphasis>// Prints "Hello, World!"</emphasis>
@@ -695,7 +695,7 @@
<para>Slots can be temporarily "blocked", meaning that they will be
ignored when the signal is invoked but have not been disconnected. A
-<classname>boost::signalslib::shared_connection_block</classname> object will
+<classname>boost::signals2::shared_connection_block</classname> object will
temporarily block a slot. The connection is unblocked by either
destroying or calling
<methodname alt="shared_connection_block::unblock">unblock</methodname>
@@ -705,11 +705,11 @@
blocking/unblocking slots:</para>
<programlisting>
-boost::signalslib::connection c = sig.<methodname>connect</methodname>(HelloWorld());
+boost::signals2::connection c = sig.<methodname>connect</methodname>(HelloWorld());
sig(); <emphasis>// Prints "Hello, World!"</emphasis>
{
- boost::signalslib::shared_connection_block block(c); <emphasis>// block the slot</emphasis>
+ boost::signals2::shared_connection_block block(c); <emphasis>// block the slot</emphasis>
assert(c.<methodname alt="connection::blocked">blocked</methodname>());
sig(); <emphasis>// No output: the slot is blocked</emphasis>
} <emphasis>// shared_connection_block going out of scope unblocks the slot</emphasis>
@@ -719,14 +719,14 @@
</section>
<section><title>Scoped connections (Intermediate)</title>
-<para>The <code>boost::signalslib::scoped_connection</code> class
+<para>The <code>boost::signals2::scoped_connection</code> class
references a signal/slot connection that will be disconnected when
the <code>scoped_connection</code> class goes out of scope. This
ability is useful when a connection need only be temporary,
e.g.,</para>
<programlisting>
{
- boost::signalslib::scoped_connection c = sig.<methodname>connect</methodname>(ShortLived());
+ boost::signals2::scoped_connection c = sig.<methodname>connect</methodname>(ShortLived());
sig(); <emphasis>// will call ShortLived function object</emphasis>
}
sig(); <emphasis>// ShortLived function object no longer connected to sig</emphasis>
@@ -787,7 +787,7 @@
</section>
<section><title>Automatic connection management (Intermediate)</title>
-<para>Boost.Signals can automatically track the lifetime of objects
+<para>Boost.Signals2 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,
@@ -808,7 +808,7 @@
<programlisting>
class NewsItem { /* ... */ };
-typedef boost::signal<void (const NewsItem&)> signal_type;
+typedef boost::signals2::signal<void (const NewsItem&)> signal_type;
signal_type deliverNews;
</programlisting>
</entry>
@@ -816,7 +816,7 @@
<programlisting>
class NewsItem { /* ... */ };
-typedef boost::signal1<void, const NewsItem&> signal_type;
+typedef boost::signals2::signal1<void, const NewsItem&> signal_type;
signal_type deliverNews;
</programlisting>
</entry>
@@ -852,16 +852,16 @@
<para>However, what if the user closes the news message area,
destroying the <code>newsMessageArea</code> object that
<code>deliverNews</code> knows about? Most likely, a segmentation
-fault will occur. However, with Boost.Signals one may track any object
+fault will occur. However, with Boost.Signals2 one may track any object
which is managed by a shared_ptr, by using
-<methodname alt="boost::slotN::track">slot::track</methodname>. A slot will automatically
+<methodname alt="boost::signals2::slotN::track">slot::track</methodname>. A slot will automatically
disconnect when any of its tracked objects expire. In
-addition, Boost.Signals will ensure that no tracked object expires
+addition, Boost.Signals2 will ensure that no tracked object expires
while the slot it is associated with is in mid-execution. It does so by creating
temporary shared_ptr copies of the slot's tracked objects before executing it.
To track <code>NewsMessageArea</code>, we use a shared_ptr to manage
its lifetime, and pass the shared_ptr to the slot via its
-<methodname alt="boost::slotN::track">slot::track</methodname>
+<methodname alt="boost::signals2::slotN::track">slot::track</methodname>
method before connecting it,
e.g.:</para>
<programlisting>
@@ -895,7 +895,7 @@
<code>scoped_connection</code>'s destructor.</para></listitem>
<listitem><para>An object tracked by the slot is
destroyed.</para></listitem>
-<listitem><para>A slot throws a <classname>boost::expired_slot</classname> exception.
+<listitem><para>A slot throws a <classname>boost::signals2::expired_slot</classname> exception.
</para></listitem>
<listitem><para>The signal is destroyed.</para></listitem></itemizedlist>
<para>These events can occur at any time without disrupting a signal's
@@ -921,7 +921,7 @@
</section>
<section><title>Passing slots (Intermediate)</title>
-<para>Slots in the Boost.Signals library are created from arbitrary
+<para>Slots in the Boost.Signals2 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
@@ -942,7 +942,7 @@
<programlisting>
class Button
{
- typedef boost::signal<void (int x, int y)> OnClick;
+ typedef boost::signals2::signal<void (int x, int y)> OnClick;
public:
void doOnClick(const OnClick::slot_type& slot);
@@ -973,7 +973,7 @@
<programlisting>
class Button
{
- typedef <classname alt="boost::signalN">boost::signal2</classname><void,int,int> OnClick;
+ typedef <classname alt="boost::signals2::signalN">boost::signals2::signal2</classname><void,int,int> OnClick;
public:
void doOnClick(const OnClick::slot_type& slot);
@@ -1025,8 +1025,8 @@
<programlisting>class Document
{
public:
- typedef boost::signal<void (bool)> signal_t;
- typedef boost::signalslib::connection connection_t;
+ typedef boost::signals2::signal<void (bool)> signal_t;
+ typedef boost::signals2::connection connection_t;
public:
Document()
@@ -1150,11 +1150,8 @@
</section>
<section>
- <title>Linking against the Signals library</title>
- <para>The thread_safe_signals version of Boost.Signals is currently a header-only library.
- However, if you use the <classname>boost::signalslib::multi_threaded</classname> class as
- the ThreadingModel template parameter for your signals, you will have to link to the
- Boost.threads library, libboost_thread.
+ <title>Linking against the Signals2 library</title>
+ <para>Boost.Signals2 is currently a header-only library.
</para>
</section>