• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef icu4x_HangulSyllableType_D_HPP
2 #define icu4x_HangulSyllableType_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 HangulSyllableType;
15 }
16 
17 
18 namespace icu4x {
19 namespace capi {
20     enum HangulSyllableType {
21       HangulSyllableType_NotApplicable = 0,
22       HangulSyllableType_LeadingJamo = 1,
23       HangulSyllableType_VowelJamo = 2,
24       HangulSyllableType_TrailingJamo = 3,
25       HangulSyllableType_LeadingVowelSyllable = 4,
26       HangulSyllableType_LeadingVowelTrailingSyllable = 5,
27     };
28 
29     typedef struct HangulSyllableType_option {union { HangulSyllableType ok; }; bool is_ok; } HangulSyllableType_option;
30 } // namespace capi
31 } // namespace
32 
33 namespace icu4x {
34 class HangulSyllableType {
35 public:
36   enum Value {
37     NotApplicable = 0,
38     LeadingJamo = 1,
39     VowelJamo = 2,
40     TrailingJamo = 3,
41     LeadingVowelSyllable = 4,
42     LeadingVowelTrailingSyllable = 5,
43   };
44 
45   HangulSyllableType() = default;
46   // Implicit conversions between enum and ::Value
HangulSyllableType(Value v)47   constexpr HangulSyllableType(Value v) : value(v) {}
operator Value() const48   constexpr operator Value() const { return value; }
49   // Prevent usage as boolean value
50   explicit operator bool() const = delete;
51 
52   inline static icu4x::HangulSyllableType for_char(char32_t ch);
53 
54   inline uint8_t to_integer_value();
55 
56   inline static std::optional<icu4x::HangulSyllableType> from_integer_value(uint8_t other);
57 
58   inline icu4x::capi::HangulSyllableType AsFFI() const;
59   inline static icu4x::HangulSyllableType FromFFI(icu4x::capi::HangulSyllableType c_enum);
60 private:
61     Value value;
62 };
63 
64 } // namespace
65 #endif // icu4x_HangulSyllableType_D_HPP
66