Loading [MathJax]/extensions/tex2jax.js
Iros
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
Loading...
Searching...
No Matches
vector_subspan.h
Go to the documentation of this file.
1#pragma once
2
6#include "di/types/prelude.h"
11
12namespace di::container::vector {
13constexpr auto subspan(concepts::detail::ConstantVector auto& vector, size_t offset) {
14 auto size = vector::size(vector);
15 return lift_bool(offset <= size) % [&] {
16 return vocab::Span { vector::data(vector) + offset, size - offset };
17 };
18}
19
20constexpr auto subspan(concepts::detail::ConstantVector auto& vector, size_t offset, size_t count) {
21 auto size = vector::size(vector);
22 return lift_bool(offset + count <= size) % [&] {
23 return vocab::Span { vector::data(vector) + offset, count };
24 };
25}
26
27template<size_t offset, size_t count = vocab::dynamic_extent>
29 if constexpr (count == vocab::dynamic_extent) {
30 return vector::subspan(vector, offset);
31 } else {
32 return lift_bool(offset + count <= vector::size(vector)) % [&] {
34 };
35 }
36}
37}
Definition span_forward_declaration.h:10
Definition constant_vector.h:5
Definition vector_append_container.h:17
constexpr auto size(concepts::detail::ConstantVector auto const &vector) -> size_t
Definition vector_size.h:7
constexpr auto subspan(concepts::detail::ConstantVector auto &vector, size_t offset)
Definition vector_subspan.h:13
constexpr auto data(concepts::detail::ConstantVector auto &vector)
Definition vector_data.h:6
constexpr auto count
Definition count.h:37
constexpr auto fixed_span(T *value) -> Span< T, count >
Definition fixed_span.h:8
constexpr auto dynamic_extent
Definition span_forward_declaration.h:7
constexpr auto lift_bool
Definition lift_bool.h:13