| 10 | |
| 11 | |
| 12 | string Util::JniClassPathToCanonicalName(const string &jniClassPath) { |
| 13 | std::string canonicalName; |
| 14 | |
| 15 | const char prefix = jniClassPath[0]; |
| 16 | |
| 17 | std::string rest; |
| 18 | int lastIndex; |
| 19 | |
| 20 | switch (prefix) { |
| 21 | case 'L': |
| 22 | canonicalName = jniClassPath.substr(1, jniClassPath.size() - 2); |
| 23 | std::replace(canonicalName.begin(), canonicalName.end(), '/', '.'); |
| 24 | std::replace(canonicalName.begin(), canonicalName.end(), '$', '.'); |
| 25 | break; |
| 26 | |
| 27 | case '[': |
| 28 | canonicalName = jniClassPath; |
| 29 | lastIndex = canonicalName.find_last_of('['); |
| 30 | rest = canonicalName.substr(lastIndex + 1); |
| 31 | canonicalName = canonicalName.substr(0, lastIndex + 1); |
| 32 | canonicalName.append(JniClassPathToCanonicalName(rest)); |
| 33 | break; |
| 34 | |
| 35 | default: |
| 36 | // TODO: |
| 37 | canonicalName = jniClassPath; |
| 38 | break; |
| 39 | } |
| 40 | return canonicalName; |
| 41 | } |
| 42 | |
| 43 | void Util::SplitString(const string &str, const string &delimiters, vector <string> &tokens) { |
| 44 | string::size_type delimPos = 0, tokenPos = 0, pos = 0; |