#include "string_utils.h" #include namespace android { namespace stream_proto { using namespace std; string to_camel_case(const string& str) { string result; const int N = str.size(); result.reserve(N); bool capitalize_next = true; for (int i=0; i= 'a' && c <= 'z') { c = 'A' + c - 'a'; capitalize_next = false; } else if (c >= 'A' && c <= 'Z') { capitalize_next = false; } else if (c >= '0' && c <= '9') { capitalize_next = true; } else { // All other characters (e.g. non-latin) count as capital. capitalize_next = false; } result += c; } } return result; } string make_constant_name(const string& str) { string result; const int N = str.size(); bool underscore_next = false; for (int i=0; i= 'A' && c <= 'Z') { if (underscore_next) { result += '_'; underscore_next = false; } } else if (c >= 'a' && c <= 'z') { c = 'A' + c - 'a'; underscore_next = true; } else if (c == '_') { underscore_next = false; } result += c; } return result; } string file_base_name(const string& str) { size_t start = str.rfind('/'); if (start == string::npos) { start = 0; } else { start++; } size_t end = str.find('.', start); if (end == string::npos) { end = str.size(); } return str.substr(start, end-start); } string replace_string(const string& str, const char replace, const char with) { string result(str); const int N = result.size(); for (int i=0; i split(const string& str, const char delimiter) { vector result; size_t base = 0, found = 0; while (true) { found = str.find_first_of(delimiter, base); if (found != base) { string part = str.substr(base, found - base); if (!part.empty()) { result.push_back(part); } } if (found == str.npos) break; base = found + 1; } return result; } string stripPrefix(const string& str, const string& prefix) { if (str.size() <= prefix.size()) return str; size_t i = 0, len = prefix.size(); for (; i