• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef icu4x_GraphemeClusterBreak_D_HPP
2 #define icu4x_GraphemeClusterBreak_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 GraphemeClusterBreak;
15 }
16 
17 
18 namespace icu4x {
19 namespace capi {
20     enum GraphemeClusterBreak {
21       GraphemeClusterBreak_Other = 0,
22       GraphemeClusterBreak_Control = 1,
23       GraphemeClusterBreak_CR = 2,
24       GraphemeClusterBreak_Extend = 3,
25       GraphemeClusterBreak_L = 4,
26       GraphemeClusterBreak_LF = 5,
27       GraphemeClusterBreak_LV = 6,
28       GraphemeClusterBreak_LVT = 7,
29       GraphemeClusterBreak_T = 8,
30       GraphemeClusterBreak_V = 9,
31       GraphemeClusterBreak_SpacingMark = 10,
32       GraphemeClusterBreak_Prepend = 11,
33       GraphemeClusterBreak_RegionalIndicator = 12,
34       GraphemeClusterBreak_EBase = 13,
35       GraphemeClusterBreak_EBaseGAZ = 14,
36       GraphemeClusterBreak_EModifier = 15,
37       GraphemeClusterBreak_GlueAfterZwj = 16,
38       GraphemeClusterBreak_ZWJ = 17,
39     };
40 
41     typedef struct GraphemeClusterBreak_option {union { GraphemeClusterBreak ok; }; bool is_ok; } GraphemeClusterBreak_option;
42 } // namespace capi
43 } // namespace
44 
45 namespace icu4x {
46 class GraphemeClusterBreak {
47 public:
48   enum Value {
49     Other = 0,
50     Control = 1,
51     CR = 2,
52     Extend = 3,
53     L = 4,
54     LF = 5,
55     LV = 6,
56     LVT = 7,
57     T = 8,
58     V = 9,
59     SpacingMark = 10,
60     Prepend = 11,
61     RegionalIndicator = 12,
62     EBase = 13,
63     EBaseGAZ = 14,
64     EModifier = 15,
65     GlueAfterZwj = 16,
66     ZWJ = 17,
67   };
68 
69   GraphemeClusterBreak() = default;
70   // Implicit conversions between enum and ::Value
GraphemeClusterBreak(Value v)71   constexpr GraphemeClusterBreak(Value v) : value(v) {}
operator Value() const72   constexpr operator Value() const { return value; }
73   // Prevent usage as boolean value
74   explicit operator bool() const = delete;
75 
76   inline static icu4x::GraphemeClusterBreak for_char(char32_t ch);
77 
78   inline uint8_t to_integer_value();
79 
80   inline static std::optional<icu4x::GraphemeClusterBreak> from_integer_value(uint8_t other);
81 
82   inline icu4x::capi::GraphemeClusterBreak AsFFI() const;
83   inline static icu4x::GraphemeClusterBreak FromFFI(icu4x::capi::GraphemeClusterBreak c_enum);
84 private:
85     Value value;
86 };
87 
88 } // namespace
89 #endif // icu4x_GraphemeClusterBreak_D_HPP
90