<?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">
<!--
Copyright Frank Mori Hess 2007-2009

Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-->
<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::signals2"/>
  <using-namespace name="boost"/>
  <namespace name="boost">
    <namespace name="signals2">
      <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>
      <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.
        </description>
        <method name="what" cv="const" specifiers="virtual">
          <type>const char * </type>
        </method>
      </class>
    </namespace>
  </namespace>
</header>
