mirror of
https://github.com/matrix-construct/construct
synced 2024-09-26 18:38:52 +02:00
ircd::json: Optimize poor composition from inlining unquote().
This commit is contained in:
parent
7a35647ab8
commit
a82b325341
2 changed files with 9 additions and 7 deletions
|
@ -41,29 +41,31 @@ struct ircd::json::string
|
|||
string() = default;
|
||||
string(json::string &&) = default;
|
||||
string(const json::string &) = default;
|
||||
string(const string_view &s);
|
||||
string(const string_view &s) noexcept;
|
||||
|
||||
string &operator=(json::string &&) = default;
|
||||
string &operator=(const json::string &) = default;
|
||||
string &operator=(const string_view &s);
|
||||
string &operator=(const string_view &s) noexcept;
|
||||
};
|
||||
|
||||
inline
|
||||
ircd::json::string::string(const string_view &s)
|
||||
noexcept
|
||||
:string_view
|
||||
{
|
||||
surrounds(s, '"')?
|
||||
unquote(s):
|
||||
s
|
||||
s.substr(1, s.size() - 2):
|
||||
std::string_view(s)
|
||||
}
|
||||
{}
|
||||
|
||||
inline ircd::json::string &
|
||||
ircd::json::string::operator=(const string_view &s)
|
||||
noexcept
|
||||
{
|
||||
*static_cast<string_view *>(this) = surrounds(s, '"')?
|
||||
unquote(s):
|
||||
s;
|
||||
s.substr(1, s.size() - 2):
|
||||
std::string_view(s);
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ void>::type
|
|||
_assign(dst &d,
|
||||
src&& s)
|
||||
{
|
||||
d = unquote(string_view{std::forward<src>(s)});
|
||||
d = json::string(string_view(std::forward<src>(s)));
|
||||
}
|
||||
|
||||
template<class dst,
|
||||
|
|
Loading…
Reference in a new issue