diff options
| author | 2018-10-08 15:41:13 +0000 | |
|---|---|---|
| committer | 2018-10-08 15:41:13 +0000 | |
| commit | 6d659e8cebf8037d8ba98ffc6e30fe18e83b0575 (patch) | |
| tree | 44bb82e5930c571c2175f9235c36babe40b72d57 /libs/androidfw/Util.cpp | |
| parent | a60c94aab934ae67aee981b771c9da2a46baef9f (diff) | |
| parent | 24c9aa65411207067f509c5e88ad31b303d26fcd (diff) | |
Merge "libandroidfw: move ConfigDescription from aapt2 to libandroidfw"
Diffstat (limited to 'libs/androidfw/Util.cpp')
| -rw-r--r-- | libs/androidfw/Util.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/libs/androidfw/Util.cpp b/libs/androidfw/Util.cpp index 575cd18a36dd..59c9d640bb91 100644 --- a/libs/androidfw/Util.cpp +++ b/libs/androidfw/Util.cpp @@ -16,6 +16,7 @@ #include "androidfw/Util.h" +#include <algorithm> #include <string> #include "utils/ByteOrder.h" @@ -67,5 +68,28 @@ std::string Utf16ToUtf8(const StringPiece16& utf16) { return utf8; } +static std::vector<std::string> SplitAndTransform( + const StringPiece& str, char sep, const std::function<char(char)>& f) { + std::vector<std::string> parts; + const StringPiece::const_iterator end = std::end(str); + StringPiece::const_iterator start = std::begin(str); + StringPiece::const_iterator current; + do { + current = std::find(start, end, sep); + parts.emplace_back(str.substr(start, current).to_string()); + if (f) { + std::string& part = parts.back(); + std::transform(part.begin(), part.end(), part.begin(), f); + } + start = current + 1; + } while (current != end); + return parts; +} + +std::vector<std::string> SplitAndLowercase(const StringPiece& str, char sep) { + return SplitAndTransform(str, sep, ::tolower); +} + + } // namespace util } // namespace android |