• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef icu4x_LineSegmenter_HPP
2 #define icu4x_LineSegmenter_HPP
3 
4 #include "LineSegmenter.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 #include "DataError.hpp"
15 #include "DataProvider.hpp"
16 #include "LineBreakIteratorLatin1.hpp"
17 #include "LineBreakIteratorUtf16.hpp"
18 #include "LineBreakIteratorUtf8.hpp"
19 #include "LineBreakOptionsV2.hpp"
20 #include "Locale.hpp"
21 
22 
23 namespace icu4x {
24 namespace capi {
25     extern "C" {
26 
27     icu4x::capi::LineSegmenter* icu4x_LineSegmenter_create_auto_mv1(void);
28 
29     icu4x::capi::LineSegmenter* icu4x_LineSegmenter_create_lstm_mv1(void);
30 
31     icu4x::capi::LineSegmenter* icu4x_LineSegmenter_create_dictionary_mv1(void);
32 
33     icu4x::capi::LineSegmenter* icu4x_LineSegmenter_create_auto_with_options_v2_mv1(const icu4x::capi::Locale* content_locale, icu4x::capi::LineBreakOptionsV2 options);
34 
35     typedef struct icu4x_LineSegmenter_create_auto_with_options_v2_and_provider_mv1_result {union {icu4x::capi::LineSegmenter* ok; icu4x::capi::DataError err;}; bool is_ok;} icu4x_LineSegmenter_create_auto_with_options_v2_and_provider_mv1_result;
36     icu4x_LineSegmenter_create_auto_with_options_v2_and_provider_mv1_result icu4x_LineSegmenter_create_auto_with_options_v2_and_provider_mv1(const icu4x::capi::DataProvider* provider, const icu4x::capi::Locale* content_locale, icu4x::capi::LineBreakOptionsV2 options);
37 
38     icu4x::capi::LineSegmenter* icu4x_LineSegmenter_create_lstm_with_options_v2_mv1(const icu4x::capi::Locale* content_locale, icu4x::capi::LineBreakOptionsV2 options);
39 
40     typedef struct icu4x_LineSegmenter_create_lstm_with_options_v2_and_provider_mv1_result {union {icu4x::capi::LineSegmenter* ok; icu4x::capi::DataError err;}; bool is_ok;} icu4x_LineSegmenter_create_lstm_with_options_v2_and_provider_mv1_result;
41     icu4x_LineSegmenter_create_lstm_with_options_v2_and_provider_mv1_result icu4x_LineSegmenter_create_lstm_with_options_v2_and_provider_mv1(const icu4x::capi::DataProvider* provider, const icu4x::capi::Locale* content_locale, icu4x::capi::LineBreakOptionsV2 options);
42 
43     icu4x::capi::LineSegmenter* icu4x_LineSegmenter_create_dictionary_with_options_v2_mv1(const icu4x::capi::Locale* content_locale, icu4x::capi::LineBreakOptionsV2 options);
44 
45     typedef struct icu4x_LineSegmenter_create_dictionary_with_options_v2_and_provider_mv1_result {union {icu4x::capi::LineSegmenter* ok; icu4x::capi::DataError err;}; bool is_ok;} icu4x_LineSegmenter_create_dictionary_with_options_v2_and_provider_mv1_result;
46     icu4x_LineSegmenter_create_dictionary_with_options_v2_and_provider_mv1_result icu4x_LineSegmenter_create_dictionary_with_options_v2_and_provider_mv1(const icu4x::capi::DataProvider* provider, const icu4x::capi::Locale* content_locale, icu4x::capi::LineBreakOptionsV2 options);
47 
48     icu4x::capi::LineBreakIteratorUtf8* icu4x_LineSegmenter_segment_utf8_mv1(const icu4x::capi::LineSegmenter* self, diplomat::capi::DiplomatStringView input);
49 
50     icu4x::capi::LineBreakIteratorUtf16* icu4x_LineSegmenter_segment_utf16_mv1(const icu4x::capi::LineSegmenter* self, diplomat::capi::DiplomatString16View input);
51 
52     icu4x::capi::LineBreakIteratorLatin1* icu4x_LineSegmenter_segment_latin1_mv1(const icu4x::capi::LineSegmenter* self, diplomat::capi::DiplomatU8View input);
53 
54 
55     void icu4x_LineSegmenter_destroy_mv1(LineSegmenter* self);
56 
57     } // extern "C"
58 } // namespace capi
59 } // namespace
60 
create_auto()61 inline std::unique_ptr<icu4x::LineSegmenter> icu4x::LineSegmenter::create_auto() {
62   auto result = icu4x::capi::icu4x_LineSegmenter_create_auto_mv1();
63   return std::unique_ptr<icu4x::LineSegmenter>(icu4x::LineSegmenter::FromFFI(result));
64 }
65 
create_lstm()66 inline std::unique_ptr<icu4x::LineSegmenter> icu4x::LineSegmenter::create_lstm() {
67   auto result = icu4x::capi::icu4x_LineSegmenter_create_lstm_mv1();
68   return std::unique_ptr<icu4x::LineSegmenter>(icu4x::LineSegmenter::FromFFI(result));
69 }
70 
create_dictionary()71 inline std::unique_ptr<icu4x::LineSegmenter> icu4x::LineSegmenter::create_dictionary() {
72   auto result = icu4x::capi::icu4x_LineSegmenter_create_dictionary_mv1();
73   return std::unique_ptr<icu4x::LineSegmenter>(icu4x::LineSegmenter::FromFFI(result));
74 }
75 
create_auto_with_options_v2(const icu4x::Locale * content_locale,icu4x::LineBreakOptionsV2 options)76 inline std::unique_ptr<icu4x::LineSegmenter> icu4x::LineSegmenter::create_auto_with_options_v2(const icu4x::Locale* content_locale, icu4x::LineBreakOptionsV2 options) {
77   auto result = icu4x::capi::icu4x_LineSegmenter_create_auto_with_options_v2_mv1(content_locale ? content_locale->AsFFI() : nullptr,
78     options.AsFFI());
79   return std::unique_ptr<icu4x::LineSegmenter>(icu4x::LineSegmenter::FromFFI(result));
80 }
81 
create_auto_with_options_v2_and_provider(const icu4x::DataProvider & provider,const icu4x::Locale * content_locale,icu4x::LineBreakOptionsV2 options)82 inline diplomat::result<std::unique_ptr<icu4x::LineSegmenter>, icu4x::DataError> icu4x::LineSegmenter::create_auto_with_options_v2_and_provider(const icu4x::DataProvider& provider, const icu4x::Locale* content_locale, icu4x::LineBreakOptionsV2 options) {
83   auto result = icu4x::capi::icu4x_LineSegmenter_create_auto_with_options_v2_and_provider_mv1(provider.AsFFI(),
84     content_locale ? content_locale->AsFFI() : nullptr,
85     options.AsFFI());
86   return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::LineSegmenter>, icu4x::DataError>(diplomat::Ok<std::unique_ptr<icu4x::LineSegmenter>>(std::unique_ptr<icu4x::LineSegmenter>(icu4x::LineSegmenter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::LineSegmenter>, icu4x::DataError>(diplomat::Err<icu4x::DataError>(icu4x::DataError::FromFFI(result.err)));
87 }
88 
create_lstm_with_options_v2(const icu4x::Locale * content_locale,icu4x::LineBreakOptionsV2 options)89 inline std::unique_ptr<icu4x::LineSegmenter> icu4x::LineSegmenter::create_lstm_with_options_v2(const icu4x::Locale* content_locale, icu4x::LineBreakOptionsV2 options) {
90   auto result = icu4x::capi::icu4x_LineSegmenter_create_lstm_with_options_v2_mv1(content_locale ? content_locale->AsFFI() : nullptr,
91     options.AsFFI());
92   return std::unique_ptr<icu4x::LineSegmenter>(icu4x::LineSegmenter::FromFFI(result));
93 }
94 
create_lstm_with_options_v2_and_provider(const icu4x::DataProvider & provider,const icu4x::Locale * content_locale,icu4x::LineBreakOptionsV2 options)95 inline diplomat::result<std::unique_ptr<icu4x::LineSegmenter>, icu4x::DataError> icu4x::LineSegmenter::create_lstm_with_options_v2_and_provider(const icu4x::DataProvider& provider, const icu4x::Locale* content_locale, icu4x::LineBreakOptionsV2 options) {
96   auto result = icu4x::capi::icu4x_LineSegmenter_create_lstm_with_options_v2_and_provider_mv1(provider.AsFFI(),
97     content_locale ? content_locale->AsFFI() : nullptr,
98     options.AsFFI());
99   return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::LineSegmenter>, icu4x::DataError>(diplomat::Ok<std::unique_ptr<icu4x::LineSegmenter>>(std::unique_ptr<icu4x::LineSegmenter>(icu4x::LineSegmenter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::LineSegmenter>, icu4x::DataError>(diplomat::Err<icu4x::DataError>(icu4x::DataError::FromFFI(result.err)));
100 }
101 
create_dictionary_with_options_v2(const icu4x::Locale * content_locale,icu4x::LineBreakOptionsV2 options)102 inline std::unique_ptr<icu4x::LineSegmenter> icu4x::LineSegmenter::create_dictionary_with_options_v2(const icu4x::Locale* content_locale, icu4x::LineBreakOptionsV2 options) {
103   auto result = icu4x::capi::icu4x_LineSegmenter_create_dictionary_with_options_v2_mv1(content_locale ? content_locale->AsFFI() : nullptr,
104     options.AsFFI());
105   return std::unique_ptr<icu4x::LineSegmenter>(icu4x::LineSegmenter::FromFFI(result));
106 }
107 
create_dictionary_with_options_v2_and_provider(const icu4x::DataProvider & provider,const icu4x::Locale * content_locale,icu4x::LineBreakOptionsV2 options)108 inline diplomat::result<std::unique_ptr<icu4x::LineSegmenter>, icu4x::DataError> icu4x::LineSegmenter::create_dictionary_with_options_v2_and_provider(const icu4x::DataProvider& provider, const icu4x::Locale* content_locale, icu4x::LineBreakOptionsV2 options) {
109   auto result = icu4x::capi::icu4x_LineSegmenter_create_dictionary_with_options_v2_and_provider_mv1(provider.AsFFI(),
110     content_locale ? content_locale->AsFFI() : nullptr,
111     options.AsFFI());
112   return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::LineSegmenter>, icu4x::DataError>(diplomat::Ok<std::unique_ptr<icu4x::LineSegmenter>>(std::unique_ptr<icu4x::LineSegmenter>(icu4x::LineSegmenter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::LineSegmenter>, icu4x::DataError>(diplomat::Err<icu4x::DataError>(icu4x::DataError::FromFFI(result.err)));
113 }
114 
segment(std::string_view input) const115 inline std::unique_ptr<icu4x::LineBreakIteratorUtf8> icu4x::LineSegmenter::segment(std::string_view input) const {
116   auto result = icu4x::capi::icu4x_LineSegmenter_segment_utf8_mv1(this->AsFFI(),
117     {input.data(), input.size()});
118   return std::unique_ptr<icu4x::LineBreakIteratorUtf8>(icu4x::LineBreakIteratorUtf8::FromFFI(result));
119 }
120 
segment16(std::u16string_view input) const121 inline std::unique_ptr<icu4x::LineBreakIteratorUtf16> icu4x::LineSegmenter::segment16(std::u16string_view input) const {
122   auto result = icu4x::capi::icu4x_LineSegmenter_segment_utf16_mv1(this->AsFFI(),
123     {input.data(), input.size()});
124   return std::unique_ptr<icu4x::LineBreakIteratorUtf16>(icu4x::LineBreakIteratorUtf16::FromFFI(result));
125 }
126 
segment_latin1(diplomat::span<const uint8_t> input) const127 inline std::unique_ptr<icu4x::LineBreakIteratorLatin1> icu4x::LineSegmenter::segment_latin1(diplomat::span<const uint8_t> input) const {
128   auto result = icu4x::capi::icu4x_LineSegmenter_segment_latin1_mv1(this->AsFFI(),
129     {input.data(), input.size()});
130   return std::unique_ptr<icu4x::LineBreakIteratorLatin1>(icu4x::LineBreakIteratorLatin1::FromFFI(result));
131 }
132 
AsFFI() const133 inline const icu4x::capi::LineSegmenter* icu4x::LineSegmenter::AsFFI() const {
134   return reinterpret_cast<const icu4x::capi::LineSegmenter*>(this);
135 }
136 
AsFFI()137 inline icu4x::capi::LineSegmenter* icu4x::LineSegmenter::AsFFI() {
138   return reinterpret_cast<icu4x::capi::LineSegmenter*>(this);
139 }
140 
FromFFI(const icu4x::capi::LineSegmenter * ptr)141 inline const icu4x::LineSegmenter* icu4x::LineSegmenter::FromFFI(const icu4x::capi::LineSegmenter* ptr) {
142   return reinterpret_cast<const icu4x::LineSegmenter*>(ptr);
143 }
144 
FromFFI(icu4x::capi::LineSegmenter * ptr)145 inline icu4x::LineSegmenter* icu4x::LineSegmenter::FromFFI(icu4x::capi::LineSegmenter* ptr) {
146   return reinterpret_cast<icu4x::LineSegmenter*>(ptr);
147 }
148 
operator delete(void * ptr)149 inline void icu4x::LineSegmenter::operator delete(void* ptr) {
150   icu4x::capi::icu4x_LineSegmenter_destroy_mv1(reinterpret_cast<icu4x::capi::LineSegmenter*>(ptr));
151 }
152 
153 
154 #endif // icu4x_LineSegmenter_HPP
155