ICU4X
International Components for Unicode
Loading...
Searching...
No Matches
TimeFormatter.hpp
Go to the documentation of this file.
1#ifndef icu4x_TimeFormatter_HPP
2#define icu4x_TimeFormatter_HPP
3
4#include "TimeFormatter.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 "DataProvider.hpp"
16#include "DateTimeAlignment.hpp"
18#include "DateTimeLength.hpp"
19#include "Locale.hpp"
20#include "Time.hpp"
21#include "TimePrecision.hpp"
22
23
24namespace icu4x {
25namespace capi {
26 extern "C" {
27
28 typedef struct icu4x_TimeFormatter_create_mv1_result {union {icu4x::capi::TimeFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeFormatter_create_mv1_result;
29 icu4x_TimeFormatter_create_mv1_result icu4x_TimeFormatter_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_TimeFormatter_create_with_provider_mv1_result {union {icu4x::capi::TimeFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeFormatter_create_with_provider_mv1_result;
32 icu4x_TimeFormatter_create_with_provider_mv1_result icu4x_TimeFormatter_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_TimeFormatter_format_mv1(const icu4x::capi::TimeFormatter* self, const icu4x::capi::Time* time, diplomat::capi::DiplomatWrite* write);
35
36 void icu4x_TimeFormatter_destroy_mv1(TimeFormatter* self);
37
38 } // extern "C"
39} // namespace capi
40} // namespace
41
42inline diplomat::result<std::unique_ptr<icu4x::TimeFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeFormatter::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_TimeFormatter_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 ? diplomat::result<std::unique_ptr<icu4x::TimeFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeFormatter>>(std::unique_ptr<icu4x::TimeFormatter>(icu4x::TimeFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err)));
48}
49
50inline diplomat::result<std::unique_ptr<icu4x::TimeFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeFormatter::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_TimeFormatter_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 ? diplomat::result<std::unique_ptr<icu4x::TimeFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeFormatter>>(std::unique_ptr<icu4x::TimeFormatter>(icu4x::TimeFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err)));
57}
58
59inline std::string icu4x::TimeFormatter::format(const icu4x::Time& time) const {
60 std::string output;
61 diplomat::capi::DiplomatWrite write = diplomat::WriteFromString(output);
62 icu4x::capi::icu4x_TimeFormatter_format_mv1(this->AsFFI(),
63 time.AsFFI(),
64 &write);
65 return output;
66}
67
68inline const icu4x::capi::TimeFormatter* icu4x::TimeFormatter::AsFFI() const {
69 return reinterpret_cast<const icu4x::capi::TimeFormatter*>(this);
70}
71
72inline icu4x::capi::TimeFormatter* icu4x::TimeFormatter::AsFFI() {
73 return reinterpret_cast<icu4x::capi::TimeFormatter*>(this);
74}
75
76inline const icu4x::TimeFormatter* icu4x::TimeFormatter::FromFFI(const icu4x::capi::TimeFormatter* ptr) {
77 return reinterpret_cast<const icu4x::TimeFormatter*>(ptr);
78}
79
80inline icu4x::TimeFormatter* icu4x::TimeFormatter::FromFFI(icu4x::capi::TimeFormatter* ptr) {
81 return reinterpret_cast<icu4x::TimeFormatter*>(ptr);
82}
83
84inline void icu4x::TimeFormatter::operator delete(void* ptr) {
85 icu4x::capi::icu4x_TimeFormatter_destroy_mv1(reinterpret_cast<icu4x::capi::TimeFormatter*>(ptr));
86}
87
88
89#endif // icu4x_TimeFormatter_HPP
Definition diplomat_runtime.hpp:140
Definition DataProvider.d.hpp:40
Definition DateTimeFormatterLoadError.d.hpp:41
Definition Locale.d.hpp:33
Definition TimeFormatter.d.hpp:40
static diplomat::result< std::unique_ptr< icu4x::TimeFormatter >, 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 TimeFormatter.hpp:50
static diplomat::result< std::unique_ptr< icu4x::TimeFormatter >, icu4x::DateTimeFormatterLoadError > create(const icu4x::Locale &locale, std::optional< icu4x::DateTimeLength > length, std::optional< icu4x::TimePrecision > time_precision, std::optional< icu4x::DateTimeAlignment > alignment)
Definition TimeFormatter.hpp:42
std::string format(const icu4x::Time &time) const
Definition TimeFormatter.hpp:59
Definition Time.d.hpp:34
Definition Bidi.d.hpp:14