HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
src
hikogui
ranges.hpp
1
// Copyright Take Vos 2020-2021.
2
// Distributed under the Boost Software License, Version 1.0.
3
// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
5
#pragma once
6
7
#include <ranges>
8
#include <algorithm>
9
#include <concepts>
10
#include <string>
11
#include <string_view>
12
#include <type_traits>
13
#include <vector>
14
15
namespace
hi::inline v1 {
16
20
template
<
typename
View>
21
[[nodiscard]]
std::vector<typename View::value_type>
make_vector(View
const
&view)
22
{
23
auto
r =
std::vector<View::value_type>
{};
24
auto
first =
begin
(view);
25
auto
last =
end
(view);
26
r.reserve(
std::distance
(first, last));
27
std::copy
(first, last,
std::back_inserter
(r));
28
return
r;
29
}
30
34
template
<std::ranges::sized_range View>
35
[[nodiscard]]
std::vector<typename View::value_type>
make_vector(View &&view)
noexcept
36
{
37
auto
r =
std::vector<View::value_type>
{};
38
auto
first =
begin
(view);
39
auto
last =
end
(view);
40
r.reserve(
std::distance
(first, last));
41
std::ranges::copy(first, last,
std::back_inserter
(r));
42
return
r;
43
}
44
48
template
<
typename
View>
49
[[nodiscard]]
auto
make_vector(View &&view)
50
{
51
using
std::begin
;
52
using
std::end
;
53
54
auto
r =
std::vector<typename View::value_type>
{};
55
for
(
auto
it =
begin
(view); it !=
end
(view); ++it) {
56
r.
push_back
(*it);
57
}
58
//auto first = begin(view);
59
//auto last = end(view);
60
//std::ranges::copy(first, last, std::back_inserter(r));
61
return
r;
62
}
63
64
}
// namespace hi::inline v1
std::back_inserter
T back_inserter(T... args)
std::begin
T begin(T... args)
std::copy
T copy(T... args)
std::distance
T distance(T... args)
std::end
T end(T... args)
std::vector::push_back
T push_back(T... args)
std::vector
Generated on Mon Apr 22 2024 12:52:40 for HikoGUI by
1.10.0