diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-08-16 19:24:11 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-08-16 19:24:11 +0800 |
commit | 600307d3d0133accc3aaceed694e897ad48cd584 (patch) | |
tree | 21296dcabd1868872b0e2ab06c17ce1d6cbf1df3 /src/base/Osx.cpp | |
parent | d868d7b0d463ede80b761f87f10d4e25f52989c3 (diff) | |
download | cru-600307d3d0133accc3aaceed694e897ad48cd584.tar.gz cru-600307d3d0133accc3aaceed694e897ad48cd584.tar.bz2 cru-600307d3d0133accc3aaceed694e897ad48cd584.zip |
Move Core Foundation string out of cru String. Still error.
Diffstat (limited to 'src/base/Osx.cpp')
-rw-r--r-- | src/base/Osx.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/base/Osx.cpp b/src/base/Osx.cpp new file mode 100644 index 00000000..6b8d0bd9 --- /dev/null +++ b/src/base/Osx.cpp @@ -0,0 +1,21 @@ +#include "cru/base/Osx.h" + +namespace cru { +CFWrapper<CFStringRef> ToCFStringRef(StringView string) { + return CFWrapper<CFStringRef>(CFStringCreateWithBytes( + nullptr, reinterpret_cast<const UInt8*>(string.data()), + string.size() * sizeof(std::uint16_t), kCFStringEncodingUTF16, false)); +} + +String FromCFStringRef(CFStringRef string) { + auto length = CFStringGetLength(string); + + String result; + + for (int i = 0; i < length; i++) { + result.AppendCodePoint(CFStringGetCharacterAtIndex(string, i)); + } + + return result; +} +} // namespace cru |