Boost logo

Boost-Commit :

From: fmhess_at_[hidden]
Date: 2007-09-23 22:10:34


Author: fmhess
Date: 2007-09-23 22:10:33 EDT (Sun, 23 Sep 2007)
New Revision: 39495
URL: http://svn.boost.org/trac/boost/changeset/39495

Log:
More documentation improvements. Fixed documentation of
some protected members using new docbook <access> tag. Added
documentation of slot_base, now that it's no longer in
the detail namespace. Added documentation of "preferred
syntax" slot class constructors. Got rid of a bunch
of <simpara> (no longer needed after css tweak).

Added:
   sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/slot_base.xml (contents, props changed)
Text files modified:
   sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/connection.xml | 4
   sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/postconstructible.xml | 18 +++--
   sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/predestructible.xml | 22 ++++--
   sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/reference.xml | 1
   sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/signal_header.xml | 121 ++++++++++++++++++++-------------------
   sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/slot.xml | 105 ++++++++++++++++++---------------
   6 files changed, 146 insertions(+), 125 deletions(-)

Modified: sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/connection.xml
==============================================================================
--- sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/connection.xml (original)
+++ sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/connection.xml 2007-09-23 22:10:33 EDT (Sun, 23 Sep 2007)
@@ -78,8 +78,8 @@
                 <classname>boost::signalslib::shared_connection_block</classname> object.
               </para>
             </description>
- <returns><simpara><code>true</code> if the associated slot is either disconnected or blocked, <code>false</code> otherwise.</simpara></returns>
- <throws><simpara>Will not throw.</simpara></throws>
+ <returns><para><code>true</code> if the associated slot is either disconnected or blocked, <code>false</code> otherwise.</para></returns>
+ <throws><para>Will not throw.</para></throws>
           </method>
         </method-group>
 

Modified: sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/postconstructible.xml
==============================================================================
--- sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/postconstructible.xml (original)
+++ sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/postconstructible.xml 2007-09-23 22:10:33 EDT (Sun, 23 Sep 2007)
@@ -5,16 +5,18 @@
   <using-namespace name="boost"/>
   <namespace name="boost">
     <class name="postconstructible">
- <destructor specifiers="[protected] virtual"/>
- <method name="postconstruct" specifiers="[protected] 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>
       <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>
 </header>
\ No newline at end of file

Modified: sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/predestructible.xml
==============================================================================
--- sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/predestructible.xml (original)
+++ sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/predestructible.xml 2007-09-23 22:10:33 EDT (Sun, 23 Sep 2007)
@@ -5,17 +5,21 @@
   <using-namespace name="boost"/>
   <namespace name="boost">
     <class name="predestructible">
- <destructor specifiers="[protected] 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>
       <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>
 </header>
\ No newline at end of file

Modified: sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/reference.xml
==============================================================================
--- sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/reference.xml (original)
+++ sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/reference.xml 2007-09-23 22:10:33 EDT (Sun, 23 Sep 2007)
@@ -5,6 +5,7 @@
                    last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
   <xi:include href="signal_header.xml"/>
   <xi:include href="slot.xml"/>
+ <xi:include href="slot_base.xml"/>
   <xi:include href="connection.xml"/>
   <xi:include href="shared_connection_block.xml"/>
   <xi:include href="last_value.xml"/>

Modified: sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/signal_header.xml
==============================================================================
--- sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/signal_header.xml (original)
+++ sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/signal_header.xml 2007-09-23 22:10:33 EDT (Sun, 23 Sep 2007)
@@ -97,13 +97,13 @@
           <default>group_compare_type()</default>
         </parameter>
 
- <effects><simpara>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.</simpara></effects>
+ <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><simpara><computeroutput>this-&gt;<methodname>empty</methodname>()</computeroutput></simpara></postconditions>
+ <postconditions><para><computeroutput>this-&gt;<methodname>empty</methodname>()</computeroutput></para></postconditions>
       </constructor>
 
       <destructor>
- <effects><simpara>Disconnects all slots connected to <computeroutput>*this</computeroutput>.</simpara></effects>
+ <effects><para>Disconnects all slots connected to <computeroutput>*this</computeroutput>.</para></effects>
       </destructor>
 
       <method-group name="connection management">
