From: Casey Bodley Date: Fri, 3 Nov 2017 18:44:54 +0000 (-0400) Subject: common: get_str_vec and friends use for_each_substr X-Git-Tag: v13.0.1~233^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F18798%2Fhead;p=ceph.git common: get_str_vec and friends use for_each_substr Signed-off-by: Casey Bodley --- diff --git a/src/common/str_list.cc b/src/common/str_list.cc index 7831f435f947..07d7294a9c8c 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)