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