]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/signals2/doc/reference/signal_type.xml
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / signals2 / doc / reference / signal_type.xml
CommitLineData
7c673cae
FG
1<?xml version="1.0" encoding="utf-8"?>
2<!DOCTYPE header PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
3 "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
4<!--
5Copyright Frank Mori Hess 2009
6
7Distributed under the Boost Software License, Version 1.0. (See accompanying
8file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9-->
10<header name="boost/signals2/signal_type.hpp" last-revision="$Date: 2007-03-06 16:51:55 -0500 (Tue, 06 Mar 2007) $">
11 <namespace name="boost">
12 <namespace name="signals2">
13 <namespace name="keywords">
14 <class name="signature_type">
15 <inherit access="public"><emphasis>unspecified-type</emphasis></inherit>
16 <template>
17 <template-type-parameter name="Signature"/>
18 </template>
19 <purpose>A template keyword for <classname>signal_type</classname>.</purpose>
20 <description>
21 <para>
22 This class is a template keyword which may be used to pass the wrapped <code>Signature</code>
23 template type to the <classname>signal_type</classname> metafunction as a named parameter.
24 </para>
25 <para>
26 The code for this class is generated by a calling a macro from the Boost.Parameter library:
27 <code>BOOST_PARAMETER_TEMPLATE_KEYWORD(signature_type)</code>
28 </para>
29 </description>
30 </class>
31 <class name="combiner_type">
32 <inherit access="public"><emphasis>unspecified-type</emphasis></inherit>
33 <template>
34 <template-type-parameter name="Combiner"/>
35 </template>
36 <purpose>A template keyword for <classname>signal_type</classname>.</purpose>
37 <description>
38 <para>
39 This class is a template keyword which may be used to pass the wrapped <code>Combiner</code>
40 template type to the <classname>signal_type</classname> metafunction as a named parameter.
41 </para>
42 <para>
43 The code for this class is generated by a calling a macro from the Boost.Parameter library:
44 <code>BOOST_PARAMETER_TEMPLATE_KEYWORD(combiner_type)</code>
45 </para>
46 </description>
47 </class>
48 <class name="group_type">
49 <inherit access="public"><emphasis>unspecified-type</emphasis></inherit>
50 <template>
51 <template-type-parameter name="Group"/>
52 </template>
53 <purpose>A template keyword for <classname>signal_type</classname>.</purpose>
54 <description>
55 <para>
56 This class is a template keyword which may be used to pass the wrapped <code>Group</code>
57 template type to the <classname>signal_type</classname> metafunction as a named parameter.
58 </para>
59 <para>
60 The code for this class is generated by a calling a macro from the Boost.Parameter library:
61 <code>BOOST_PARAMETER_TEMPLATE_KEYWORD(group_type)</code>
62 </para>
63 </description>
64 </class>
65 <class name="group_compare_type">
66 <inherit access="public"><emphasis>unspecified-type</emphasis></inherit>
67 <template>
68 <template-type-parameter name="GroupCompare"/>
69 </template>
70 <purpose>A template keyword for <classname>signal_type</classname>.</purpose>
71 <description>
72 <para>
73 This class is a template keyword which may be used to pass the wrapped <code>GroupCompare</code>
74 template type to the <classname>signal_type</classname> metafunction as a named parameter.
75 </para>
76 <para>
77 The code for this class is generated by a calling a macro from the Boost.Parameter library:
78 <code>BOOST_PARAMETER_TEMPLATE_KEYWORD(group_compare_type)</code>
79 </para>
80 </description>
81 </class>
82 <class name="slot_function_type">
83 <inherit access="public"><emphasis>unspecified-type</emphasis></inherit>
84 <template>
85 <template-type-parameter name="SlotFunction"/>
86 </template>
87 <purpose>A template keyword for <classname>signal_type</classname>.</purpose>
88 <description>
89 <para>
90 This class is a template keyword which may be used to pass the wrapped <code>SlotFunction</code>
91 template type to the <classname>signal_type</classname> metafunction as a named parameter.
92 </para>
93 <para>
94 The code for this class is generated by a calling a macro from the Boost.Parameter library:
95 <code>BOOST_PARAMETER_TEMPLATE_KEYWORD(slot_function_type)</code>
96 </para>
97 </description>
98 </class>
99 <class name="extended_slot_function_type">
100 <inherit access="public"><emphasis>unspecified-type</emphasis></inherit>
101 <template>
102 <template-type-parameter name="ExtendedSlotFunction"/>
103 </template>
104 <purpose>A template keyword for <classname>signal_type</classname>.</purpose>
105 <description>
106 <para>
107 This class is a template keyword which may be used to pass the wrapped <code>ExtendedSlotFunction</code>
108 template type to the <classname>signal_type</classname> metafunction as a named parameter.
109 </para>
110 <para>
111 The code for this class is generated by a calling a macro from the Boost.Parameter library:
112 <code>BOOST_PARAMETER_TEMPLATE_KEYWORD(extended_slot_function_type)</code>
113 </para>
114 </description>
115 </class>
116 <class name="mutex_type">
117 <inherit access="public"><emphasis>unspecified-type</emphasis></inherit>
118 <template>
119 <template-type-parameter name="Mutex"/>
120 </template>
121 <purpose>A template keyword for <classname>signal_type</classname>.</purpose>
122 <description>
123 <para>
124 This class is a template keyword which may be used to pass the wrapped <code>Mutex</code>
125 template type to the <classname>signal_type</classname> metafunction as a named parameter.
126 </para>
127 <para>
128 The code for this class is generated by a calling a macro from the Boost.Parameter library:
129 <code>BOOST_PARAMETER_TEMPLATE_KEYWORD(mutex_type)</code>
130 </para>
131 </description>
132 </class>
133 </namespace>
134 <class name="signal_type">
135 <template>
136 <template-type-parameter name="A0"/>
137 <template-type-parameter name="A1">
138 <default>boost::parameter::void_</default>
139 </template-type-parameter>
140 <template-type-parameter name="A2">
141 <default>boost::parameter::void_</default>
142 </template-type-parameter>
143 <template-type-parameter name="A3">
144 <default>boost::parameter::void_</default>
145 </template-type-parameter>
146 <template-type-parameter name="A4">
147 <default>boost::parameter::void_</default>
148 </template-type-parameter>
149 <template-type-parameter name="A5">
150 <default>boost::parameter::void_</default>
151 </template-type-parameter>
152 <template-type-parameter name="A6">
153 <default>boost::parameter::void_</default>
154 </template-type-parameter>
155 </template>
156 <purpose>Specify a the template type parameters of a <classname>boost::signals2::signal</classname> using named parameters.</purpose>
157 <description>
158 <para>The <code>signal_type</code> metafunction employs the Boost.Parameter library to
159 allow users to specify the template type parameters of a <classname>signals2::signal</classname>
160 using named parameters. The resulting signal type is provided through the
161 <code>signal_type::type</code> typedef. Named template type parameters
162 can enhance readability of code, and provide convenience for specifying classes
163 which have a large number of template parameters.
164 </para>
165 <para>The template type parameters may be passed positionally, similarly to passing them
166 to the <classname>signals2::signal</classname> class directly. Or, they may be passed as named template parameters
167 by wrapping them in one of the template keyword classes provided in the
168 <code>boost::signals2::keywords</code> namespace. The supported template keywords are:
169 <classname>keywords::signature_type</classname>, <classname>keywords::combiner_type</classname>,
170 <classname>keywords::group_type</classname>, <classname>keywords::group_compare_type</classname>,
171 <classname>keywords::slot_function_type</classname>, <classname>keywords::extended_slot_function_type</classname>,
172 and <classname>keywords::mutex_type</classname>.
173 </para>
174 <para>The default types for unspecified template type parameters are the same as those for the
175 <classname>signal</classname> class.
176 </para>
177 <para>
178 Named template type parameters are especially convenient when you only wish to change a
179 few of a signal's template type parameters from their defaults, and the parameters
180 you wish to change are near the end of the signal's template parameter list.
181 For example, if you only wish to change the <code>Mutex</code> template type
182 parameter of a signal, you might write:
183 </para>
184<programlisting>namespace bs2 = boost::signals2;
185using bs2::keywords;
186bs2::signal_type&lt;void (), mutex_type&lt;bs2::dummy_mutex&gt; &gt;::type sig;
187</programlisting>
188 <para>For comparison, to specify the same type using the signal class directly looks like:</para>
189<programlisting>namespace bs2 = boost::signals2;
190bs2::signal
191 &lt;
192 void (),
193 bs2::optional_last_value&lt;void&gt;,
194 int,
195 std::less&lt;int&gt;,
196 boost::function&lt;void ()&gt;,
197 boost::function&lt;void (const connection &amp;)&gt;,
198 bs2::dummy_mutex
199 &gt; sig;
200</programlisting>
201 </description>
202 <typedef name="signature_type">
203 <type><emphasis>implementation-detail</emphasis></type>
204 </typedef>
205 <typedef name="combiner_type">
206 <type><emphasis>implementation-detail</emphasis></type>
207 </typedef>
208 <typedef name="group_type">
209 <type><emphasis>implementation-detail</emphasis></type>
210 </typedef>
211 <typedef name="group_compare_type">
212 <type><emphasis>implementation-detail</emphasis></type>
213 </typedef>
214 <typedef name="slot_function_type">
215 <type><emphasis>implementation-detail</emphasis></type>
216 </typedef>
217 <typedef name="extended_slot_function_type">
218 <type><emphasis>implementation-detail</emphasis></type>
219 </typedef>
220 <typedef name="mutex_type">
221 <type><emphasis>implementation-detail</emphasis></type>
222 </typedef>
223 <typedef name="type">
224 <type>typename signal&lt;signature_type, combiner_type, ..., mutex_type&gt;</type>
225 </typedef>
226 </class>
227 </namespace>
228 </namespace>
229</header>