| 142 | } |
| 143 | |
| 144 | std::string toSTDString(CFStringRef cfString) { |
| 145 | if (const char* direct = CFStringGetCStringPtr(cfString, kCFStringEncodingUTF8)) { |
| 146 | return std::string(direct); |
| 147 | } |
| 148 | |
| 149 | auto len = CFStringGetLength(cfString); |
| 150 | auto maxBytes = CFStringGetMaximumSizeForEncoding(len, kCFStringEncodingUTF8) + 1; |
| 151 | |
| 152 | std::string buffer(static_cast<std::size_t>(maxBytes), '\0'); |
| 153 | |
| 154 | if (CFStringGetCString(cfString, buffer.data(), buffer.size(), kCFStringEncodingUTF8)) { |
| 155 | buffer.resize(std::strlen(buffer.data())); |
| 156 | return buffer; |
| 157 | } |
| 158 | |
| 159 | return ""; |
| 160 | } |
| 161 | |
| 162 | StringBox toStringBox(CFStringRef cfString) { |
| 163 | return StringCache::getGlobal().makeString(toSTDString(cfString)); |
no test coverage detected