1 #ifndef icu4x_SentenceBreak_D_HPP 2 #define icu4x_SentenceBreak_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 class SentenceBreak; 15 } 16 17 18 namespace icu4x { 19 namespace capi { 20 enum SentenceBreak { 21 SentenceBreak_Other = 0, 22 SentenceBreak_ATerm = 1, 23 SentenceBreak_Close = 2, 24 SentenceBreak_Format = 3, 25 SentenceBreak_Lower = 4, 26 SentenceBreak_Numeric = 5, 27 SentenceBreak_OLetter = 6, 28 SentenceBreak_Sep = 7, 29 SentenceBreak_Sp = 8, 30 SentenceBreak_STerm = 9, 31 SentenceBreak_Upper = 10, 32 SentenceBreak_CR = 11, 33 SentenceBreak_Extend = 12, 34 SentenceBreak_LF = 13, 35 SentenceBreak_SContinue = 14, 36 }; 37 38 typedef struct SentenceBreak_option {union { SentenceBreak ok; }; bool is_ok; } SentenceBreak_option; 39 } // namespace capi 40 } // namespace 41 42 namespace icu4x { 43 class SentenceBreak { 44 public: 45 enum Value { 46 Other = 0, 47 ATerm = 1, 48 Close = 2, 49 Format = 3, 50 Lower = 4, 51 Numeric = 5, 52 OLetter = 6, 53 Sep = 7, 54 Sp = 8, 55 STerm = 9, 56 Upper = 10, 57 CR = 11, 58 Extend = 12, 59 LF = 13, 60 SContinue = 14, 61 }; 62 63 SentenceBreak() = default; 64 // Implicit conversions between enum and ::Value SentenceBreak(Value v)65 constexpr SentenceBreak(Value v) : value(v) {} operator Value() const66 constexpr operator Value() const { return value; } 67 // Prevent usage as boolean value 68 explicit operator bool() const = delete; 69 70 inline static icu4x::SentenceBreak for_char(char32_t ch); 71 72 inline std::optional<std::string_view> long_name(); 73 74 inline std::optional<std::string_view> short_name(); 75 76 inline uint8_t to_integer_value(); 77 78 inline static std::optional<icu4x::SentenceBreak> from_integer_value(uint8_t other); 79 80 inline icu4x::capi::SentenceBreak AsFFI() const; 81 inline static icu4x::SentenceBreak FromFFI(icu4x::capi::SentenceBreak c_enum); 82 private: 83 Value value; 84 }; 85 86 } // namespace 87 #endif // icu4x_SentenceBreak_D_HPP 88