1 #ifndef icu4x_CaseMapper_D_HPP 2 #define icu4x_CaseMapper_D_HPP 3 4 #include <stdio.h> 5 #include <stdint.h> 6 #include <stddef.h> 7 #include <stdbool.h> 8 #include <memory> 9 #include <functional> 10 #include <optional> 11 #include "../diplomat_runtime.hpp" 12 13 namespace icu4x { 14 namespace capi { struct CaseMapper; } 15 class CaseMapper; 16 namespace capi { struct CodePointSetBuilder; } 17 class CodePointSetBuilder; 18 namespace capi { struct DataProvider; } 19 class DataProvider; 20 namespace capi { struct Locale; } 21 class Locale; 22 struct TitlecaseOptionsV1; 23 class DataError; 24 } 25 26 27 namespace icu4x { 28 namespace capi { 29 struct CaseMapper; 30 } // namespace capi 31 } // namespace 32 33 namespace icu4x { 34 class CaseMapper { 35 public: 36 37 inline static std::unique_ptr<icu4x::CaseMapper> create(); 38 39 inline static diplomat::result<std::unique_ptr<icu4x::CaseMapper>, icu4x::DataError> create_with_provider(const icu4x::DataProvider& provider); 40 41 inline diplomat::result<std::string, diplomat::Utf8Error> lowercase(std::string_view s, const icu4x::Locale& locale) const; 42 43 inline diplomat::result<std::string, diplomat::Utf8Error> uppercase(std::string_view s, const icu4x::Locale& locale) const; 44 45 inline diplomat::result<std::string, diplomat::Utf8Error> titlecase_segment_with_only_case_data_v1(std::string_view s, const icu4x::Locale& locale, icu4x::TitlecaseOptionsV1 options) const; 46 47 inline diplomat::result<std::string, diplomat::Utf8Error> fold(std::string_view s) const; 48 49 inline diplomat::result<std::string, diplomat::Utf8Error> fold_turkic(std::string_view s) const; 50 51 inline void add_case_closure_to(char32_t c, icu4x::CodePointSetBuilder& builder) const; 52 53 inline char32_t simple_lowercase(char32_t ch) const; 54 55 inline char32_t simple_uppercase(char32_t ch) const; 56 57 inline char32_t simple_titlecase(char32_t ch) const; 58 59 inline char32_t simple_fold(char32_t ch) const; 60 61 inline char32_t simple_fold_turkic(char32_t ch) const; 62 63 inline const icu4x::capi::CaseMapper* AsFFI() const; 64 inline icu4x::capi::CaseMapper* AsFFI(); 65 inline static const icu4x::CaseMapper* FromFFI(const icu4x::capi::CaseMapper* ptr); 66 inline static icu4x::CaseMapper* FromFFI(icu4x::capi::CaseMapper* ptr); 67 inline static void operator delete(void* ptr); 68 private: 69 CaseMapper() = delete; 70 CaseMapper(const icu4x::CaseMapper&) = delete; 71 CaseMapper(icu4x::CaseMapper&&) noexcept = delete; 72 CaseMapper operator=(const icu4x::CaseMapper&) = delete; 73 CaseMapper operator=(icu4x::CaseMapper&&) noexcept = delete; 74 static void operator delete[](void*, size_t) = delete; 75 }; 76 77 } // namespace 78 #endif // icu4x_CaseMapper_D_HPP 79