diff options
author | crupest <crupest@outlook.com> | 2021-10-14 21:05:54 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-10-14 21:05:54 +0800 |
commit | 5ba45b02e1adee6b1ba15d70c9052cbc1f3c26c5 (patch) | |
tree | 5bc92750f30f4e3e97082a59cdbda065629f3ac8 /src/osx/Convert.cpp | |
parent | 7ee9420d02be02868b10056753e046f42d022c96 (diff) | |
download | cru-5ba45b02e1adee6b1ba15d70c9052cbc1f3c26c5.tar.gz cru-5ba45b02e1adee6b1ba15d70c9052cbc1f3c26c5.tar.bz2 cru-5ba45b02e1adee6b1ba15d70c9052cbc1f3c26c5.zip |
...
Diffstat (limited to 'src/osx/Convert.cpp')
-rw-r--r-- | src/osx/Convert.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/osx/Convert.cpp b/src/osx/Convert.cpp new file mode 100644 index 00000000..51ebedf4 --- /dev/null +++ b/src/osx/Convert.cpp @@ -0,0 +1,30 @@ +#include "cru/osx/Convert.hpp" + +namespace cru::cru::platform::osx { +CFStringRef Convert(const String& string) { + return CFStringCreateWithBytes( + nullptr, reinterpret_cast<const UInt8*>(string.data()), + string.size() * sizeof(std::uint16_t), kCFStringEncodingUTF16, false); +} + +String Convert(CFStringRef string) { + auto d = CFStringCreateExternalRepresentation(nullptr, string, + kCFStringEncodingUTF16, 0); + auto l = CFDataGetLength(d); + + auto s = String(reinterpret_cast<const std::uint16_t*>(CFDataGetBytePtr(d)), + CFDataGetLength(d) / 2); + + CFRelease(d); + + return s; +} + +CFRange Convert(const Range& range) { + return CFRangeMake(range.position, range.count); +} + +Range Convert(const CFRange& range) { + return Range(range.location, range.length); +} +} // namespace cru::cru::platform::osx |