aboutsummaryrefslogtreecommitdiff
path: root/src/base/platform/osx/Convert.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/base/platform/osx/Convert.cpp')
-rw-r--r--src/base/platform/osx/Convert.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/base/platform/osx/Convert.cpp b/src/base/platform/osx/Convert.cpp
new file mode 100644
index 00000000..1a6deb8f
--- /dev/null
+++ b/src/base/platform/osx/Convert.cpp
@@ -0,0 +1,29 @@
+#include "cru/base/platform/osx/Convert.h"
+
+namespace 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 length = CFStringGetLength(string);
+
+ String result;
+
+ for (int i = 0; i < length; i++) {
+ result.AppendCodePoint(CFStringGetCharacterAtIndex(string, i));
+ }
+
+ return result;
+}
+
+CFRange Convert(const Range& range) {
+ return CFRangeMake(range.position, range.count);
+}
+
+Range Convert(const CFRange& range) {
+ return Range(range.location, range.length);
+}
+} // namespace cru::platform::osx