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;