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)},
function DEMO text end
Definition: demo0.lua:6
for i
Definition: font.lua:5
assert
Definition: debug.lua:3
n
Definition: dump_lights.lua:5
std::chrono::seconds s
Definition: timing.cpp:6
auto size(const Colliders &c)
Definition: lua_collision.cpp:29
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:10
auto split(std::span< T > s, std::size_t i)
Definition: span.h:24