ICU4X
International Components for Unicode
Loading...
Searching...
No Matches
DataProvider.hpp
Go to the documentation of this file.
1#ifndef icu4x_DataProvider_HPP
2#define icu4x_DataProvider_HPP
3
4#include "DataProvider.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 <cstdlib>
15#include "DataError.hpp"
16#include "LocaleFallbacker.hpp"
17
18
19namespace icu4x {
20namespace capi {
21 extern "C" {
22
23 typedef struct icu4x_DataProvider_from_fs_mv1_result {union {icu4x::capi::DataProvider* ok; icu4x::capi::DataError err;}; bool is_ok;} icu4x_DataProvider_from_fs_mv1_result;
24 icu4x_DataProvider_from_fs_mv1_result icu4x_DataProvider_from_fs_mv1(diplomat::capi::DiplomatStringView path);
25
26 typedef struct icu4x_DataProvider_from_byte_slice_mv1_result {union {icu4x::capi::DataProvider* ok; icu4x::capi::DataError err;}; bool is_ok;} icu4x_DataProvider_from_byte_slice_mv1_result;
27 icu4x_DataProvider_from_byte_slice_mv1_result icu4x_DataProvider_from_byte_slice_mv1(diplomat::capi::DiplomatU8View blob);
28
29 typedef struct icu4x_DataProvider_fork_by_marker_mv1_result {union { icu4x::capi::DataError err;}; bool is_ok;} icu4x_DataProvider_fork_by_marker_mv1_result;
30 icu4x_DataProvider_fork_by_marker_mv1_result icu4x_DataProvider_fork_by_marker_mv1(icu4x::capi::DataProvider* self, icu4x::capi::DataProvider* other);
31
32 typedef struct icu4x_DataProvider_fork_by_locale_mv1_result {union { icu4x::capi::DataError err;}; bool is_ok;} icu4x_DataProvider_fork_by_locale_mv1_result;
33 icu4x_DataProvider_fork_by_locale_mv1_result icu4x_DataProvider_fork_by_locale_mv1(icu4x::capi::DataProvider* self, icu4x::capi::DataProvider* other);
34
35 typedef struct icu4x_DataProvider_enable_locale_fallback_with_mv1_result {union { icu4x::capi::DataError err;}; bool is_ok;} icu4x_DataProvider_enable_locale_fallback_with_mv1_result;
36 icu4x_DataProvider_enable_locale_fallback_with_mv1_result icu4x_DataProvider_enable_locale_fallback_with_mv1(icu4x::capi::DataProvider* self, const icu4x::capi::LocaleFallbacker* fallbacker);
37
38 void icu4x_DataProvider_destroy_mv1(DataProvider* self);
39
40 } // extern "C"
41} // namespace capi
42} // namespace
43
45 auto result = icu4x::capi::icu4x_DataProvider_from_fs_mv1({path.data(), path.size()});
46 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::DataProvider>, icu4x::DataError>(diplomat::Ok<std::unique_ptr<icu4x::DataProvider>>(std::unique_ptr<icu4x::DataProvider>(icu4x::DataProvider::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::DataProvider>, icu4x::DataError>(diplomat::Err<icu4x::DataError>(icu4x::DataError::FromFFI(result.err)));
47}
48
50 auto result = icu4x::capi::icu4x_DataProvider_from_byte_slice_mv1({blob.data(), blob.size()});
51 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::DataProvider>, icu4x::DataError>(diplomat::Ok<std::unique_ptr<icu4x::DataProvider>>(std::unique_ptr<icu4x::DataProvider>(icu4x::DataProvider::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::DataProvider>, icu4x::DataError>(diplomat::Err<icu4x::DataError>(icu4x::DataError::FromFFI(result.err)));
52}
53
55 auto result = icu4x::capi::icu4x_DataProvider_fork_by_marker_mv1(this->AsFFI(),
56 other.AsFFI());
58}
59
61 auto result = icu4x::capi::icu4x_DataProvider_fork_by_locale_mv1(this->AsFFI(),
62 other.AsFFI());
64}
65
67 auto result = icu4x::capi::icu4x_DataProvider_enable_locale_fallback_with_mv1(this->AsFFI(),
68 fallbacker.AsFFI());
70}
71
72inline const icu4x::capi::DataProvider* icu4x::DataProvider::AsFFI() const {
73 return reinterpret_cast<const icu4x::capi::DataProvider*>(this);
74}
75
76inline icu4x::capi::DataProvider* icu4x::DataProvider::AsFFI() {
77 return reinterpret_cast<icu4x::capi::DataProvider*>(this);
78}
79
80inline const icu4x::DataProvider* icu4x::DataProvider::FromFFI(const icu4x::capi::DataProvider* ptr) {
81 return reinterpret_cast<const icu4x::DataProvider*>(ptr);
82}
83
84inline icu4x::DataProvider* icu4x::DataProvider::FromFFI(icu4x::capi::DataProvider* ptr) {
85 return reinterpret_cast<icu4x::DataProvider*>(ptr);
86}
87
88inline void icu4x::DataProvider::operator delete(void* ptr) {
89 icu4x::capi::icu4x_DataProvider_destroy_mv1(reinterpret_cast<icu4x::capi::DataProvider*>(ptr));
90}
91
92
93#endif // icu4x_DataProvider_HPP
Definition diplomat_runtime.hpp:140
Definition diplomat_runtime.hpp:223
constexpr T * data() const noexcept
Definition diplomat_runtime.hpp:234
constexpr size_t size() const noexcept
Definition diplomat_runtime.hpp:237
Definition DataError.d.hpp:37
Definition DataProvider.d.hpp:40
static diplomat::result< std::unique_ptr< icu4x::DataProvider >, icu4x::DataError > from_fs(std::string_view path)
Definition DataProvider.hpp:44
diplomat::result< std::monostate, icu4x::DataError > fork_by_marker(icu4x::DataProvider &other)
Definition DataProvider.hpp:54
diplomat::result< std::monostate, icu4x::DataError > fork_by_locale(icu4x::DataProvider &other)
Definition DataProvider.hpp:60
static diplomat::result< std::unique_ptr< icu4x::DataProvider >, icu4x::DataError > from_byte_slice(diplomat::span< const uint8_t > blob)
Definition DataProvider.hpp:49
diplomat::result< std::monostate, icu4x::DataError > enable_locale_fallback_with(const icu4x::LocaleFallbacker &fallbacker)
Definition DataProvider.hpp:66
Definition LocaleFallbacker.d.hpp:38
Definition Bidi.d.hpp:14
Definition diplomat_runtime.hpp:125
Definition diplomat_runtime.hpp:111