From c4e54b70653ef5037bfde023ea29f25926e168eb Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Fri, 3 Nov 2017 14:44:54 -0400 Subject: [PATCH] common: get_str_vec and friends use for_each_substr Signed-off-by: Casey Bodley --- src/common/str_list.cc | 69 ++++++++---------------------------------- 1 file changed, 13 insertions(+), 56 deletions(-) diff --git a/src/common/str_list.cc b/src/common/str_list.cc index 7831f435f9479..07d7294a9c8c7 100644 --- a/src/common/str_list.cc +++ b/src/common/str_list.cc @@ -18,48 +18,20 @@ using std::string; using std::vector; using std::set; using std::list; - -static bool get_next_token(const string &s, size_t& pos, const char *delims, string& token) -{ - int start = s.find_first_not_of(delims, pos); - int end; - - if (start < 0){ - pos = s.size(); - return false; - } - - end = s.find_first_of(delims, start); - if (end >= 0) - pos = end + 1; - else { - pos = end = s.size(); - } - - token = s.substr(start, end - start); - return true; -} +using ceph::for_each_substr; void get_str_list(const string& str, const char *delims, list& str_list) { - size_t pos = 0; - string token; - str_list.clear(); - - while (pos < str.size()) { - if (get_next_token(str, pos, delims, token)) { - if (token.size() > 0) { - str_list.push_back(token); - } - } - } + for_each_substr(str, delims, [&str_list] (boost::string_view token) { + str_list.emplace_back(token.begin(), token.end()); + }); } void get_str_list(const string& str, list& str_list) { const char *delims = ";,= \t"; - return get_str_list(str, delims, str_list); + get_str_list(str, delims, str_list); } list get_str_list(const string& str, const char *delims) @@ -71,23 +43,16 @@ list get_str_list(const string& str, const char *delims) void get_str_vec(const string& str, const char *delims, vector& str_vec) { - size_t pos = 0; - string token; str_vec.clear(); - - while (pos < str.size()) { - if (get_next_token(str, pos, delims, token)) { - if (token.size() > 0) { - str_vec.push_back(token); - } - } - } + for_each_substr(str, delims, [&str_vec] (boost::string_view token) { + str_vec.emplace_back(token.begin(), token.end()); + }); } void get_str_vec(const string& str, vector& str_vec) { const char *delims = ";,= \t"; - return get_str_vec(str, delims, str_vec); + get_str_vec(str, delims, str_vec); } vector get_str_vec(const string& str, const char *delims) @@ -99,24 +64,16 @@ vector get_str_vec(const string& str, const char *delims) void get_str_set(const string& str, const char *delims, set& str_set) { - size_t pos = 0; - string token; - str_set.clear(); - - while (pos < str.size()) { - if (get_next_token(str, pos, delims, token)) { - if (token.size() > 0) { - str_set.insert(token); - } - } - } + for_each_substr(str, delims, [&str_set] (boost::string_view token) { + str_set.emplace(token.begin(), token.end()); + }); } void get_str_set(const string& str, set& str_set) { const char *delims = ";,= \t"; - return get_str_set(str, delims, str_set); + get_str_set(str, delims, str_set); } set get_str_set(const string& str, const char *delims) -- 2.39.5