From 5ba45b02e1adee6b1ba15d70c9052cbc1f3c26c5 Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 14 Oct 2021 21:05:54 +0800 Subject: ... --- src/osx/Convert.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/osx/Convert.cpp (limited to 'src/osx/Convert.cpp') 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(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(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 -- cgit v1.2.3