1#ifndef NNGN_UTILS_SPAN_H
2#define NNGN_UTILS_SPAN_H
12std::span<T>
slice(std::span<T>
s,
auto b,
auto e) {
13 using I = std::ptrdiff_t;
14 const auto n =
static_cast<I
>(
s.size());
15 auto bi =
static_cast<I
>(b);
16 auto ei =
static_cast<I
>(
e);
17 bi = std::clamp(bi, I{},
n);
18 ei = std::clamp(ei, bi,
n);
19 bi = std::min(bi, ei);
21 static_cast<std::size_t
>(bi),
22 static_cast<std::size_t
>(ei - bi));
26auto split(std::span<T>
s, std::size_t
i) {
28 return std::pair{
s.subspan(0,
i),
s.subspan(
i)};
31inline auto split(std::string_view
s, std::string_view::iterator
i) {
34 std::string_view{
i,
end(
s)},
assert
Definition debug.lua:3
function DEMO text end
Definition demo0.lua:6
for i
Definition font.lua:5
local n
Definition dump_lights.lua:5
constexpr const R * begin(const T< R > &v)
Definition vec.h:207
std::span< T > slice(std::span< T > s, auto b, auto e)
Definition span.h:12
auto split(std::span< T > s, std::size_t i)
Definition span.h:26
local e
Definition math.lua:4
std::chrono::seconds s
Definition timing.cpp:6