• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef icu4x_WordBreak_D_HPP
2 #define icu4x_WordBreak_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 WordBreak;
15 }
16 
17 
18 namespace icu4x {
19 namespace capi {
20     enum WordBreak {
21       WordBreak_Other = 0,
22       WordBreak_ALetter = 1,
23       WordBreak_Format = 2,
24       WordBreak_Katakana = 3,
25       WordBreak_MidLetter = 4,
26       WordBreak_MidNum = 5,
27       WordBreak_Numeric = 6,
28       WordBreak_ExtendNumLet = 7,
29       WordBreak_CR = 8,
30       WordBreak_Extend = 9,
31       WordBreak_LF = 10,
32       WordBreak_MidNumLet = 11,
33       WordBreak_Newline = 12,
34       WordBreak_RegionalIndicator = 13,
35       WordBreak_HebrewLetter = 14,
36       WordBreak_SingleQuote = 15,
37       WordBreak_DoubleQuote = 16,
38       WordBreak_EBase = 17,
39       WordBreak_EBaseGAZ = 18,
40       WordBreak_EModifier = 19,
41       WordBreak_GlueAfterZwj = 20,
42       WordBreak_ZWJ = 21,
43       WordBreak_WSegSpace = 22,
44     };
45 
46     typedef struct WordBreak_option {union { WordBreak ok; }; bool is_ok; } WordBreak_option;
47 } // namespace capi
48 } // namespace
49 
50 namespace icu4x {
51 class WordBreak {
52 public:
53   enum Value {
54     Other = 0,
55     ALetter = 1,
56     Format = 2,
57     Katakana = 3,
58     MidLetter = 4,
59     MidNum = 5,
60     Numeric = 6,
61     ExtendNumLet = 7,
62     CR = 8,
63     Extend = 9,
64     LF = 10,
65     MidNumLet = 11,
66     Newline = 12,
67     RegionalIndicator = 13,
68     HebrewLetter = 14,
69     SingleQuote = 15,
70     DoubleQuote = 16,
71     EBase = 17,
72     EBaseGAZ = 18,
73     EModifier = 19,
74     GlueAfterZwj = 20,
75     ZWJ = 21,
76     WSegSpace = 22,
77   };
78 
79   WordBreak() = default;
80   // Implicit conversions between enum and ::Value
WordBreak(Value v)81   constexpr WordBreak(Value v) : value(v) {}
operator Value() const82   constexpr operator Value() const { return value; }
83   // Prevent usage as boolean value
84   explicit operator bool() const = delete;
85 
86   inline static icu4x::WordBreak for_char(char32_t ch);
87 
88   inline std::optional<std::string_view> long_name();
89 
90   inline std::optional<std::string_view> short_name();
91 
92   inline uint8_t to_integer_value();
93 
94   inline static std::optional<icu4x::WordBreak> from_integer_value(uint8_t other);
95 
96   inline icu4x::capi::WordBreak AsFFI() const;
97   inline static icu4x::WordBreak FromFFI(icu4x::capi::WordBreak c_enum);
98 private:
99     Value value;
100 };
101 
102 } // namespace
103 #endif // icu4x_WordBreak_D_HPP
104