@@ -133,7 +133,7 @@
             </parameter>
           </signature>
 
- <effects><simpara>Connects the signal this to the incoming
+ <effects><para>Connects the signal this to the incoming
           slot. If the slot is inactive, i.e., any of the trackable
           objects bound by the slot call have been destroyed, then the
           call to connect is a no-op. If the second version of
@@ -144,26 +144,26 @@
           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.</simpara></effects>
+ slots.</para></effects>
 
- <returns><simpara>A
+ <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.</simpara></returns>
+ disconnected connection.</para></returns>
 
- <throws><simpara>This routine meets the strong exception guarantee,
+ <throws><para>This routine meets the strong exception guarantee,
           where any exception thrown will cause the slot to not be
- connected to the signal.</simpara></throws>
+ connected to the signal.</para></throws>
 
- <complexity><simpara>Constant time when connecting a slot
+ <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.</simpara></complexity>
+ group.</para></complexity>
 
- <notes><simpara>It is unspecified whether connecting a slot while the
+ <notes><para>It is unspecified whether connecting a slot while the
           signal is calling will result in the slot being called
- immediately.</simpara></notes>
+ immediately.</para></notes>
         </overloaded-method>
 
         <overloaded-method name="disconnect">
@@ -183,70 +183,70 @@
             </parameter>
           </signature>
 
- <effects><simpara>If the parameter is (convertible to) a
+ <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.</simpara></effects>
+ are disconnected.</para></effects>
 
- <throws><simpara>Will not throw unless a user destructor or
+ <throws><para>Will not throw unless a user destructor or
           equality operator <code>==</code> throws. If either throws,
- not all slots may be disconnected.</simpara></throws>
+ not all slots may be disconnected.</para></throws>
 
- <complexity><simpara>If a group is given, O(lg g) + k where
+ <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.</simpara></complexity>
+ signal.</para></complexity>
         </overloaded-method>
 
         <method name="disconnect_all_slots">
           <type>void</type>
- <effects><simpara>Disconnects all slots connected to the signal.</simpara></effects>
+ <effects><para>Disconnects all slots connected to the signal.</para></effects>
 
- <postconditions><simpara><computeroutput>this-&gt;<methodname>empty</methodname>()</computeroutput>.</simpara></postconditions>
+ <postconditions><para><computeroutput>this-&gt;<methodname>empty</methodname>()</computeroutput>.</para></postconditions>
 
- <throws><simpara>If disconnecting a slot causes an exception to be
- thrown, not all slots may be disconnected.</simpara></throws>
+ <throws><para>If disconnecting a slot causes an exception to be
+ thrown, not all slots may be disconnected.</para></throws>
 
- <complexity><simpara>Linear in the number of slots known to the
- signal.</simpara></complexity>
+ <complexity><para>Linear in the number of slots known to the
+ signal.</para></complexity>
 
- <notes><simpara>May be called at any time within the lifetime of the
- signal, including during calls to the signal's slots.</simpara></notes>
+ <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><simpara><computeroutput>true</computeroutput> if no slots
+ <returns><para><computeroutput>true</computeroutput> if no slots
           are connected to the signal, and
- <computeroutput>false</computeroutput> otherwise.</simpara></returns>
+ <computeroutput>false</computeroutput> otherwise.</para></returns>
 
- <throws><simpara>Will not throw.</simpara></throws>
+ <throws><para>Will not throw.</para></throws>
 
- <complexity><simpara>Linear in the number of slots known to the
- signal.</simpara></complexity>
+ <complexity><para>Linear in the number of slots known to the
+ signal.</para></complexity>
 
- <rationale><simpara>Slots can disconnect at any point in time,
+ <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.</simpara></rationale>
+ slots are still connected.</para></rationale>
         </method>
 
         <method name="num_slots" cv="const">
           <type>std::size_t</type>
- <returns><simpara>The number of slots connected to the signal</simpara></returns>
+ <returns><para>The number of slots connected to the signal</para></returns>
 
