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