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