summaryrefslogtreecommitdiff
path: root/doc/html/PrimitiveTransform.html
blob: 0ccc92a84d06a38a0d0857b09049648e38be48af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Concept PrimitiveTransform</title>
<link rel="stylesheet" href="../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
<link rel="up" href="proto/reference.html" title="Reference">
<link rel="prev" href="PolymorphicFunctionObject.html" title="Concept PolymorphicFunctionObject">
<link rel="next" href="Transform.html" title="Concept Transform">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
<td align="center"><a href="../../index.html">Home</a></td>
<td align="center"><a href="../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="PolymorphicFunctionObject.html"><img src="../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="proto/reference.html"><img src="../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="Transform.html"><img src="../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="refentry">
<a name="PrimitiveTransform"></a><div class="titlepage"></div>
<div class="refnamediv">
<h2><span class="refentrytitle">Concept PrimitiveTransform</span></h2>
<p>PrimitiveTransform</p>
</div>
<div class="refsect1">
<a name="idp486337584"></a><h2>Description</h2>
<p>
      A PrimitiveTransform is a class type that
      has a nested class template called
      <code class="computeroutput">impl&lt;&gt;</code> that takes
      three template parameters representing an expression
      type, a state type and a data type. Specializations
      of the nested impl template are ternary monomorphic
      function objects that accept expression, state, and
      data parameters. A PrimitiveTransform is also a
      <a class="link" href="PolymorphicFunctionObject.html" title="Concept PolymorphicFunctionObject">PolymorphicFunctionObject</a>
      implemented in terms of the nested
      <code class="computeroutput">impl&lt;&gt;</code> template.
    </p>
</div>
<div class="refsect1">
<a name="idp486341264"></a><h2>Associated types</h2>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<p><span class="bold"><strong>result_type</strong></span></p>
<pre class="literallayout">typename Fn::template impl&lt;Expr, State, Data&gt;::result_type</pre>
<p>
      </p>
<p>The return type of the overloaded function call operator.</p>
<p>
    </p>
</li></ul></div>
</div>
<div class="refsect1">
<a name="idp486344176"></a><h2>Notation</h2>
<div class="variablelist"><dl class="variablelist">
<dt><span class="term">Fn</span></dt>
<dd>A type playing the role of primitive-transform-type in the <a class="link" href="PrimitiveTransform.html" title="Concept PrimitiveTransform">PrimitiveTransform</a> concept.</dd>
<dt><span class="term">Expr</span></dt>
<dd>A type playing the role of expression-type in the <a class="link" href="PrimitiveTransform.html" title="Concept PrimitiveTransform">PrimitiveTransform</a> concept.</dd>
<dt><span class="term">State</span></dt>
<dd>A type playing the role of state-type in the <a class="link" href="PrimitiveTransform.html" title="Concept PrimitiveTransform">PrimitiveTransform</a> concept.</dd>
<dt><span class="term">Data</span></dt>
<dd>A type playing the role of data-type in the <a class="link" href="PrimitiveTransform.html" title="Concept PrimitiveTransform">PrimitiveTransform</a> concept.</dd>
<dt><span class="term"><code class="varname">fn</code></span></dt>
<dd>Object of type Fn</dd>
<dt><span class="term"><code class="varname">expr</code></span></dt>
<dd>Object of type Expr</dd>
<dt><span class="term"><code class="varname">state</code></span></dt>
<dd>Object of type State</dd>
<dt><span class="term"><code class="varname">data</code></span></dt>
<dd>Object of type Data</dd>
</dl></div>
</div>
<div class="refsect1">
<a name="idp486355296"></a><h2>Valid expressions</h2>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>Name</th>
<th>Expression</th>
<th>Type</th>
<th>Semantics</th>
</tr></thead>
<tbody>
<tr>
<td><p>Polymorphic Function Call 1</p></td>
<td><p>fn(expr)</p></td>
<td><p><span class="type">result_type</span></p></td>
<td><p>Applies the transform.</p></td>
</tr>
<tr>
<td><p>Polymorphic Function Call 2</p></td>
<td><p>fn(expr, state)</p></td>
<td><p><span class="type">result_type</span></p></td>
<td><p>Applies the transform.</p></td>
</tr>
<tr>
<td><p>Polymorphic Function Call 3</p></td>
<td><p>fn(expr, state, data)</p></td>
<td><p><span class="type">result_type</span></p></td>
<td><p>Applies the transform.</p></td>
</tr>
<tr>
<td><p>Monomorphic Function Call</p></td>
<td><p>typename Fn::template impl&lt; Expr, State, Data &gt;()(expr, state, data)</p></td>
<td><p><span class="type">result_type</span></p></td>
<td><p>Applies the transform.</p></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="idp486365632"></a><h2>Models</h2>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><span class="simplelist"><span class="type">boost::proto::_child_c&lt; 0 &gt;</span></span></li></ul></div>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2008 Eric Niebler<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="PolymorphicFunctionObject.html"><img src="../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="proto/reference.html"><img src="../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="Transform.html"><img src="../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>