]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/include/parallel/numericfwd.h
Update copyright years in libstdc++-v3/
[thirdparty/gcc.git] / libstdc++-v3 / include / parallel / numericfwd.h
CommitLineData
cd1e6665 1// <parallel/numeric> Forward declarations -*- C++ -*-
c2ba9709 2
aa118a03 3// Copyright (C) 2007-2014 Free Software Foundation, Inc.
c2ba9709
JS
4//
5// This file is part of the GNU ISO C++ Library. This library is free
6// software; you can redistribute it and/or modify it under the terms
7// of the GNU General Public License as published by the Free Software
748086b7 8// Foundation; either version 3, or (at your option) any later
c2ba9709
JS
9// version.
10
11// This library is distributed in the hope that it will be useful, but
12// WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14// General Public License for more details.
15
748086b7
JJ
16// Under Section 7 of GPL version 3, you are granted additional
17// permissions described in the GCC Runtime Library Exception, version
18// 3.1, as published by the Free Software Foundation.
19
20// You should have received a copy of the GNU General Public License and
21// a copy of the GCC Runtime Library Exception along with this program;
22// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23// <http://www.gnu.org/licenses/>.
c2ba9709
JS
24
25/** @file parallel/numericfwd.h
26 * This file is a GNU parallel extension to the Standard C++ Library.
27 */
28
29#ifndef _GLIBCXX_PARALLEL_NUMERICFWD_H
30#define _GLIBCXX_PARALLEL_NUMERICFWD_H 1
31
32#pragma GCC system_header
33
34#include <parallel/tags.h>
35#include <parallel/settings.h>
36
12ffa228 37namespace std _GLIBCXX_VISIBILITY(default)
c2ba9709
JS
38{
39namespace __parallel
40{
5817ff8e
PC
41 template<typename _IIter, typename _Tp>
42 _Tp
43 accumulate(_IIter, _IIter, _Tp);
44
45 template<typename _IIter, typename _Tp>
46 _Tp
47 accumulate(_IIter, _IIter, _Tp, __gnu_parallel::sequential_tag);
48
49 template<typename _IIter, typename _Tp>
50 _Tp
ee1b5fc5 51 accumulate(_IIter, _IIter, _Tp, __gnu_parallel::_Parallelism);
5817ff8e
PC
52
53 template<typename _IIter, typename _Tp, typename _Tag>
54 _Tp
1acba85b 55 __accumulate_switch(_IIter, _IIter, _Tp, _Tag);
5817ff8e
PC
56
57 template<typename _IIter, typename _Tp, typename _BinaryOper>
58 _Tp
59 accumulate(_IIter, _IIter, _Tp, _BinaryOper);
60
61 template<typename _IIter, typename _Tp, typename _BinaryOper>
62 _Tp
63 accumulate(_IIter, _IIter, _Tp, _BinaryOper,
15ac3c72 64 __gnu_parallel::sequential_tag);
5817ff8e
PC
65
66 template<typename _IIter, typename _Tp, typename _BinaryOper>
67 _Tp
68 accumulate(_IIter, _IIter, _Tp, _BinaryOper,
15ac3c72 69 __gnu_parallel::_Parallelism);
5817ff8e
PC
70
71 template<typename _IIter, typename _Tp, typename _BinaryOper,
15ac3c72 72 typename _Tag>
5817ff8e 73 _Tp
1acba85b 74 __accumulate_switch(_IIter, _IIter, _Tp, _BinaryOper, _Tag);
5817ff8e
PC
75
76 template<typename _RAIter, typename _Tp, typename _BinaryOper>
77 _Tp
1acba85b 78 __accumulate_switch(_RAIter, _RAIter, _Tp, _BinaryOper,
15ac3c72
JS
79 random_access_iterator_tag,
80 __gnu_parallel::_Parallelism __parallelism
81 = __gnu_parallel::parallel_unbalanced);
c2ba9709 82
5817ff8e
PC
83 template<typename _IIter, typename _OIter>
84 _OIter
85 adjacent_difference(_IIter, _IIter, _OIter);
6f95a65a
BK
86
87 template<typename _IIter, typename _OIter, typename _BinaryOper>
5817ff8e
PC
88 _OIter
89 adjacent_difference(_IIter, _IIter, _OIter, _BinaryOper);
c2ba9709
JS
90
91 template<typename _IIter, typename _OIter>
5817ff8e
PC
92 _OIter
93 adjacent_difference(_IIter, _IIter, _OIter,
15ac3c72 94 __gnu_parallel::sequential_tag);
c2ba9709
JS
95
96 template<typename _IIter, typename _OIter, typename _BinaryOper>
5817ff8e
PC
97 _OIter
98 adjacent_difference(_IIter, _IIter, _OIter, _BinaryOper,
15ac3c72 99 __gnu_parallel::sequential_tag);
c2ba9709
JS
100
101 template<typename _IIter, typename _OIter>
5817ff8e
PC
102 _OIter
103 adjacent_difference(_IIter, _IIter, _OIter,
15ac3c72 104 __gnu_parallel::_Parallelism);
c2ba9709
JS
105
106 template<typename _IIter, typename _OIter, typename _BinaryOper>
5817ff8e
PC
107 _OIter
108 adjacent_difference(_IIter, _IIter, _OIter, _BinaryOper,
15ac3c72 109 __gnu_parallel::_Parallelism);
c2ba9709 110
5817ff8e 111 template<typename _IIter, typename _OIter, typename _BinaryOper,
15ac3c72 112 typename _Tag1, typename _Tag2>
5817ff8e 113 _OIter
1acba85b 114 __adjacent_difference_switch(_IIter, _IIter, _OIter, _BinaryOper,
15ac3c72 115 _Tag1, _Tag2);
c2ba9709
JS
116
117 template<typename _IIter, typename _OIter, typename _BinaryOper>
5817ff8e 118 _OIter
1acba85b 119 __adjacent_difference_switch(_IIter, _IIter, _OIter, _BinaryOper,
15ac3c72
JS
120 random_access_iterator_tag,
121 random_access_iterator_tag,
122 __gnu_parallel::_Parallelism __parallelism
123 = __gnu_parallel::parallel_unbalanced);
5817ff8e
PC
124
125 template<typename _IIter1, typename _IIter2, typename _Tp>
126 _Tp
127 inner_product(_IIter1, _IIter1, _IIter2, _Tp);
128
129 template<typename _IIter1, typename _IIter2, typename _Tp>
130 _Tp
131 inner_product(_IIter1, _IIter1, _IIter2, _Tp,
15ac3c72 132 __gnu_parallel::sequential_tag);
5817ff8e
PC
133
134 template<typename _IIter1, typename _IIter2, typename _Tp>
135 _Tp
136 inner_product(_IIter1, _IIter1, _IIter2, _Tp,
15ac3c72 137 __gnu_parallel::_Parallelism);
5817ff8e
PC
138
139 template<typename _IIter1, typename _IIter2, typename _Tp,
15ac3c72 140 typename _BinaryFunction1, typename _BinaryFunction2>
5817ff8e
PC
141 _Tp
142 inner_product(_IIter1, _IIter1, _IIter2, _Tp,
15ac3c72 143 _BinaryFunction1, _BinaryFunction2);
5817ff8e
PC
144
145 template<typename _IIter1, typename _IIter2, typename _Tp,
15ac3c72 146 typename _BinaryFunction1, typename _BinaryFunction2>
5817ff8e
PC
147 _Tp
148 inner_product(_IIter1, _IIter1, _IIter2, _Tp, _BinaryFunction1,
15ac3c72 149 _BinaryFunction2, __gnu_parallel::sequential_tag);
5817ff8e
PC
150
151 template<typename _IIter1, typename _IIter2, typename _Tp,
15ac3c72 152 typename BinaryFunction1, typename BinaryFunction2>
5817ff8e
PC
153 _Tp
154 inner_product(_IIter1, _IIter1, _IIter2, _Tp, BinaryFunction1,
15ac3c72 155 BinaryFunction2, __gnu_parallel::_Parallelism);
5817ff8e
PC
156
157 template<typename _RAIter1, typename _RAIter2, typename _Tp,
15ac3c72 158 typename BinaryFunction1, typename BinaryFunction2>
5817ff8e 159 _Tp
4459d22e 160 __inner_product_switch(_RAIter1, _RAIter1, _RAIter2, _Tp, BinaryFunction1,
15ac3c72
JS
161 BinaryFunction2, random_access_iterator_tag,
162 random_access_iterator_tag,
163 __gnu_parallel::_Parallelism
164 = __gnu_parallel::parallel_unbalanced);
5817ff8e
PC
165
166 template<typename _IIter1, typename _IIter2, typename _Tp,
15ac3c72
JS
167 typename _BinaryFunction1, typename _BinaryFunction2,
168 typename _Tag1, typename _Tag2>
5817ff8e 169 _Tp
1acba85b 170 __inner_product_switch(_IIter1, _IIter1, _IIter2, _Tp, _BinaryFunction1,
15ac3c72 171 _BinaryFunction2, _Tag1, _Tag2);
c2ba9709
JS
172
173
174 template<typename _IIter, typename _OIter>
5817ff8e
PC
175 _OIter
176 partial_sum(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag);
c2ba9709
JS
177
178 template<typename _IIter, typename _OIter, typename _BinaryOper>
5817ff8e
PC
179 _OIter
180 partial_sum(_IIter, _IIter, _OIter, _BinaryOper,
15ac3c72 181 __gnu_parallel::sequential_tag);
c2ba9709
JS
182
183 template<typename _IIter, typename _OIter>
5817ff8e 184 _OIter
1acba85b 185 partial_sum(_IIter, _IIter, _OIter __result);
c2ba9709
JS
186
187 template<typename _IIter, typename _OIter, typename _BinaryOper>
5817ff8e
PC
188 _OIter
189 partial_sum(_IIter, _IIter, _OIter, _BinaryOper);
c2ba9709 190
5817ff8e 191 template<typename _IIter, typename _OIter, typename _BinaryOper,
15ac3c72 192 typename _Tag1, typename _Tag2>
5817ff8e 193 _OIter
1acba85b 194 __partial_sum_switch(_IIter, _IIter, _OIter, _BinaryOper, _Tag1, _Tag2);
c2ba9709
JS
195
196 template<typename _IIter, typename _OIter, typename _BinaryOper>
5817ff8e 197 _OIter
1acba85b 198 __partial_sum_switch(_IIter, _IIter, _OIter, _BinaryOper,
15ac3c72 199 random_access_iterator_tag, random_access_iterator_tag);
c2ba9709
JS
200} // end namespace
201} // end namespace
202
cbcd1e45 203#endif /* _GLIBCXX_PARALLEL_NUMERICFWD_H */