1 #ifndef icu4x_LineBreak_HPP 2 #define icu4x_LineBreak_HPP 3 4 #include "LineBreak.d.hpp" 5 6 #include <stdio.h> 7 #include <stdint.h> 8 #include <stddef.h> 9 #include <stdbool.h> 10 #include <memory> 11 #include <functional> 12 #include <optional> 13 #include "../diplomat_runtime.hpp" 14 15 16 namespace icu4x { 17 namespace capi { 18 extern "C" { 19 20 icu4x::capi::LineBreak icu4x_LineBreak_for_char_mv1(char32_t ch); 21 22 typedef struct icu4x_LineBreak_long_name_mv1_result {union {diplomat::capi::DiplomatStringView ok; }; bool is_ok;} icu4x_LineBreak_long_name_mv1_result; 23 icu4x_LineBreak_long_name_mv1_result icu4x_LineBreak_long_name_mv1(icu4x::capi::LineBreak self); 24 25 typedef struct icu4x_LineBreak_short_name_mv1_result {union {diplomat::capi::DiplomatStringView ok; }; bool is_ok;} icu4x_LineBreak_short_name_mv1_result; 26 icu4x_LineBreak_short_name_mv1_result icu4x_LineBreak_short_name_mv1(icu4x::capi::LineBreak self); 27 28 uint8_t icu4x_LineBreak_to_integer_value_mv1(icu4x::capi::LineBreak self); 29 30 typedef struct icu4x_LineBreak_from_integer_value_mv1_result {union {icu4x::capi::LineBreak ok; }; bool is_ok;} icu4x_LineBreak_from_integer_value_mv1_result; 31 icu4x_LineBreak_from_integer_value_mv1_result icu4x_LineBreak_from_integer_value_mv1(uint8_t other); 32 33 34 } // extern "C" 35 } // namespace capi 36 } // namespace 37 AsFFI() const38inline icu4x::capi::LineBreak icu4x::LineBreak::AsFFI() const { 39 return static_cast<icu4x::capi::LineBreak>(value); 40 } 41 FromFFI(icu4x::capi::LineBreak c_enum)42inline icu4x::LineBreak icu4x::LineBreak::FromFFI(icu4x::capi::LineBreak c_enum) { 43 switch (c_enum) { 44 case icu4x::capi::LineBreak_Unknown: 45 case icu4x::capi::LineBreak_Ambiguous: 46 case icu4x::capi::LineBreak_Alphabetic: 47 case icu4x::capi::LineBreak_BreakBoth: 48 case icu4x::capi::LineBreak_BreakAfter: 49 case icu4x::capi::LineBreak_BreakBefore: 50 case icu4x::capi::LineBreak_MandatoryBreak: 51 case icu4x::capi::LineBreak_ContingentBreak: 52 case icu4x::capi::LineBreak_ClosePunctuation: 53 case icu4x::capi::LineBreak_CombiningMark: 54 case icu4x::capi::LineBreak_CarriageReturn: 55 case icu4x::capi::LineBreak_Exclamation: 56 case icu4x::capi::LineBreak_Glue: 57 case icu4x::capi::LineBreak_Hyphen: 58 case icu4x::capi::LineBreak_Ideographic: 59 case icu4x::capi::LineBreak_Inseparable: 60 case icu4x::capi::LineBreak_InfixNumeric: 61 case icu4x::capi::LineBreak_LineFeed: 62 case icu4x::capi::LineBreak_Nonstarter: 63 case icu4x::capi::LineBreak_Numeric: 64 case icu4x::capi::LineBreak_OpenPunctuation: 65 case icu4x::capi::LineBreak_PostfixNumeric: 66 case icu4x::capi::LineBreak_PrefixNumeric: 67 case icu4x::capi::LineBreak_Quotation: 68 case icu4x::capi::LineBreak_ComplexContext: 69 case icu4x::capi::LineBreak_Surrogate: 70 case icu4x::capi::LineBreak_Space: 71 case icu4x::capi::LineBreak_BreakSymbols: 72 case icu4x::capi::LineBreak_ZWSpace: 73 case icu4x::capi::LineBreak_NextLine: 74 case icu4x::capi::LineBreak_WordJoiner: 75 case icu4x::capi::LineBreak_H2: 76 case icu4x::capi::LineBreak_H3: 77 case icu4x::capi::LineBreak_JL: 78 case icu4x::capi::LineBreak_JT: 79 case icu4x::capi::LineBreak_JV: 80 case icu4x::capi::LineBreak_CloseParenthesis: 81 case icu4x::capi::LineBreak_ConditionalJapaneseStarter: 82 case icu4x::capi::LineBreak_HebrewLetter: 83 case icu4x::capi::LineBreak_RegionalIndicator: 84 case icu4x::capi::LineBreak_EBase: 85 case icu4x::capi::LineBreak_EModifier: 86 case icu4x::capi::LineBreak_ZWJ: 87 case icu4x::capi::LineBreak_Aksara: 88 case icu4x::capi::LineBreak_AksaraPrebase: 89 case icu4x::capi::LineBreak_AksaraStart: 90 case icu4x::capi::LineBreak_ViramaFinal: 91 case icu4x::capi::LineBreak_Virama: 92 return static_cast<icu4x::LineBreak::Value>(c_enum); 93 default: 94 abort(); 95 } 96 } 97 for_char(char32_t ch)98inline icu4x::LineBreak icu4x::LineBreak::for_char(char32_t ch) { 99 auto result = icu4x::capi::icu4x_LineBreak_for_char_mv1(ch); 100 return icu4x::LineBreak::FromFFI(result); 101 } 102 long_name()103inline std::optional<std::string_view> icu4x::LineBreak::long_name() { 104 auto result = icu4x::capi::icu4x_LineBreak_long_name_mv1(this->AsFFI()); 105 return result.is_ok ? std::optional<std::string_view>(std::string_view(result.ok.data, result.ok.len)) : std::nullopt; 106 } 107 short_name()108inline std::optional<std::string_view> icu4x::LineBreak::short_name() { 109 auto result = icu4x::capi::icu4x_LineBreak_short_name_mv1(this->AsFFI()); 110 return result.is_ok ? std::optional<std::string_view>(std::string_view(result.ok.data, result.ok.len)) : std::nullopt; 111 } 112 to_integer_value()113inline uint8_t icu4x::LineBreak::to_integer_value() { 114 auto result = icu4x::capi::icu4x_LineBreak_to_integer_value_mv1(this->AsFFI()); 115 return result; 116 } 117 from_integer_value(uint8_t other)118inline std::optional<icu4x::LineBreak> icu4x::LineBreak::from_integer_value(uint8_t other) { 119 auto result = icu4x::capi::icu4x_LineBreak_from_integer_value_mv1(other); 120 return result.is_ok ? std::optional<icu4x::LineBreak>(icu4x::LineBreak::FromFFI(result.ok)) : std::nullopt; 121 } 122 #endif // icu4x_LineBreak_HPP 123