ICU4X
International Components for Unicode
Loading...
Searching...
No Matches
TimeRangeFormatter.hpp
Go to the documentation of this file.
1#ifndef ICU4X_TimeRangeFormatter_HPP
2#define ICU4X_TimeRangeFormatter_HPP
3
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>
14#include "DataProvider.hpp"
15#include "DateTimeAlignment.hpp"
17#include "DateTimeLength.hpp"
18#include "Locale.hpp"
19#include "Time.hpp"
20#include "TimePrecision.hpp"
21#include "diplomat_runtime.hpp"
22
23
24namespace icu4x {
25namespace capi {
26 extern "C" {
27
28 typedef struct icu4x_TimeRangeFormatter_create_mv1_result {union {icu4x::capi::TimeRangeFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeRangeFormatter_create_mv1_result;
29 icu4x_TimeRangeFormatter_create_mv1_result icu4x_TimeRangeFormatter_create_mv1(const icu4x::capi::Locale* locale, icu4x::capi::DateTimeLength_option length, icu4x::capi::TimePrecision_option time_precision, icu4x::capi::DateTimeAlignment_option alignment);
30
31 typedef struct icu4x_TimeRangeFormatter_create_with_provider_mv1_result {union {icu4x::capi::TimeRangeFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeRangeFormatter_create_with_provider_mv1_result;
32 icu4x_TimeRangeFormatter_create_with_provider_mv1_result icu4x_TimeRangeFormatter_create_with_provider_mv1(const icu4x::capi::DataProvider* provider, const icu4x::capi::Locale* locale, icu4x::capi::DateTimeLength_option length, icu4x::capi::TimePrecision_option time_precision, icu4x::capi::DateTimeAlignment_option alignment);
33
34 void icu4x_TimeRangeFormatter_format_mv1(const icu4x::capi::TimeRangeFormatter* self, const icu4x::capi::Time* start_time, const icu4x::capi::Time* end_time, icu4x::diplomat::capi::DiplomatWrite* write);
35
36 void icu4x_TimeRangeFormatter_destroy_mv1(TimeRangeFormatter* self);
37
38 } // extern "C"
39} // namespace capi
40} // namespace
41
42inline icu4x::diplomat::result<std::unique_ptr<icu4x::TimeRangeFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeRangeFormatter::create(const icu4x::Locale& locale, std::optional<icu4x::DateTimeLength> length, std::optional<icu4x::TimePrecision> time_precision, std::optional<icu4x::DateTimeAlignment> alignment) {
43 auto result = icu4x::capi::icu4x_TimeRangeFormatter_create_mv1(locale.AsFFI(),
44 length.has_value() ? (icu4x::capi::DateTimeLength_option{ { length.value().AsFFI() }, true }) : (icu4x::capi::DateTimeLength_option{ {}, false }),
45 time_precision.has_value() ? (icu4x::capi::TimePrecision_option{ { time_precision.value().AsFFI() }, true }) : (icu4x::capi::TimePrecision_option{ {}, false }),
46 alignment.has_value() ? (icu4x::capi::DateTimeAlignment_option{ { alignment.value().AsFFI() }, true }) : (icu4x::capi::DateTimeAlignment_option{ {}, false }));
47 return result.is_ok ? icu4x::diplomat::result<std::unique_ptr<icu4x::TimeRangeFormatter>, icu4x::DateTimeFormatterLoadError>(icu4x::diplomat::Ok<std::unique_ptr<icu4x::TimeRangeFormatter>>(std::unique_ptr<icu4x::TimeRangeFormatter>(icu4x::TimeRangeFormatter::FromFFI(result.ok)))) : icu4x::diplomat::result<std::unique_ptr<icu4x::TimeRangeFormatter>, icu4x::DateTimeFormatterLoadError>(icu4x::diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err)));
48}
49
50inline icu4x::diplomat::result<std::unique_ptr<icu4x::TimeRangeFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeRangeFormatter::create_with_provider(const icu4x::DataProvider& provider, const icu4x::Locale& locale, std::optional<icu4x::DateTimeLength> length, std::optional<icu4x::TimePrecision> time_precision, std::optional<icu4x::DateTimeAlignment> alignment) {
51 auto result = icu4x::capi::icu4x_TimeRangeFormatter_create_with_provider_mv1(provider.AsFFI(),
52 locale.AsFFI(),
53 length.has_value() ? (icu4x::capi::DateTimeLength_option{ { length.value().AsFFI() }, true }) : (icu4x::capi::DateTimeLength_option{ {}, false }),
54 time_precision.has_value() ? (icu4x::capi::TimePrecision_option{ { time_precision.value().AsFFI() }, true }) : (icu4x::capi::TimePrecision_option{ {}, false }),
55 alignment.has_value() ? (icu4x::capi::DateTimeAlignment_option{ { alignment.value().AsFFI() }, true }) : (icu4x::capi::DateTimeAlignment_option{ {}, false }));
56 return result.is_ok ? icu4x::diplomat::result<std::unique_ptr<icu4x::TimeRangeFormatter>, icu4x::DateTimeFormatterLoadError>(icu4x::diplomat::Ok<std::unique_ptr<icu4x::TimeRangeFormatter>>(std::unique_ptr<icu4x::TimeRangeFormatter>(icu4x::TimeRangeFormatter::FromFFI(result.ok)))) : icu4x::diplomat::result<std::unique_ptr<icu4x::TimeRangeFormatter>, icu4x::DateTimeFormatterLoadError>(icu4x::diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err)));
57}
58
59inline std::string icu4x::TimeRangeFormatter::format(const icu4x::Time& start_time, const icu4x::Time& end_time) const {
60 std::string output;
61 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteFromString(output);
62 icu4x::capi::icu4x_TimeRangeFormatter_format_mv1(this->AsFFI(),
63 start_time.AsFFI(),
64 end_time.AsFFI(),
65 &write);
66 return output;
67}
68template<typename W>
69inline void icu4x::TimeRangeFormatter::format_write(const icu4x::Time& start_time, const icu4x::Time& end_time, W& writeable) const {
70 icu4x::diplomat::capi::DiplomatWrite write = icu4x::diplomat::WriteTrait<W>::Construct(writeable);
71 icu4x::capi::icu4x_TimeRangeFormatter_format_mv1(this->AsFFI(),
72 start_time.AsFFI(),
73 end_time.AsFFI(),
74 &write);
75}
76
77inline const icu4x::capi::TimeRangeFormatter* icu4x::TimeRangeFormatter::AsFFI() const {
78 return reinterpret_cast<const icu4x::capi::TimeRangeFormatter*>(this);
79}
80
81inline icu4x::capi::TimeRangeFormatter* icu4x::TimeRangeFormatter::AsFFI() {
82 return reinterpret_cast<icu4x::capi::TimeRangeFormatter*>(this);
83}
84
85inline const icu4x::TimeRangeFormatter* icu4x::TimeRangeFormatter::FromFFI(const icu4x::capi::TimeRangeFormatter* ptr) {
86 return reinterpret_cast<const icu4x::TimeRangeFormatter*>(ptr);
87}
88
89inline icu4x::TimeRangeFormatter* icu4x::TimeRangeFormatter::FromFFI(icu4x::capi::TimeRangeFormatter* ptr) {
90 return reinterpret_cast<icu4x::TimeRangeFormatter*>(ptr);
91}
92
93inline void icu4x::TimeRangeFormatter::operator delete(void* ptr) {
94 icu4x::capi::icu4x_TimeRangeFormatter_destroy_mv1(reinterpret_cast<icu4x::capi::TimeRangeFormatter*>(ptr));
95}
96
97
98#endif // ICU4X_TimeRangeFormatter_HPP
Definition DataProvider.d.hpp:40
Definition DateTimeFormatterLoadError.d.hpp:41
Definition Locale.d.hpp:33
Definition TimeRangeFormatter.d.hpp:40
static icu4x::diplomat::result< std::unique_ptr< icu4x::TimeRangeFormatter >, icu4x::DateTimeFormatterLoadError > create(const icu4x::Locale &locale, std::optional< icu4x::DateTimeLength > length, std::optional< icu4x::TimePrecision > time_precision, std::optional< icu4x::DateTimeAlignment > alignment)
Definition TimeRangeFormatter.hpp:42
void format_write(const icu4x::Time &start_time, const icu4x::Time &end_time, W &writeable_output) const
Definition TimeRangeFormatter.hpp:69
std::string format(const icu4x::Time &start_time, const icu4x::Time &end_time) const
Definition TimeRangeFormatter.hpp:59
static icu4x::diplomat::result< std::unique_ptr< icu4x::TimeRangeFormatter >, icu4x::DateTimeFormatterLoadError > create_with_provider(const icu4x::DataProvider &provider, const icu4x::Locale &locale, std::optional< icu4x::DateTimeLength > length, std::optional< icu4x::TimePrecision > time_precision, std::optional< icu4x::DateTimeAlignment > alignment)
Definition TimeRangeFormatter.hpp:50
Definition Time.d.hpp:34
Definition Bidi.d.hpp:13
Definition diplomat_runtime.hpp:164
Definition diplomat_runtime.hpp:135