<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE section PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
  "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
<!--
Copyright Douglas Gregor 2001-2004
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)
-->
<section last-revision="$Date: 2007-06-12 14:01:23 -0400 (Tue, 12 Jun 2007) $" id="signals2.examples">
  <title>Example programs</title>

  <using-namespace name="boost::signals2"/>
  <using-namespace name="boost"/>

  <section id="signals2.examples.misc">
    <title>Miscellaneous Tutorial Examples</title>
    <section id="signals2.examples.tutorial.hello_world_slot">
      <title>hello_world_slot</title>
      <para>
        This example is a basic example of connecting a slot to a signal
        and then invoking the signal.
      </para>
      <para>
        Download <ulink url="boost:/libs/signals2/example/hello_world_slot.cpp">hello_world_slot.cpp</ulink>.
      </para>
    </section>
    <section id="signals2.examples.tutorial.hello_world_multi_slot">
      <title>hello_world_multi_slot</title>
      <para>
        This example extends the hello_world_slot example slightly by connecting more than one
        slot to the signal before invoking it.
      </para>
      <para>
        Download <ulink url="boost:/libs/signals2/example/hello_world_multi_slot.cpp">hello_world_multi_slot.cpp</ulink>.
      </para>
    </section>
    <section id="signals2.examples.tutorial.ordering_slots">
      <title>ordering_slots</title>
      <para>
        This example extends the hello_world_multi_slot example slightly by
        using slot groups to specify
        the order slots should be invoked.
      </para>
      <para>
        Download <ulink url="boost:/libs/signals2/example/ordering_slots.cpp">ordering_slots.cpp</ulink>.
      </para>
    </section>
    <section id="signals2.examples.tutorial.slot_arguments">
      <title>slot_arguments</title>
      <para>
        The slot_arguments program shows how to pass arguments from a signal invocation to slots.
      </para>
      <para>
        Download <ulink url="boost:/libs/signals2/example/slot_arguments.cpp">slot_arguments.cpp</ulink>.
      </para>
    </section>
    <section id="signals2.examples.tutorial.signal_return_value">
      <title>signal_return_value</title>
      <para>
        This example shows how to return a value from slots to the signal invocation.
        It uses the default <classname>optional_last_value</classname> combiner.
      </para>
      <para>
        Download <ulink url="boost:/libs/signals2/example/signal_return_value.cpp">signal_return_value.cpp</ulink>.
      </para>
    </section>
    <section id="signals2.examples.tutorial.custom_combiners">
      <title>custom_combiners</title>
      <para>
        This example shows more returning of values from slots to the signal invocation.
        This time, custom combiners are defined and used.
      </para>
      <para>
        Download <ulink url="boost:/libs/signals2/example/custom_combiners.cpp">custom_combiners.cpp</ulink>.
      </para>
    </section>
    <section id="signals2.examples.tutorial.disconnect_and_block">
      <title>disconnect_and_block</title>
      <para>
        This example demonstrates various means of manually disconnecting slots, as well as temporarily
        blocking them via <classname>shared_connection_block</classname>.
      </para>
      <para>
        Download <ulink url="boost:/libs/signals2/example/disconnect_and_block.cpp">disconnect_and_block.cpp</ulink>.
      </para>
    </section>
    <section id="signals2.examples.tutorial.passing_slots">
      <title>passing_slots</title>
      <para>
        This example demonstrates the passing of slot functions to a private signal
        through a non-template interface.
      </para>
      <para>
        Download <ulink url="boost:/libs/signals2/example/passing_slots.cpp">passing_slots.cpp</ulink>.
      </para>
    </section>
    <section id="signals2.examples.tutorial.extended_slot">
      <title>extended_slot</title>
      <para>
        This example demonstrates connecting an extended slot to a signal.  An extended slot
        accepts a reference to its invoking signal-slot connection as an additional argument,
        permitting the slot to temporarily block or permanently disconnect itself.
      </para>
      <para>
        Download <ulink url="boost:/libs/signals2/example/extended_slot.cpp">extended_slot.cpp</ulink>.
      </para>
    </section>
  </section>
  <section id="signals2.examples.document-view">
    <title>Document-View</title>
    <section id="signals2.examples.document-view.doc_view">
      <title>doc_view</title>
      <para>
        This is the document-view example program which is described in the
        <link linkend="signals2.tutorial.document-view">tutorial</link>.  It shows
        usage of a signal and slots to implement two different views of
        a text document.
      </para>
      <para>
        Download <ulink url="boost:/libs/signals2/example/doc_view.cpp">doc_view.cpp</ulink>.
      </para>
    </section>
    <section id="signals2.examples.document-view.doc_view_acm">
      <title>doc_view_acm</title>
      <para>
        This program modifies the original doc_view.cpp example to employ
        automatic connection management.
      </para>
      <para>
        Download <ulink url="boost:/libs/signals2/example/doc_view_acm.cpp">doc_view_acm.cpp</ulink>.
      </para>
    </section>
    <section id="signals2.examples.document-view.doc_view_acm_deconstruct">
      <title>doc_view_acm_deconstruct</title>
      <para>
        This program modifies the doc_view_acm.cpp example to use postconstructors
        and the <functionname>deconstruct()</functionname> factory function.
      </para>
      <para>
        Download <ulink url="boost:/libs/signals2/example/doc_view_acm_deconstruct.cpp">doc_view_acm_deconstruct.cpp</ulink>.
      </para>
    </section>
  </section>
  <section id="signals2.examples.deconstruct">
    <title>Postconstructors and Predestructors with <code>deconstruct()</code></title>
    <section id="signals2.examples.deconstruct.postconstructor_ex1">
      <title>postconstructor_ex1</title>
      <para>
        This program is a basic example of how to define a class with a postconstructor which
        uses <functionname>deconstruct()</functionname> as its factory function.
      </para>
      <para>
        Download <ulink url="boost:/libs/signals2/example/postconstructor_ex1.cpp">postconstructor_ex1</ulink>.
      </para>
    </section>
    <section id="signals2.examples.deconstruct.postconstructor_ex2">
      <title>postconstructor_ex2</title>
      <para>
        This program extends the postconstructor_ex1 example slightly, by additionally passing arguments from
        the <functionname>deconstruct()</functionname> call through to the class' constructor
        and postconstructor.
      </para>
      <para>
        Download <ulink url="boost:/libs/signals2/example/postconstructor_ex2.cpp">postconstructor_ex2</ulink>.
      </para>
    </section>
    <section id="signals2.examples.deconstruct.predestructor_example">
      <title>predestructor_example</title>
      <para>
        This program is a basic example of how to define a class with a predestructor which
        uses <functionname>deconstruct()</functionname> as its factory function.
      </para>
      <para>
        Download <ulink url="boost:/libs/signals2/example/predestructor_example.cpp">predestructor_example</ulink>.
      </para>
    </section>
  </section>
</section>
