1 #ifndef icu4x_SentenceSegmenter_D_HPP 2 #define icu4x_SentenceSegmenter_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 SentenceBreakIteratorLatin1; } 19 class SentenceBreakIteratorLatin1; 20 namespace capi { struct SentenceBreakIteratorUtf16; } 21 class SentenceBreakIteratorUtf16; 22 namespace capi { struct SentenceBreakIteratorUtf8; } 23 class SentenceBreakIteratorUtf8; 24 namespace capi { struct SentenceSegmenter; } 25 class SentenceSegmenter; 26 class DataError; 27 } 28 29 30 namespace icu4x { 31 namespace capi { 32 struct SentenceSegmenter; 33 } // namespace capi 34 } // namespace 35 36 namespace icu4x { 37 class SentenceSegmenter { 38 public: 39 40 inline static std::unique_ptr<icu4x::SentenceSegmenter> create(); 41 42 inline static diplomat::result<std::unique_ptr<icu4x::SentenceSegmenter>, icu4x::DataError> create_with_content_locale(const icu4x::Locale& locale); 43 44 inline static diplomat::result<std::unique_ptr<icu4x::SentenceSegmenter>, icu4x::DataError> create_with_content_locale_and_provider(const icu4x::DataProvider& provider, const icu4x::Locale& locale); 45 46 inline std::unique_ptr<icu4x::SentenceBreakIteratorUtf8> segment(std::string_view input) const; 47 48 inline std::unique_ptr<icu4x::SentenceBreakIteratorUtf16> segment16(std::u16string_view input) const; 49 50 inline std::unique_ptr<icu4x::SentenceBreakIteratorLatin1> segment_latin1(diplomat::span<const uint8_t> input) const; 51 52 inline const icu4x::capi::SentenceSegmenter* AsFFI() const; 53 inline icu4x::capi::SentenceSegmenter* AsFFI(); 54 inline static const icu4x::SentenceSegmenter* FromFFI(const icu4x::capi::SentenceSegmenter* ptr); 55 inline static icu4x::SentenceSegmenter* FromFFI(icu4x::capi::SentenceSegmenter* ptr); 56 inline static void operator delete(void* ptr); 57 private: 58 SentenceSegmenter() = delete; 59 SentenceSegmenter(const icu4x::SentenceSegmenter&) = delete; 60 SentenceSegmenter(icu4x::SentenceSegmenter&&) noexcept = delete; 61 SentenceSegmenter operator=(const icu4x::SentenceSegmenter&) = delete; 62 SentenceSegmenter operator=(icu4x::SentenceSegmenter&&) noexcept = delete; 63 static void operator delete[](void*, size_t) = delete; 64 }; 65 66 } // namespace 67 #endif // icu4x_SentenceSegmenter_D_HPP 68