123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- <?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 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/signal_type.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
- <namespace name="boost">
- <namespace name="signals2">
- <namespace name="keywords">
- <class name="signature_type">
- <inherit access="public"><emphasis>unspecified-type</emphasis></inherit>
- <template>
- <template-type-parameter name="Signature"/>
- </template>
- <purpose>A template keyword for <classname>signal_type</classname>.</purpose>
- <description>
- <para>
- This class is a template keyword which may be used to pass the wrapped <code>Signature</code>
- template type to the <classname>signal_type</classname> metafunction as a named parameter.
- </para>
- <para>
- The code for this class is generated by a calling a macro from the Boost.Parameter library:
- <code>BOOST_PARAMETER_TEMPLATE_KEYWORD(signature_type)</code>
- </para>
- </description>
- </class>
- <class name="combiner_type">
- <inherit access="public"><emphasis>unspecified-type</emphasis></inherit>
- <template>
- <template-type-parameter name="Combiner"/>
- </template>
- <purpose>A template keyword for <classname>signal_type</classname>.</purpose>
- <description>
- <para>
- This class is a template keyword which may be used to pass the wrapped <code>Combiner</code>
- template type to the <classname>signal_type</classname> metafunction as a named parameter.
- </para>
- <para>
- The code for this class is generated by a calling a macro from the Boost.Parameter library:
- <code>BOOST_PARAMETER_TEMPLATE_KEYWORD(combiner_type)</code>
- </para>
- </description>
- </class>
- <class name="group_type">
- <inherit access="public"><emphasis>unspecified-type</emphasis></inherit>
- <template>
- <template-type-parameter name="Group"/>
- </template>
- <purpose>A template keyword for <classname>signal_type</classname>.</purpose>
- <description>
- <para>
- This class is a template keyword which may be used to pass the wrapped <code>Group</code>
- template type to the <classname>signal_type</classname> metafunction as a named parameter.
- </para>
- <para>
- The code for this class is generated by a calling a macro from the Boost.Parameter library:
- <code>BOOST_PARAMETER_TEMPLATE_KEYWORD(group_type)</code>
- </para>
- </description>
- </class>
- <class name="group_compare_type">
- <inherit access="public"><emphasis>unspecified-type</emphasis></inherit>
- <template>
- <template-type-parameter name="GroupCompare"/>
- </template>
- <purpose>A template keyword for <classname>signal_type</classname>.</purpose>
- <description>
- <para>
- This class is a template keyword which may be used to pass the wrapped <code>GroupCompare</code>
- template type to the <classname>signal_type</classname> metafunction as a named parameter.
- </para>
- <para>
- The code for this class is generated by a calling a macro from the Boost.Parameter library:
- <code>BOOST_PARAMETER_TEMPLATE_KEYWORD(group_compare_type)</code>
- </para>
- </description>
- </class>
- <class name="slot_function_type">
- <inherit access="public"><emphasis>unspecified-type</emphasis></inherit>
- <template>
- <template-type-parameter name="SlotFunction"/>
- </template>
- <purpose>A template keyword for <classname>signal_type</classname>.</purpose>
- <description>
- <para>
- This class is a template keyword which may be used to pass the wrapped <code>SlotFunction</code>
- template type to the <classname>signal_type</classname> metafunction as a named parameter.
- </para>
- <para>
- The code for this class is generated by a calling a macro from the Boost.Parameter library:
- <code>BOOST_PARAMETER_TEMPLATE_KEYWORD(slot_function_type)</code>
- </para>
- </description>
- </class>
- <class name="extended_slot_function_type">
- <inherit access="public"><emphasis>unspecified-type</emphasis></inherit>
- <template>
- <template-type-parameter name="ExtendedSlotFunction"/>
- </template>
- <purpose>A template keyword for <classname>signal_type</classname>.</purpose>
- <description>
- <para>
- This class is a template keyword which may be used to pass the wrapped <code>ExtendedSlotFunction</code>
- template type to the <classname>signal_type</classname> metafunction as a named parameter.
- </para>
- <para>
- The code for this class is generated by a calling a macro from the Boost.Parameter library:
- <code>BOOST_PARAMETER_TEMPLATE_KEYWORD(extended_slot_function_type)</code>
- </para>
- </description>
- </class>
- <class name="mutex_type">
- <inherit access="public"><emphasis>unspecified-type</emphasis></inherit>
- <template>
- <template-type-parameter name="Mutex"/>
- </template>
- <purpose>A template keyword for <classname>signal_type</classname>.</purpose>
- <description>
- <para>
- This class is a template keyword which may be used to pass the wrapped <code>Mutex</code>
- template type to the <classname>signal_type</classname> metafunction as a named parameter.
- </para>
- <para>
- The code for this class is generated by a calling a macro from the Boost.Parameter library:
- <code>BOOST_PARAMETER_TEMPLATE_KEYWORD(mutex_type)</code>
- </para>
- </description>
- </class>
- </namespace>
- <class name="signal_type">
- <template>
- <template-type-parameter name="A0"/>
- <template-type-parameter name="A1">
- <default>boost::parameter::void_</default>
- </template-type-parameter>
- <template-type-parameter name="A2">
- <default>boost::parameter::void_</default>
- </template-type-parameter>
- <template-type-parameter name="A3">
- <default>boost::parameter::void_</default>
- </template-type-parameter>
- <template-type-parameter name="A4">
- <default>boost::parameter::void_</default>
- </template-type-parameter>
- <template-type-parameter name="A5">
- <default>boost::parameter::void_</default>
- </template-type-parameter>
- <template-type-parameter name="A6">
- <default>boost::parameter::void_</default>
- </template-type-parameter>
- </template>
- <purpose>Specify a the template type parameters of a <classname>boost::signals2::signal</classname> using named parameters.</purpose>
- <description>
- <para>The <code>signal_type</code> metafunction employs the Boost.Parameter library to
- allow users to specify the template type parameters of a <classname>signals2::signal</classname>
- using named parameters. The resulting signal type is provided through the
- <code>signal_type::type</code> typedef. Named template type parameters
- can enhance readability of code, and provide convenience for specifying classes
- which have a large number of template parameters.
- </para>
- <para>The template type parameters may be passed positionally, similarly to passing them
- to the <classname>signals2::signal</classname> class directly. Or, they may be passed as named template parameters
- by wrapping them in one of the template keyword classes provided in the
- <code>boost::signals2::keywords</code> namespace. The supported template keywords are:
- <classname>keywords::signature_type</classname>, <classname>keywords::combiner_type</classname>,
- <classname>keywords::group_type</classname>, <classname>keywords::group_compare_type</classname>,
- <classname>keywords::slot_function_type</classname>, <classname>keywords::extended_slot_function_type</classname>,
- and <classname>keywords::mutex_type</classname>.
- </para>
- <para>The default types for unspecified template type parameters are the same as those for the
- <classname>signal</classname> class.
- </para>
- <para>
- Named template type parameters are especially convenient when you only wish to change a
- few of a signal's template type parameters from their defaults, and the parameters
- you wish to change are near the end of the signal's template parameter list.
- For example, if you only wish to change the <code>Mutex</code> template type
- parameter of a signal, you might write:
- </para>
- <programlisting>namespace bs2 = boost::signals2;
- using namespace bs2::keywords;
- bs2::signal_type<void (), mutex_type<bs2::dummy_mutex> >::type sig;
- </programlisting>
- <para>For comparison, to specify the same type using the signal class directly looks like:</para>
- <programlisting>namespace bs2 = boost::signals2;
- bs2::signal
- <
- void (),
- bs2::optional_last_value<void>,
- int,
- std::less<int>,
- boost::function<void ()>,
- boost::function<void (const connection &)>,
- bs2::dummy_mutex
- > sig;
- </programlisting>
- </description>
- <typedef name="signature_type">
- <type><emphasis>implementation-detail</emphasis></type>
- </typedef>
- <typedef name="combiner_type">
- <type><emphasis>implementation-detail</emphasis></type>
- </typedef>
- <typedef name="group_type">
- <type><emphasis>implementation-detail</emphasis></type>
- </typedef>
- <typedef name="group_compare_type">
- <type><emphasis>implementation-detail</emphasis></type>
- </typedef>
- <typedef name="slot_function_type">
- <type><emphasis>implementation-detail</emphasis></type>
- </typedef>
- <typedef name="extended_slot_function_type">
- <type><emphasis>implementation-detail</emphasis></type>
- </typedef>
- <typedef name="mutex_type">
- <type><emphasis>implementation-detail</emphasis></type>
- </typedef>
- <typedef name="type">
- <type>typename signal<signature_type, combiner_type, ..., mutex_type></type>
- </typedef>
- </class>
- </namespace>
- </namespace>
- </header>
|