- <throws><simpara>Will not throw.</simpara></throws>
+ <throws><para>Will not throw.</para></throws>
 
- <complexity><simpara>Linear in the number of slots known to the
- signal.</simpara></complexity>
+ <complexity><para>Linear in the number of slots known to the
+ signal.</para></complexity>
 
- <rationale><simpara>Slots can disconnect at any point in time,
+ <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.</simpara></rationale>
+ slots are still connected.</para></rationale>
         </method>
       </method-group>
 
@@ -268,7 +268,7 @@
             <parameter name="aN"><paramtype>argN_type</paramtype></parameter>
           </signature>
 
- <effects><simpara>Invokes the combiner with a
+ <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
@@ -276,35 +276,40 @@
           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.</simpara></effects>
+ the iterator dereference operation. Note, dereferencing
+ a slot iterator may throw a <classname>slot_expired</classname>
+ exception, if the slot has been disconnected via automatic
+ connection management. Combiners should simply swallow
+ such <classname>slot_expired</classname> exceptions and move
+ on to the next slot.</para></effects>
 
- <returns><simpara>The result returned by the combiner.</simpara></returns>
+ <returns><para>The result returned by the combiner.</para></returns>
 
- <throws><simpara>If an exception is thrown by a slot call, or if the
+ <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.</simpara></throws>
+ slots will not be invoked.</para></throws>
 
- <notes><simpara>Only the slots associated with iterators that are
+ <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.</simpara>
+ cached.</para>
 
- <simpara>The <computeroutput>const</computeroutput> version of
+ <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>.</simpara>
+ non-<computeroutput>const</computeroutput>.</para>
 
- <simpara>Calling the function call operator may throw an
+ <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>&lt;T&gt;,
           but will throw when the return type is any other type (because there is no
- way to synthesize a return value).</simpara></notes>
+ way to synthesize a return value).</para></notes>
         </overloaded-method>
       </method-group>
 
@@ -312,16 +317,16 @@
         <method name="combiner" cv="const">
           <type>combiner_type</type>
 
- <returns><simpara>A copy of the stored combiner.</simpara></returns>
- <throws><simpara>Will not throw.</simpara></throws>
+ <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&amp;</paramtype></parameter>
 
- <effects><simpara>Copies a new combiner into the signal for use with
- future signal invocations.</simpara></effects>
- <throws><simpara>Will not throw.</simpara></throws>
+ <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>
@@ -374,8 +379,8 @@
           <default>group_compare_type()</default>
         </parameter>
 
- <effects><simpara>Initializes the base class with the given combiner
- and comparison objects.</simpara></effects>
+ <effects><para>Initializes the base class with the given combiner
+ and comparison objects.</para></effects>
       </constructor>
     </class>
   </namespace>

Modified: sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/slot.xml
==============================================================================
--- sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/slot.xml (original)
+++ sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/slot.xml 2007-09-23 22:10:33 EDT (Sun, 23 Sep 2007)
@@ -17,7 +17,9 @@
           <default><classname>functionN</classname>&lt;R, T1, T2, ..., TN&gt;</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>
@@ -52,12 +54,6 @@
       <typedef name="slot_function_type">
         <type>SlotFunction</type>
       </typedef>
- <typedef name="tracked_container_type">
- <type>std::vector&lt;weak_ptr&lt;void&gt; &gt;</type>
- </typedef>
- <typedef name="locked_container_type">
- <type>std::vector&lt;shared_ptr&lt;void&gt; &gt;</type>
- </typedef>
 
       <static-constant name="arity">
         <type>int</type>
@@ -141,7 +137,8 @@
         </parameter>
 
         <effects>
- <para>Syntactic sugar for <code>bind()</code>. As if:
+ <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>
@@ -164,19 +161,19 @@
             <parameter name="aN"><paramtype>argN_type</paramtype></parameter>
           </signature>
 
- <effects><simpara>Calls the slot's <code>SlotFunction</code> object.
- </simpara></effects>
+ <effects><para>Calls the slot's <code>SlotFunction</code> object.
+ </para></effects>
 
