mirror of
https://github.com/matrix-construct/construct
synced 2024-09-27 19:28:52 +02:00
ircd: Add tokens_split() tool w/ skip feature.
This commit is contained in:
parent
b637eb0c50
commit
432f38cd06
2 changed files with 43 additions and 0 deletions
|
@ -104,6 +104,9 @@ namespace ircd
|
||||||
|
|
||||||
string_view tokens_before(const string_view &str, const char sep, const size_t at = 0) noexcept;
|
string_view tokens_before(const string_view &str, const char sep, const size_t at = 0) noexcept;
|
||||||
string_view tokens_before(const string_view &str, const string_view &sep, const size_t at = 0) noexcept;
|
string_view tokens_before(const string_view &str, const string_view &sep, const size_t at = 0) noexcept;
|
||||||
|
|
||||||
|
pair<string_view> tokens_split(const string_view &str, const char sep, const size_t at = 0, const size_t skip = 0) noexcept;
|
||||||
|
pair<string_view> tokens_split(const string_view &str, const string_view &sep, const size_t at = 0, const size_t skip = 0) noexcept;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<size_t N,
|
template<size_t N,
|
||||||
|
|
|
@ -48,6 +48,46 @@ ircd::char_separator
|
||||||
// interface
|
// interface
|
||||||
//
|
//
|
||||||
|
|
||||||
|
ircd::pair<ircd::string_view>
|
||||||
|
ircd::tokens_split(const string_view &str,
|
||||||
|
const char sep,
|
||||||
|
const size_t at,
|
||||||
|
const size_t skip)
|
||||||
|
noexcept
|
||||||
|
{
|
||||||
|
const ssize_t before(at);
|
||||||
|
const ssize_t after
|
||||||
|
{
|
||||||
|
(before - 1) + ssize_t(skip)
|
||||||
|
};
|
||||||
|
|
||||||
|
return pair<string_view>
|
||||||
|
{
|
||||||
|
tokens_before(str, sep, before),
|
||||||
|
tokens_after(str, sep, after)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
ircd::pair<ircd::string_view>
|
||||||
|
ircd::tokens_split(const string_view &str,
|
||||||
|
const string_view &sep,
|
||||||
|
const size_t at,
|
||||||
|
const size_t skip)
|
||||||
|
noexcept
|
||||||
|
{
|
||||||
|
const ssize_t before(at);
|
||||||
|
const ssize_t after
|
||||||
|
{
|
||||||
|
(before - 1) + ssize_t(skip)
|
||||||
|
};
|
||||||
|
|
||||||
|
return pair<string_view>
|
||||||
|
{
|
||||||
|
tokens_before(str, sep, before),
|
||||||
|
tokens_after(str, sep, after)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
ircd::string_view
|
ircd::string_view
|
||||||
ircd::tokens_before(const string_view &str,
|
ircd::tokens_before(const string_view &str,
|
||||||
const char sep,
|
const char sep,
|
||||||
|
|
Loading…
Reference in a new issue