diff options
Diffstat (limited to 'src/base')
-rw-r--r-- | src/base/CMakeLists.txt | 5 | ||||
-rw-r--r-- | src/base/String.cpp | 30 | ||||
-rw-r--r-- | src/base/platform/osx/Convert.cpp | 29 | ||||
-rw-r--r-- | src/base/platform/osx/Exception.cpp | 1 |
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" |