• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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