mirror of
https://github.com/matrix-construct/construct
synced 2025-03-16 22:41:46 +01: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 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,
|
||||
|
|
|
@ -48,6 +48,46 @@ ircd::char_separator
|
|||
// 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::tokens_before(const string_view &str,
|
||||
const char sep,
|
||||
|
|
Loading…
Add table
Reference in a new issue