Mercurial > minori
comparison src/core/strings.cc @ 405:4562bc8bfdff
strings: add conversion to/from CFString on Mac OS X
| author | Paper <paper@tflc.us> |
|---|---|
| date | Mon, 19 Jan 2026 22:47:29 -0500 |
| parents | df4a027623d0 |
| children |
comparison
equal
deleted
inserted
replaced
| 404:e561b7542b7b | 405:4562bc8bfdff |
|---|---|
| 204 std::string ToUtf8String(const bool b) | 204 std::string ToUtf8String(const bool b) |
| 205 { | 205 { |
| 206 return b ? "true" : "false"; // lol | 206 return b ? "true" : "false"; // lol |
| 207 } | 207 } |
| 208 | 208 |
| 209 #if defined(__APPLE__) && defined(__MACH__) | |
| 210 CFStringRef ToCFString(const std::string &string) | |
| 211 { | |
| 212 return CFStringCreateWithBytes(kCFAllocatorDefault, reinterpret_cast<const UInt8 *>(string.data()), string.size(), kCFStringEncodingUTF8, false); | |
| 213 } | |
| 214 std::string ToUtf8String(CFStringRef str) | |
| 215 { | |
| 216 if (const char *ptr = CFStringGetCStringPtr(str, kCFStringEncodingUTF8)) | |
| 217 return std::string(ptr); // easy! | |
| 218 | |
| 219 // ... | |
| 220 const CFIndex len = CFStringGetLength(str); | |
| 221 std::string buf(CFStringGetMaximumSizeForEncoding(len, kCFStringEncodingUTF8), 0); | |
| 222 CFRange range; | |
| 223 range.length = len; | |
| 224 range.location = 0; | |
| 225 CFIndex used; | |
| 226 CFStringGetBytes(str, range, kCFStringEncodingUTF8, 0, false, reinterpret_cast<UInt8 *>(buf.data()), buf.size(), &used); | |
| 227 buf.resize(used); | |
| 228 return buf; | |
| 229 } | |
| 230 #endif | |
| 231 | |
| 209 bool ToBool(const std::string &str, bool def) | 232 bool ToBool(const std::string &str, bool def) |
| 210 { | 233 { |
| 211 std::istringstream s(Strings::ToLower(str)); | 234 std::istringstream s(Strings::ToLower(str)); |
| 212 s >> std::boolalpha >> def; | 235 s >> std::boolalpha >> def; |
| 213 return def; | 236 return def; |
