epee: some minor speedup in parsing

This commit is contained in:
moneromooo-monero 2018-08-19 22:40:30 +00:00
parent 1e74586ee9
commit 07c6280909
No known key found for this signature in database
GPG Key ID: 686F07454D6CEFC3

View File

@ -39,12 +39,14 @@ namespace misc_utils
inline std::string transform_to_escape_sequence(const std::string& src) inline std::string transform_to_escape_sequence(const std::string& src)
{ {
static const char escaped[] = "\b\f\n\r\t\v\"\\/"; static const char escaped[] = "\b\f\n\r\t\v\"\\/";
if (std::find_first_of(src.begin(), src.end(), escaped, escaped + sizeof(escaped)) == src.end()) std::string::const_iterator it = std::find_first_of(src.begin(), src.end(), escaped, escaped + sizeof(escaped));
if (it == src.end())
return src; return src;
std::string res; std::string res;
res.reserve(2 * src.size()); res.reserve(2 * src.size());
for(std::string::const_iterator it = src.begin(); it!=src.end(); ++it) res.assign(src.begin(), it);
for(; it!=src.end(); ++it)
{ {
switch(*it) switch(*it)
{ {