1// -*- C++ -*-
2//===-- glue_memory_defs.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_GLUE_MEMORY_DEFS_H
11#define _PSTL_GLUE_MEMORY_DEFS_H
12
13#include <bits/stl_iterator_base_types.h>
14#include "execution_defs.h"
15
16namespace std
17{
18
19// [uninitialized.copy]
20
21template <class _ExecutionPolicy, class _InputIterator, class _ForwardIterator>
22__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
23uninitialized_copy(_ExecutionPolicy&& __exec, _InputIterator __first, _InputIterator __last, _ForwardIterator __result);
24
25template <class _ExecutionPolicy, class _InputIterator, class _Size, class _ForwardIterator>
26__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
27uninitialized_copy_n(_ExecutionPolicy&& __exec, _InputIterator __first, _Size __n, _ForwardIterator __result);
28
29// [uninitialized.move]
30
31template <class _ExecutionPolicy, class _InputIterator, class _ForwardIterator>
32__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
33uninitialized_move(_ExecutionPolicy&& __exec, _InputIterator __first, _InputIterator __last, _ForwardIterator __result);
34
35template <class _ExecutionPolicy, class _InputIterator, class _Size, class _ForwardIterator>
36__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
37uninitialized_move_n(_ExecutionPolicy&& __exec, _InputIterator __first, _Size __n, _ForwardIterator __result);
38
39// [uninitialized.fill]
40
41template <class _ExecutionPolicy, class _ForwardIterator, class _Tp _GLIBCXX26_ALGO_DEF_VAL_T(_ForwardIterator)>
42__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
43uninitialized_fill(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value);
44
45template <class _ExecutionPolicy, class _ForwardIterator, class _Size, class _Tp _GLIBCXX26_ALGO_DEF_VAL_T(_ForwardIterator)>
46__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
47uninitialized_fill_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n, const _Tp& __value);
48
49// [specialized.destroy]
50
51template <class _ExecutionPolicy, class _ForwardIterator>
52__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
53destroy(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last);
54
55template <class _ExecutionPolicy, class _ForwardIterator, class _Size>
56__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
57destroy_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n);
58
59// [uninitialized.construct.default]
60
61template <class _ExecutionPolicy, class _ForwardIterator>
62__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
63uninitialized_default_construct(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last);
64
65template <class _ExecutionPolicy, class _ForwardIterator, class _Size>
66__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
67uninitialized_default_construct_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n);
68
69// [uninitialized.construct.value]
70
71template <class _ExecutionPolicy, class _ForwardIterator>
72__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void>
73uninitialized_value_construct(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last);
74
75template <class _ExecutionPolicy, class _ForwardIterator, class _Size>
76__pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator>
77uninitialized_value_construct_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n);
78
79} // namespace std
80#endif /* _PSTL_GLUE_MEMORY_DEFS_H */
81