ICU4X
International Components for Unicode
Loading...
Searching...
No Matches
ICU4XSentenceSegmenter.hpp
Go to the documentation of this file.
1#ifndef ICU4XSentenceSegmenter_HPP
2#define ICU4XSentenceSegmenter_HPP
3#include <stdint.h>
4#include <stddef.h>
5#include <stdbool.h>
6#include <algorithm>
7#include <memory>
8#include <variant>
9#include <optional>
10#include "diplomat_runtime.hpp"
11
12#include "ICU4XSentenceSegmenter.h"
13
16#include "ICU4XError.hpp"
20
24struct ICU4XSentenceSegmenterDeleter {
25 void operator()(capi::ICU4XSentenceSegmenter* l) const noexcept {
26 capi::ICU4XSentenceSegmenter_destroy(l);
27 }
28};
29
36 public:
37
44
55 ICU4XSentenceBreakIteratorUtf8 segment_utf8(const std::string_view input) const;
56
67 ICU4XSentenceBreakIteratorUtf16 segment_utf16(const std::u16string_view input) const;
68
77 inline const capi::ICU4XSentenceSegmenter* AsFFI() const { return this->inner.get(); }
78 inline capi::ICU4XSentenceSegmenter* AsFFIMut() { return this->inner.get(); }
79 inline explicit ICU4XSentenceSegmenter(capi::ICU4XSentenceSegmenter* i) : inner(i) {}
82 ICU4XSentenceSegmenter& operator=(ICU4XSentenceSegmenter&& other) noexcept = default;
83 private:
84 std::unique_ptr<capi::ICU4XSentenceSegmenter, ICU4XSentenceSegmenterDeleter> inner;
85};
86
87#include "ICU4XDataProvider.hpp"
91
93 auto diplomat_result_raw_out_value = capi::ICU4XSentenceSegmenter_create(provider.AsFFI());
95 if (diplomat_result_raw_out_value.is_ok) {
96 diplomat_result_out_value = diplomat::Ok<ICU4XSentenceSegmenter>(ICU4XSentenceSegmenter(diplomat_result_raw_out_value.ok));
97 } else {
98 diplomat_result_out_value = diplomat::Err<ICU4XError>(static_cast<ICU4XError>(diplomat_result_raw_out_value.err));
99 }
100 return diplomat_result_out_value;
101}
103 return ICU4XSentenceBreakIteratorUtf8(capi::ICU4XSentenceSegmenter_segment_utf8(this->inner.get(), input.data(), input.size()));
104}
105inline ICU4XSentenceBreakIteratorUtf16 ICU4XSentenceSegmenter::segment_utf16(const std::u16string_view input) const {
106 return ICU4XSentenceBreakIteratorUtf16(capi::ICU4XSentenceSegmenter_segment_utf16(this->inner.get(), input.data(), input.size()));
107}
109 return ICU4XSentenceBreakIteratorLatin1(capi::ICU4XSentenceSegmenter_segment_latin1(this->inner.get(), input.data(), input.size()));
110}
111#endif
ICU4XError
Definition ICU4XError.hpp:23
Definition ICU4XDataProvider.hpp:32
Definition ICU4XSentenceBreakIteratorLatin1.hpp:27
Definition ICU4XSentenceBreakIteratorUtf16.hpp:27
Definition ICU4XSentenceBreakIteratorUtf8.hpp:27
Definition ICU4XSentenceSegmenter.hpp:35
ICU4XSentenceSegmenter()=default
ICU4XSentenceBreakIteratorUtf8 segment_utf8(const std::string_view input) const
Definition ICU4XSentenceSegmenter.hpp:102
ICU4XSentenceSegmenter(ICU4XSentenceSegmenter &&) noexcept=default
ICU4XSentenceBreakIteratorLatin1 segment_latin1(const diplomat::span< const uint8_t > input) const
Definition ICU4XSentenceSegmenter.hpp:108
static diplomat::result< ICU4XSentenceSegmenter, ICU4XError > create(const ICU4XDataProvider &provider)
Definition ICU4XSentenceSegmenter.hpp:92
ICU4XSentenceSegmenter(capi::ICU4XSentenceSegmenter *i)
Definition ICU4XSentenceSegmenter.hpp:79
ICU4XSentenceBreakIteratorUtf16 segment_utf16(const std::u16string_view input) const
Definition ICU4XSentenceSegmenter.hpp:105
Definition diplomat_runtime.hpp:84
Definition diplomat_runtime.hpp:144
constexpr T * data() const noexcept
Definition diplomat_runtime.hpp:152
constexpr size_t size() const noexcept
Definition diplomat_runtime.hpp:155
Definition diplomat_runtime.hpp:69
Definition diplomat_runtime.hpp:55