- <returns><simpara>The result returned by the slot's <code>SlotFunction</code> object.</simpara></returns>
+ <returns><para>The result returned by the slot's <code>SlotFunction</code> object.</para></returns>
 
- <throws><simpara>Any exceptions thrown by the slot's <code>SlotFunction</code> object.
+ <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.</simpara></throws>
+ has expired.</para></throws>
 
- <notes><simpara>If you have already used <methodname>lock</methodname> to insure the
+ <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.</simpara>
+ and call the slot's <code>SlotFunction</code> directly.</para>
           </notes>
         </overloaded-method>
       </method-group>
@@ -192,34 +189,20 @@
           <signature>
             <type>slotN &amp;</type>
             <parameter name="tracked_slot">
- <paramtype>const signalslib::detail::slot_base &amp;</paramtype>
+ <paramtype>const signalslib::slot_base &amp;</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>In the case of passing another slot as the argument to <code>track()</code>,
- only the objects in the other slot's tracked object list are added
+ 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 name = "expired" cv="const">
- <type>bool</type>
- <returns><para><code>true</code> if any tracked object has expired.</para></returns>
- </method>
- <method name = "lock" cv="const">
- <type>locked_container_type</type>
- <returns>A container holding <code>shared_ptr</code>s to each of the slot's tracked objects. As long
- as the returned container is kept in scope, none of the slot's tracked objects can expire.</returns>
- <throws><classname>expired_slot</classname> if any of the slot's tracked objects have expired.</throws>
- </method>
- <method name = "tracked_objects" cv="const">
- <type>const tracked_container_type &amp;</type>
- <returns>A const reference to the slot's list of tracked objects, in <code>weak_ptr</code> form.</returns>
- </method>
       </method-group>
 
       <method-group name="slot function access">
@@ -261,24 +244,50 @@
         class <classname>slotN</classname>.</para>
       </description>
 
- <constructor>
+ <constructor>
+ <template>
+ <template-type-parameter name="F"/>
+ </template>
+
+ <parameter name="f">
+ <paramtype>const F &amp;</paramtype>
+ </parameter>
+
+ <effects>
+ <para>Passes argument to the base type <classname>slotN</classname> constructor.</para>
+ </effects>
       </constructor>
- </class>
+ <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>
 
- <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>
+ <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>
- </namespace>
+ </namespace>
 </header>
\ No newline at end of file

Added: sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/slot_base.xml
==============================================================================
--- (empty file)
+++ sandbox/thread_safe_signals/libs/thread_safe_signals/doc/reference/slot_base.xml 2007-09-23 22:10:33 EDT (Sun, 23 Sep 2007)
@@ -0,0 +1,57 @@
+<?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) $">
+ <using-namespace name="boost"/>
+ <using-namespace name="boost::signalslib"/>
+ <namespace name="boost">
+ <namespace name="signalslib">
+ <class name="slot_base">
+ <purpose>Base class for slots.</purpose>
+
+ <description>
+ <para></para>
+ </description>
+
+ <typedef name="tracked_container_type">
+ <type>std::vector&lt;weak_ptr&lt;void&gt; &gt;</type>
+ </typedef>
+ <typedef name="locked_container_type">
+ <type>std::vector&lt;shared_ptr&lt;void&gt; &gt;</type>
+ </typedef>
+
+ <method-group name="tracking">
+ <method name = "expired" cv="const">
+ <type>bool</type>
+ <returns><para><code>true</code> if any tracked object has expired.</para></returns>
+ </method>
+ <method name = "lock" cv="const">
+ <type>locked_container_type</type>
+ <returns>A container holding <code>shared_ptr</code>s to each of the slot's tracked objects. As long
+ as the returned container is kept in scope, none of the slot's tracked objects can expire.</returns>
+ <throws><classname>expired_slot</classname> if any of the slot's tracked objects have expired.</throws>
+ </method>
+ <method name = "tracked_objects" cv="const">
+ <type>const tracked_container_type &amp;</type>
+ <returns>A const reference to the slot's list of tracked objects, in <code>weak_ptr</code> form.</returns>
+ </method>
+ </method-group>
+ </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>
+</header>
\ No newline at end of file


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