util::span interface improvements
This commit is contained in:
parent
148efb02cc
commit
7376109e96
1 changed files with 27 additions and 1 deletions
|
|
@ -35,6 +35,11 @@ namespace psemek::util
|
|||
, p_end{end}
|
||||
{}
|
||||
|
||||
span(T * begin, std::size_t size)
|
||||
: p_begin{begin}
|
||||
, p_end{begin + size}
|
||||
{}
|
||||
|
||||
template <std::size_t N>
|
||||
span(T (&a)[N])
|
||||
: p_begin{a}
|
||||
|
|
@ -64,7 +69,7 @@ namespace psemek::util
|
|||
T * begin() const { return p_begin; }
|
||||
T * end() const { return p_end; }
|
||||
|
||||
difference_type size() const { return p_end - p_begin; }
|
||||
size_type size() const { return p_end - p_begin; }
|
||||
|
||||
bool empty() const { return p_begin == p_end; }
|
||||
|
||||
|
|
@ -74,6 +79,27 @@ namespace psemek::util
|
|||
T & front() const { return *p_begin; }
|
||||
T & back() const { return *(p_end - 1); }
|
||||
|
||||
span subspan(std::size_t start, std::size_t end) const
|
||||
{
|
||||
return span{p_begin + start, p_begin + end};
|
||||
}
|
||||
|
||||
span prefix(std::size_t size) const
|
||||
{
|
||||
return subspan(0, size);
|
||||
}
|
||||
|
||||
span suffix(std::size_t size) const
|
||||
{
|
||||
return span{p_end - size, p_end};
|
||||
}
|
||||
|
||||
span & consume(std::size_t count)
|
||||
{
|
||||
p_begin += count;
|
||||
return *this;
|
||||
}
|
||||
|
||||
void reset()
|
||||
{
|
||||
p_begin = nullptr;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue