ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MSYS2/mingw32/include/c++/11.2.0/pstl/numeric_fwd.h
Revision: 1166
Committed: Tue Oct 26 14:22:36 2021 UTC (4 years ago) by rossy
Content type: text/x-chdr
File size: 7929 byte(s)
Log Message:
Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File Contents

# Content
1 // -*- C++ -*-
2 //===-- numeric_fwd.h --------------------------------------------------===//
3 //
4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // See https://llvm.org/LICENSE.txt for license information.
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //
8 //===----------------------------------------------------------------------===//
9
10 #ifndef _PSTL_NUMERIC_FWD_H
11 #define _PSTL_NUMERIC_FWD_H
12
13 #include <type_traits>
14 #include <utility>
15
16 namespace __pstl
17 {
18 namespace __internal
19 {
20
21 //------------------------------------------------------------------------
22 // transform_reduce (version with two binary functions, according to draft N4659)
23 //------------------------------------------------------------------------
24
25 template <class _ForwardIterator1, class _ForwardIterator2, class _Tp, class _BinaryOperation1, class _BinaryOperation2>
26 _Tp __brick_transform_reduce(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _Tp, _BinaryOperation1,
27 _BinaryOperation2,
28 /*__is_vector=*/std::true_type) noexcept;
29
30 template <class _ForwardIterator1, class _ForwardIterator2, class _Tp, class _BinaryOperation1, class _BinaryOperation2>
31 _Tp __brick_transform_reduce(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _Tp, _BinaryOperation1,
32 _BinaryOperation2,
33 /*__is_vector=*/std::false_type) noexcept;
34
35 template <class _ExecutionPolicy, class _ForwardIterator1, class _ForwardIterator2, class _Tp, class _BinaryOperation1,
36 class _BinaryOperation2, class _IsVector>
37 _Tp
38 __pattern_transform_reduce(_ExecutionPolicy&&, _ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _Tp,
39 _BinaryOperation1, _BinaryOperation2, _IsVector,
40 /*is_parallel=*/std::false_type) noexcept;
41
42 template <class _ExecutionPolicy, class _RandomAccessIterator1, class _RandomAccessIterator2, class _Tp,
43 class _BinaryOperation1, class _BinaryOperation2, class _IsVector>
44 _Tp
45 __pattern_transform_reduce(_ExecutionPolicy&&, _RandomAccessIterator1, _RandomAccessIterator1, _RandomAccessIterator2,
46 _Tp, _BinaryOperation1, _BinaryOperation2, _IsVector __is_vector,
47 /*is_parallel=*/std::true_type);
48
49 //------------------------------------------------------------------------
50 // transform_reduce (version with unary and binary functions)
51 //------------------------------------------------------------------------
52
53 template <class _ForwardIterator, class _Tp, class _UnaryOperation, class _BinaryOperation>
54 _Tp __brick_transform_reduce(_ForwardIterator, _ForwardIterator, _Tp, _BinaryOperation, _UnaryOperation,
55 /*is_vector=*/std::true_type) noexcept;
56
57 template <class _ForwardIterator, class _Tp, class _BinaryOperation, class _UnaryOperation>
58 _Tp __brick_transform_reduce(_ForwardIterator, _ForwardIterator, _Tp, _BinaryOperation, _UnaryOperation,
59 /*is_vector=*/std::false_type) noexcept;
60
61 template <class _ExecutionPolicy, class _ForwardIterator, class _Tp, class _BinaryOperation, class _UnaryOperation,
62 class _IsVector>
63 _Tp
64 __pattern_transform_reduce(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Tp, _BinaryOperation,
65 _UnaryOperation, _IsVector,
66 /*is_parallel=*/std::false_type) noexcept;
67
68 template <class _ExecutionPolicy, class _ForwardIterator, class _Tp, class _BinaryOperation, class _UnaryOperation,
69 class _IsVector>
70 _Tp
71 __pattern_transform_reduce(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _Tp, _BinaryOperation,
72 _UnaryOperation, _IsVector,
73 /*is_parallel=*/std::true_type);
74
75 //------------------------------------------------------------------------
76 // transform_exclusive_scan
77 //
78 // walk3 evaluates f(x,y,z) for (x,y,z) drawn from [first1,last1), [first2,...), [first3,...)
79 //------------------------------------------------------------------------
80
81 template <class _ForwardIterator, class _OutputIterator, class _UnaryOperation, class _Tp, class _BinaryOperation>
82 std::pair<_OutputIterator, _Tp> __brick_transform_scan(_ForwardIterator, _ForwardIterator, _OutputIterator,
83 _UnaryOperation, _Tp, _BinaryOperation,
84 /*Inclusive*/ std::false_type) noexcept;
85
86 template <class _ForwardIterator, class _OutputIterator, class _UnaryOperation, class _Tp, class _BinaryOperation>
87 std::pair<_OutputIterator, _Tp> __brick_transform_scan(_ForwardIterator, _ForwardIterator, _OutputIterator,
88 _UnaryOperation, _Tp, _BinaryOperation,
89 /*Inclusive*/ std::true_type) noexcept;
90
91 template <class _ExecutionPolicy, class _ForwardIterator, class _OutputIterator, class _UnaryOperation, class _Tp,
92 class _BinaryOperation, class _Inclusive, class _IsVector>
93 _OutputIterator
94 __pattern_transform_scan(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _OutputIterator, _UnaryOperation, _Tp,
95 _BinaryOperation, _Inclusive, _IsVector,
96 /*is_parallel=*/std::false_type) noexcept;
97
98 template <class _ExecutionPolicy, class _RandomAccessIterator, class _OutputIterator, class _UnaryOperation, class _Tp,
99 class _BinaryOperation, class _Inclusive, class _IsVector>
100 typename std::enable_if<!std::is_floating_point<_Tp>::value, _OutputIterator>::type
101 __pattern_transform_scan(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _OutputIterator,
102 _UnaryOperation, _Tp, _BinaryOperation, _Inclusive, _IsVector, /*is_parallel=*/std::true_type);
103
104 template <class _ExecutionPolicy, class _RandomAccessIterator, class _OutputIterator, class _UnaryOperation, class _Tp,
105 class _BinaryOperation, class _Inclusive, class _IsVector>
106 typename std::enable_if<std::is_floating_point<_Tp>::value, _OutputIterator>::type
107 __pattern_transform_scan(_ExecutionPolicy&&, _RandomAccessIterator, _RandomAccessIterator, _OutputIterator,
108 _UnaryOperation, _Tp, _BinaryOperation, _Inclusive, _IsVector, /*is_parallel=*/std::true_type);
109
110 //------------------------------------------------------------------------
111 // adjacent_difference
112 //------------------------------------------------------------------------
113
114 template <class _ForwardIterator, class _OutputIterator, class _BinaryOperation>
115 _OutputIterator __brick_adjacent_difference(_ForwardIterator, _ForwardIterator, _OutputIterator, _BinaryOperation,
116 /*is_vector*/ std::false_type) noexcept;
117
118 template <class _ForwardIterator, class _OutputIterator, class _BinaryOperation>
119 _OutputIterator __brick_adjacent_difference(_ForwardIterator, _ForwardIterator, _OutputIterator, _BinaryOperation,
120 /*is_vector*/ std::true_type) noexcept;
121
122 template <class _ExecutionPolicy, class _ForwardIterator, class _OutputIterator, class _BinaryOperation,
123 class _IsVector>
124 _OutputIterator
125 __pattern_adjacent_difference(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _OutputIterator, _BinaryOperation,
126 _IsVector, /*is_parallel*/ std::false_type) noexcept;
127
128 template <class _ExecutionPolicy, class _ForwardIterator, class _OutputIterator, class _BinaryOperation,
129 class _IsVector>
130 _OutputIterator
131 __pattern_adjacent_difference(_ExecutionPolicy&&, _ForwardIterator, _ForwardIterator, _OutputIterator, _BinaryOperation,
132 _IsVector, /*is_parallel*/ std::true_type);
133
134 } // namespace __internal
135 } // namespace __pstl
136 #endif /* _PSTL_NUMERIC_FWD_H */