1 #ifndef icu4x_LineSegmenter_D_HPP 2 #define icu4x_LineSegmenter_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 namespace capi { struct DataProvider; } 15 class DataProvider; 16 namespace capi { struct LineBreakIteratorLatin1; } 17 class LineBreakIteratorLatin1; 18 namespace capi { struct LineBreakIteratorUtf16; } 19 class LineBreakIteratorUtf16; 20 namespace capi { struct LineBreakIteratorUtf8; } 21 class LineBreakIteratorUtf8; 22 namespace capi { struct LineSegmenter; } 23 class LineSegmenter; 24 namespace capi { struct Locale; } 25 class Locale; 26 struct LineBreakOptionsV2; 27 class DataError; 28 } 29 30 31 namespace icu4x { 32 namespace capi { 33 struct LineSegmenter; 34 } // namespace capi 35 } // namespace 36 37 namespace icu4x { 38 class LineSegmenter { 39 public: 40 41 inline static std::unique_ptr<icu4x::LineSegmenter> create_auto(); 42 43 inline static std::unique_ptr<icu4x::LineSegmenter> create_lstm(); 44 45 inline static std::unique_ptr<icu4x::LineSegmenter> create_dictionary(); 46 47 inline static std::unique_ptr<icu4x::LineSegmenter> create_auto_with_options_v2(const icu4x::Locale* content_locale, icu4x::LineBreakOptionsV2 options); 48 49 inline static diplomat::result<std::unique_ptr<icu4x::LineSegmenter>, icu4x::DataError> create_auto_with_options_v2_and_provider(const icu4x::DataProvider& provider, const icu4x::Locale* content_locale, icu4x::LineBreakOptionsV2 options); 50 51 inline static std::unique_ptr<icu4x::LineSegmenter> create_lstm_with_options_v2(const icu4x::Locale* content_locale, icu4x::LineBreakOptionsV2 options); 52 53 inline static diplomat::result<std::unique_ptr<icu4x::LineSegmenter>, icu4x::DataError> create_lstm_with_options_v2_and_provider(const icu4x::DataProvider& provider, const icu4x::Locale* content_locale, icu4x::LineBreakOptionsV2 options); 54 55 inline static std::unique_ptr<icu4x::LineSegmenter> create_dictionary_with_options_v2(const icu4x::Locale* content_locale, icu4x::LineBreakOptionsV2 options); 56 57 inline static diplomat::result<std::unique_ptr<icu4x::LineSegmenter>, icu4x::DataError> create_dictionary_with_options_v2_and_provider(const icu4x::DataProvider& provider, const icu4x::Locale* content_locale, icu4x::LineBreakOptionsV2 options); 58 59 inline std::unique_ptr<icu4x::LineBreakIteratorUtf8> segment(std::string_view input) const; 60 61 inline std::unique_ptr<icu4x::LineBreakIteratorUtf16> segment16(std::u16string_view input) const; 62 63 inline std::unique_ptr<icu4x::LineBreakIteratorLatin1> segment_latin1(diplomat::span<const uint8_t> input) const; 64 65 inline const icu4x::capi::LineSegmenter* AsFFI() const; 66 inline icu4x::capi::LineSegmenter* AsFFI(); 67 inline static const icu4x::LineSegmenter* FromFFI(const icu4x::capi::LineSegmenter* ptr); 68 inline static icu4x::LineSegmenter* FromFFI(icu4x::capi::LineSegmenter* ptr); 69 inline static void operator delete(void* ptr); 70 private: 71 LineSegmenter() = delete; 72 LineSegmenter(const icu4x::LineSegmenter&) = delete; 73 LineSegmenter(icu4x::LineSegmenter&&) noexcept = delete; 74 LineSegmenter operator=(const icu4x::LineSegmenter&) = delete; 75 LineSegmenter operator=(icu4x::LineSegmenter&&) noexcept = delete; 76 static void operator delete[](void*, size_t) = delete; 77 }; 78 79 } // namespace 80 #endif // icu4x_LineSegmenter_D_HPP 81