TimeZoneFormatter.hpp (22207B)
1 #ifndef icu4x_TimeZoneFormatter_HPP 2 #define icu4x_TimeZoneFormatter_HPP 3 4 #include "TimeZoneFormatter.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> 14 #include "../diplomat_runtime.hpp" 15 #include "DataProvider.hpp" 16 #include "DateTimeFormatterLoadError.hpp" 17 #include "DateTimeWriteError.hpp" 18 #include "Locale.hpp" 19 #include "TimeZoneInfo.hpp" 20 21 22 namespace icu4x { 23 namespace capi { 24 extern "C" { 25 26 typedef struct icu4x_TimeZoneFormatter_create_specific_long_mv1_result {union {icu4x::capi::TimeZoneFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeZoneFormatter_create_specific_long_mv1_result; 27 icu4x_TimeZoneFormatter_create_specific_long_mv1_result icu4x_TimeZoneFormatter_create_specific_long_mv1(const icu4x::capi::Locale* locale); 28 29 typedef struct icu4x_TimeZoneFormatter_create_specific_long_with_provider_mv1_result {union {icu4x::capi::TimeZoneFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeZoneFormatter_create_specific_long_with_provider_mv1_result; 30 icu4x_TimeZoneFormatter_create_specific_long_with_provider_mv1_result icu4x_TimeZoneFormatter_create_specific_long_with_provider_mv1(const icu4x::capi::DataProvider* provider, const icu4x::capi::Locale* locale); 31 32 typedef struct icu4x_TimeZoneFormatter_create_specific_short_mv1_result {union {icu4x::capi::TimeZoneFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeZoneFormatter_create_specific_short_mv1_result; 33 icu4x_TimeZoneFormatter_create_specific_short_mv1_result icu4x_TimeZoneFormatter_create_specific_short_mv1(const icu4x::capi::Locale* locale); 34 35 typedef struct icu4x_TimeZoneFormatter_create_specific_short_with_provider_mv1_result {union {icu4x::capi::TimeZoneFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeZoneFormatter_create_specific_short_with_provider_mv1_result; 36 icu4x_TimeZoneFormatter_create_specific_short_with_provider_mv1_result icu4x_TimeZoneFormatter_create_specific_short_with_provider_mv1(const icu4x::capi::DataProvider* provider, const icu4x::capi::Locale* locale); 37 38 typedef struct icu4x_TimeZoneFormatter_create_localized_offset_long_mv1_result {union {icu4x::capi::TimeZoneFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeZoneFormatter_create_localized_offset_long_mv1_result; 39 icu4x_TimeZoneFormatter_create_localized_offset_long_mv1_result icu4x_TimeZoneFormatter_create_localized_offset_long_mv1(const icu4x::capi::Locale* locale); 40 41 typedef struct icu4x_TimeZoneFormatter_create_localized_offset_long_with_provider_mv1_result {union {icu4x::capi::TimeZoneFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeZoneFormatter_create_localized_offset_long_with_provider_mv1_result; 42 icu4x_TimeZoneFormatter_create_localized_offset_long_with_provider_mv1_result icu4x_TimeZoneFormatter_create_localized_offset_long_with_provider_mv1(const icu4x::capi::DataProvider* provider, const icu4x::capi::Locale* locale); 43 44 typedef struct icu4x_TimeZoneFormatter_create_localized_offset_short_mv1_result {union {icu4x::capi::TimeZoneFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeZoneFormatter_create_localized_offset_short_mv1_result; 45 icu4x_TimeZoneFormatter_create_localized_offset_short_mv1_result icu4x_TimeZoneFormatter_create_localized_offset_short_mv1(const icu4x::capi::Locale* locale); 46 47 typedef struct icu4x_TimeZoneFormatter_create_localized_offset_short_with_provider_mv1_result {union {icu4x::capi::TimeZoneFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeZoneFormatter_create_localized_offset_short_with_provider_mv1_result; 48 icu4x_TimeZoneFormatter_create_localized_offset_short_with_provider_mv1_result icu4x_TimeZoneFormatter_create_localized_offset_short_with_provider_mv1(const icu4x::capi::DataProvider* provider, const icu4x::capi::Locale* locale); 49 50 typedef struct icu4x_TimeZoneFormatter_create_generic_long_mv1_result {union {icu4x::capi::TimeZoneFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeZoneFormatter_create_generic_long_mv1_result; 51 icu4x_TimeZoneFormatter_create_generic_long_mv1_result icu4x_TimeZoneFormatter_create_generic_long_mv1(const icu4x::capi::Locale* locale); 52 53 typedef struct icu4x_TimeZoneFormatter_create_generic_long_with_provider_mv1_result {union {icu4x::capi::TimeZoneFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeZoneFormatter_create_generic_long_with_provider_mv1_result; 54 icu4x_TimeZoneFormatter_create_generic_long_with_provider_mv1_result icu4x_TimeZoneFormatter_create_generic_long_with_provider_mv1(const icu4x::capi::DataProvider* provider, const icu4x::capi::Locale* locale); 55 56 typedef struct icu4x_TimeZoneFormatter_create_generic_short_mv1_result {union {icu4x::capi::TimeZoneFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeZoneFormatter_create_generic_short_mv1_result; 57 icu4x_TimeZoneFormatter_create_generic_short_mv1_result icu4x_TimeZoneFormatter_create_generic_short_mv1(const icu4x::capi::Locale* locale); 58 59 typedef struct icu4x_TimeZoneFormatter_create_generic_short_with_provider_mv1_result {union {icu4x::capi::TimeZoneFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeZoneFormatter_create_generic_short_with_provider_mv1_result; 60 icu4x_TimeZoneFormatter_create_generic_short_with_provider_mv1_result icu4x_TimeZoneFormatter_create_generic_short_with_provider_mv1(const icu4x::capi::DataProvider* provider, const icu4x::capi::Locale* locale); 61 62 typedef struct icu4x_TimeZoneFormatter_create_location_mv1_result {union {icu4x::capi::TimeZoneFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeZoneFormatter_create_location_mv1_result; 63 icu4x_TimeZoneFormatter_create_location_mv1_result icu4x_TimeZoneFormatter_create_location_mv1(const icu4x::capi::Locale* locale); 64 65 typedef struct icu4x_TimeZoneFormatter_create_location_with_provider_mv1_result {union {icu4x::capi::TimeZoneFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeZoneFormatter_create_location_with_provider_mv1_result; 66 icu4x_TimeZoneFormatter_create_location_with_provider_mv1_result icu4x_TimeZoneFormatter_create_location_with_provider_mv1(const icu4x::capi::DataProvider* provider, const icu4x::capi::Locale* locale); 67 68 typedef struct icu4x_TimeZoneFormatter_create_exemplar_city_mv1_result {union {icu4x::capi::TimeZoneFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeZoneFormatter_create_exemplar_city_mv1_result; 69 icu4x_TimeZoneFormatter_create_exemplar_city_mv1_result icu4x_TimeZoneFormatter_create_exemplar_city_mv1(const icu4x::capi::Locale* locale); 70 71 typedef struct icu4x_TimeZoneFormatter_create_exemplar_city_with_provider_mv1_result {union {icu4x::capi::TimeZoneFormatter* ok; icu4x::capi::DateTimeFormatterLoadError err;}; bool is_ok;} icu4x_TimeZoneFormatter_create_exemplar_city_with_provider_mv1_result; 72 icu4x_TimeZoneFormatter_create_exemplar_city_with_provider_mv1_result icu4x_TimeZoneFormatter_create_exemplar_city_with_provider_mv1(const icu4x::capi::DataProvider* provider, const icu4x::capi::Locale* locale); 73 74 typedef struct icu4x_TimeZoneFormatter_format_mv1_result {union { icu4x::capi::DateTimeWriteError err;}; bool is_ok;} icu4x_TimeZoneFormatter_format_mv1_result; 75 icu4x_TimeZoneFormatter_format_mv1_result icu4x_TimeZoneFormatter_format_mv1(const icu4x::capi::TimeZoneFormatter* self, const icu4x::capi::TimeZoneInfo* zone, diplomat::capi::DiplomatWrite* write); 76 77 void icu4x_TimeZoneFormatter_destroy_mv1(TimeZoneFormatter* self); 78 79 } // extern "C" 80 } // namespace capi 81 } // namespace 82 83 inline diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeZoneFormatter::create_specific_long(const icu4x::Locale& locale) { 84 auto result = icu4x::capi::icu4x_TimeZoneFormatter_create_specific_long_mv1(locale.AsFFI()); 85 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeZoneFormatter>>(std::unique_ptr<icu4x::TimeZoneFormatter>(icu4x::TimeZoneFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err))); 86 } 87 88 inline diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeZoneFormatter::create_specific_long_with_provider(const icu4x::DataProvider& provider, const icu4x::Locale& locale) { 89 auto result = icu4x::capi::icu4x_TimeZoneFormatter_create_specific_long_with_provider_mv1(provider.AsFFI(), 90 locale.AsFFI()); 91 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeZoneFormatter>>(std::unique_ptr<icu4x::TimeZoneFormatter>(icu4x::TimeZoneFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err))); 92 } 93 94 inline diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeZoneFormatter::create_specific_short(const icu4x::Locale& locale) { 95 auto result = icu4x::capi::icu4x_TimeZoneFormatter_create_specific_short_mv1(locale.AsFFI()); 96 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeZoneFormatter>>(std::unique_ptr<icu4x::TimeZoneFormatter>(icu4x::TimeZoneFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err))); 97 } 98 99 inline diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeZoneFormatter::create_specific_short_with_provider(const icu4x::DataProvider& provider, const icu4x::Locale& locale) { 100 auto result = icu4x::capi::icu4x_TimeZoneFormatter_create_specific_short_with_provider_mv1(provider.AsFFI(), 101 locale.AsFFI()); 102 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeZoneFormatter>>(std::unique_ptr<icu4x::TimeZoneFormatter>(icu4x::TimeZoneFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err))); 103 } 104 105 inline diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeZoneFormatter::create_localized_offset_long(const icu4x::Locale& locale) { 106 auto result = icu4x::capi::icu4x_TimeZoneFormatter_create_localized_offset_long_mv1(locale.AsFFI()); 107 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeZoneFormatter>>(std::unique_ptr<icu4x::TimeZoneFormatter>(icu4x::TimeZoneFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err))); 108 } 109 110 inline diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeZoneFormatter::create_localized_offset_long_with_provider(const icu4x::DataProvider& provider, const icu4x::Locale& locale) { 111 auto result = icu4x::capi::icu4x_TimeZoneFormatter_create_localized_offset_long_with_provider_mv1(provider.AsFFI(), 112 locale.AsFFI()); 113 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeZoneFormatter>>(std::unique_ptr<icu4x::TimeZoneFormatter>(icu4x::TimeZoneFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err))); 114 } 115 116 inline diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeZoneFormatter::create_localized_offset_short(const icu4x::Locale& locale) { 117 auto result = icu4x::capi::icu4x_TimeZoneFormatter_create_localized_offset_short_mv1(locale.AsFFI()); 118 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeZoneFormatter>>(std::unique_ptr<icu4x::TimeZoneFormatter>(icu4x::TimeZoneFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err))); 119 } 120 121 inline diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeZoneFormatter::create_localized_offset_short_with_provider(const icu4x::DataProvider& provider, const icu4x::Locale& locale) { 122 auto result = icu4x::capi::icu4x_TimeZoneFormatter_create_localized_offset_short_with_provider_mv1(provider.AsFFI(), 123 locale.AsFFI()); 124 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeZoneFormatter>>(std::unique_ptr<icu4x::TimeZoneFormatter>(icu4x::TimeZoneFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err))); 125 } 126 127 inline diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeZoneFormatter::create_generic_long(const icu4x::Locale& locale) { 128 auto result = icu4x::capi::icu4x_TimeZoneFormatter_create_generic_long_mv1(locale.AsFFI()); 129 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeZoneFormatter>>(std::unique_ptr<icu4x::TimeZoneFormatter>(icu4x::TimeZoneFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err))); 130 } 131 132 inline diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeZoneFormatter::create_generic_long_with_provider(const icu4x::DataProvider& provider, const icu4x::Locale& locale) { 133 auto result = icu4x::capi::icu4x_TimeZoneFormatter_create_generic_long_with_provider_mv1(provider.AsFFI(), 134 locale.AsFFI()); 135 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeZoneFormatter>>(std::unique_ptr<icu4x::TimeZoneFormatter>(icu4x::TimeZoneFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err))); 136 } 137 138 inline diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeZoneFormatter::create_generic_short(const icu4x::Locale& locale) { 139 auto result = icu4x::capi::icu4x_TimeZoneFormatter_create_generic_short_mv1(locale.AsFFI()); 140 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeZoneFormatter>>(std::unique_ptr<icu4x::TimeZoneFormatter>(icu4x::TimeZoneFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err))); 141 } 142 143 inline diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeZoneFormatter::create_generic_short_with_provider(const icu4x::DataProvider& provider, const icu4x::Locale& locale) { 144 auto result = icu4x::capi::icu4x_TimeZoneFormatter_create_generic_short_with_provider_mv1(provider.AsFFI(), 145 locale.AsFFI()); 146 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeZoneFormatter>>(std::unique_ptr<icu4x::TimeZoneFormatter>(icu4x::TimeZoneFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err))); 147 } 148 149 inline diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeZoneFormatter::create_location(const icu4x::Locale& locale) { 150 auto result = icu4x::capi::icu4x_TimeZoneFormatter_create_location_mv1(locale.AsFFI()); 151 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeZoneFormatter>>(std::unique_ptr<icu4x::TimeZoneFormatter>(icu4x::TimeZoneFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err))); 152 } 153 154 inline diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeZoneFormatter::create_location_with_provider(const icu4x::DataProvider& provider, const icu4x::Locale& locale) { 155 auto result = icu4x::capi::icu4x_TimeZoneFormatter_create_location_with_provider_mv1(provider.AsFFI(), 156 locale.AsFFI()); 157 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeZoneFormatter>>(std::unique_ptr<icu4x::TimeZoneFormatter>(icu4x::TimeZoneFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err))); 158 } 159 160 inline diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeZoneFormatter::create_exemplar_city(const icu4x::Locale& locale) { 161 auto result = icu4x::capi::icu4x_TimeZoneFormatter_create_exemplar_city_mv1(locale.AsFFI()); 162 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeZoneFormatter>>(std::unique_ptr<icu4x::TimeZoneFormatter>(icu4x::TimeZoneFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err))); 163 } 164 165 inline diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError> icu4x::TimeZoneFormatter::create_exemplar_city_with_provider(const icu4x::DataProvider& provider, const icu4x::Locale& locale) { 166 auto result = icu4x::capi::icu4x_TimeZoneFormatter_create_exemplar_city_with_provider_mv1(provider.AsFFI(), 167 locale.AsFFI()); 168 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Ok<std::unique_ptr<icu4x::TimeZoneFormatter>>(std::unique_ptr<icu4x::TimeZoneFormatter>(icu4x::TimeZoneFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::TimeZoneFormatter>, icu4x::DateTimeFormatterLoadError>(diplomat::Err<icu4x::DateTimeFormatterLoadError>(icu4x::DateTimeFormatterLoadError::FromFFI(result.err))); 169 } 170 171 inline diplomat::result<std::string, icu4x::DateTimeWriteError> icu4x::TimeZoneFormatter::format(const icu4x::TimeZoneInfo& zone) const { 172 std::string output; 173 diplomat::capi::DiplomatWrite write = diplomat::WriteFromString(output); 174 auto result = icu4x::capi::icu4x_TimeZoneFormatter_format_mv1(this->AsFFI(), 175 zone.AsFFI(), 176 &write); 177 return result.is_ok ? diplomat::result<std::string, icu4x::DateTimeWriteError>(diplomat::Ok<std::string>(std::move(output))) : diplomat::result<std::string, icu4x::DateTimeWriteError>(diplomat::Err<icu4x::DateTimeWriteError>(icu4x::DateTimeWriteError::FromFFI(result.err))); 178 } 179 180 inline const icu4x::capi::TimeZoneFormatter* icu4x::TimeZoneFormatter::AsFFI() const { 181 return reinterpret_cast<const icu4x::capi::TimeZoneFormatter*>(this); 182 } 183 184 inline icu4x::capi::TimeZoneFormatter* icu4x::TimeZoneFormatter::AsFFI() { 185 return reinterpret_cast<icu4x::capi::TimeZoneFormatter*>(this); 186 } 187 188 inline const icu4x::TimeZoneFormatter* icu4x::TimeZoneFormatter::FromFFI(const icu4x::capi::TimeZoneFormatter* ptr) { 189 return reinterpret_cast<const icu4x::TimeZoneFormatter*>(ptr); 190 } 191 192 inline icu4x::TimeZoneFormatter* icu4x::TimeZoneFormatter::FromFFI(icu4x::capi::TimeZoneFormatter* ptr) { 193 return reinterpret_cast<icu4x::TimeZoneFormatter*>(ptr); 194 } 195 196 inline void icu4x::TimeZoneFormatter::operator delete(void* ptr) { 197 icu4x::capi::icu4x_TimeZoneFormatter_destroy_mv1(reinterpret_cast<icu4x::capi::TimeZoneFormatter*>(ptr)); 198 } 199 200 201 #endif // icu4x_TimeZoneFormatter_HPP