aboutsummaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
Diffstat (limited to 'src/base')
-rw-r--r--src/base/CMakeLists.txt5
-rw-r--r--src/base/String.cpp30
-rw-r--r--src/base/platform/osx/Convert.cpp29
-rw-r--r--src/base/platform/osx/Exception.cpp1
4 files changed, 29 insertions, 36 deletions
diff --git a/src/base/CMakeLists.txt b/src/base/CMakeLists.txt
index c610abfd..1c65e865 100644
--- a/src/base/CMakeLists.txt
+++ b/src/base/CMakeLists.txt
@@ -38,11 +38,6 @@ endif()
if (APPLE)
find_library(CORE_FOUNDATION CoreFoundation REQUIRED)
target_link_libraries(CruBase PUBLIC ${CORE_FOUNDATION})
-
- target_sources(CruBase PRIVATE
- platform/osx/Convert.cpp
- platform/osx/Exception.cpp
- )
endif()
if (EMSCRIPTEN)
diff --git a/src/base/String.cpp b/src/base/String.cpp
index 47b64373..40d0b766 100644
--- a/src/base/String.cpp
+++ b/src/base/String.cpp
@@ -12,7 +12,10 @@
#include <cmath>
#include <cstring>
#include <functional>
-#include <string_view>
+
+#ifdef CRU_PLATFORM_OSX
+#include <CoreFoundation/CoreFoundation.h>
+#endif
namespace cru {
template <typename C>
@@ -669,4 +672,29 @@ String ToUpper(StringView s) {
for (auto c : s) result.push_back(ToUpper(c));
return result;
}
+
+
+#ifdef CRU_PLATFORM_OSX
+CFWrapper<CFStringRef> StringView::ToCFStringRef() const {
+ return CFWrapper<CFStringRef>(CFStringCreateWithBytes(
+ nullptr, reinterpret_cast<const UInt8*>(this->data()),
+ this->size() * sizeof(std::uint16_t), kCFStringEncodingUTF16, false));
+}
+
+CFWrapper<CFStringRef> String::ToCFStringRef() const {
+ return StringView(*this).ToCFStringRef();
+}
+
+String String::FromCFStringRef(CFStringRef string) {
+ auto length = CFStringGetLength(string);
+
+ String result;
+
+ for (int i = 0; i < length; i++) {
+ result.AppendCodePoint(CFStringGetCharacterAtIndex(string, i));
+ }
+
+ return result;
+}
+#endif
} // namespace cru
diff --git a/src/base/platform/osx/Convert.cpp b/src/base/platform/osx/Convert.cpp
deleted file mode 100644
index 1a6deb8f..00000000
--- a/src/base/platform/osx/Convert.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-#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
diff --git a/src/base/platform/osx/Exception.cpp b/src/base/platform/osx/Exception.cpp
deleted file mode 100644
index a60448dd..00000000
--- a/src/base/platform/osx/Exception.cpp
+++ /dev/null
@@ -1 +0,0 @@
-#include "cru/base/platform//osx/Exception.h"