0
0
Fork 0
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:
Jason Volk 2020-11-18 09:50:35 -08:00
parent 7a35647ab8
commit a82b325341
2 changed files with 9 additions and 7 deletions

View file

@ -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;
}

View file

@ -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,