1#ifndef icu4x_DecimalFormatter_HPP
2#define icu4x_DecimalFormatter_HPP
26 typedef struct icu4x_DecimalFormatter_create_with_grouping_strategy_mv1_result {
union {icu4x::capi::DecimalFormatter* ok; icu4x::capi::DataError err;};
bool is_ok;} icu4x_DecimalFormatter_create_with_grouping_strategy_mv1_result;
27 icu4x_DecimalFormatter_create_with_grouping_strategy_mv1_result icu4x_DecimalFormatter_create_with_grouping_strategy_mv1(
const icu4x::capi::Locale* locale, icu4x::capi::DecimalGroupingStrategy_option grouping_strategy);
29 typedef struct icu4x_DecimalFormatter_create_with_grouping_strategy_and_provider_mv1_result {
union {icu4x::capi::DecimalFormatter* ok; icu4x::capi::DataError err;};
bool is_ok;} icu4x_DecimalFormatter_create_with_grouping_strategy_and_provider_mv1_result;
30 icu4x_DecimalFormatter_create_with_grouping_strategy_and_provider_mv1_result icu4x_DecimalFormatter_create_with_grouping_strategy_and_provider_mv1(
const icu4x::capi::DataProvider* provider,
const icu4x::capi::Locale* locale, icu4x::capi::DecimalGroupingStrategy_option grouping_strategy);
32 typedef struct icu4x_DecimalFormatter_create_with_manual_data_mv1_result {
union {icu4x::capi::DecimalFormatter* ok; icu4x::capi::DataError err;};
bool is_ok;} icu4x_DecimalFormatter_create_with_manual_data_mv1_result;
33 icu4x_DecimalFormatter_create_with_manual_data_mv1_result icu4x_DecimalFormatter_create_with_manual_data_mv1(diplomat::capi::DiplomatStringView plus_sign_prefix, diplomat::capi::DiplomatStringView plus_sign_suffix, diplomat::capi::DiplomatStringView minus_sign_prefix, diplomat::capi::DiplomatStringView minus_sign_suffix, diplomat::capi::DiplomatStringView decimal_separator, diplomat::capi::DiplomatStringView grouping_separator, uint8_t primary_group_size, uint8_t secondary_group_size, uint8_t min_group_size, diplomat::capi::DiplomatCharView digits, icu4x::capi::DecimalGroupingStrategy_option grouping_strategy);
35 void icu4x_DecimalFormatter_format_mv1(
const icu4x::capi::DecimalFormatter* self,
const icu4x::capi::Decimal* value, diplomat::capi::DiplomatWrite* write);
37 void icu4x_DecimalFormatter_destroy_mv1(DecimalFormatter* self);
44 auto result = icu4x::capi::icu4x_DecimalFormatter_create_with_grouping_strategy_mv1(locale.AsFFI(),
45 grouping_strategy.has_value() ? (icu4x::capi::DecimalGroupingStrategy_option{ { grouping_strategy.value().AsFFI() },
true }) : (
icu4x::capi::DecimalGroupingStrategy_option{ {},
false }));
46 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::DecimalFormatter>, icu4x::DataError>(diplomat::Ok<std::unique_ptr<icu4x::DecimalFormatter>>(std::unique_ptr<icu4x::DecimalFormatter>(icu4x::DecimalFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::
DecimalFormatter>, icu4x::
DataError>(diplomat::Err<icu4x::
DataError>(icu4x::
DataError::FromFFI(result.err)));
50 auto result = icu4x::capi::icu4x_DecimalFormatter_create_with_grouping_strategy_and_provider_mv1(provider.AsFFI(),
52 grouping_strategy.has_value() ? (icu4x::capi::DecimalGroupingStrategy_option{ { grouping_strategy.value().AsFFI() },
true }) : (
icu4x::capi::DecimalGroupingStrategy_option{ {},
false }));
53 return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::DecimalFormatter>, icu4x::DataError>(diplomat::Ok<std::unique_ptr<icu4x::DecimalFormatter>>(std::unique_ptr<icu4x::DecimalFormatter>(icu4x::DecimalFormatter::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::
DecimalFormatter>, icu4x::
DataError>(diplomat::Err<icu4x::
DataError>(icu4x::
DataError::FromFFI(result.err)));
56inline diplomat::result<std::unique_ptr<icu4x::DecimalFormatter>,
icu4x::DataError>
icu4x::DecimalFormatter::create_with_manual_data(std::string_view plus_sign_prefix, std::string_view plus_sign_suffix, std::string_view minus_sign_prefix, std::string_view minus_sign_suffix, std::string_view decimal_separator, std::string_view grouping_separator, uint8_t primary_group_size, uint8_t secondary_group_size, uint8_t min_group_size,
diplomat::span<const char32_t> digits, std::optional<icu4x::DecimalGroupingStrategy> grouping_strategy) {
57 auto result = icu4x::capi::icu4x_DecimalFormatter_create_with_manual_data_mv1({plus_sign_prefix.data(), plus_sign_prefix.size()},
58 {plus_sign_suffix.data(), plus_sign_suffix.size()},
59 {minus_sign_prefix.data(), minus_sign_prefix.size()},
60 {minus_sign_suffix.data(), minus_sign_suffix.size()},
61 {decimal_separator.data(), decimal_separator.size()},
62 {grouping_separator.data(), grouping_separator.size()},
67 grouping_strategy.has_value() ? (icu4x::capi::DecimalGroupingStrategy_option{ { grouping_strategy.value().AsFFI() },
true }) : (icu4x::capi::DecimalGroupingStrategy_option{ {},
false }));
73 diplomat::capi::DiplomatWrite write = diplomat::WriteFromString(output);
74 icu4x::capi::icu4x_DecimalFormatter_format_mv1(this->AsFFI(),
80inline const icu4x::capi::DecimalFormatter* icu4x::DecimalFormatter::AsFFI()
const {
81 return reinterpret_cast<const icu4x::capi::DecimalFormatter*
>(
this);
84inline icu4x::capi::DecimalFormatter* icu4x::DecimalFormatter::AsFFI() {
85 return reinterpret_cast<icu4x::capi::DecimalFormatter*
>(
this);
88inline const icu4x::DecimalFormatter* icu4x::DecimalFormatter::FromFFI(
const icu4x::capi::DecimalFormatter* ptr) {
89 return reinterpret_cast<const icu4x::DecimalFormatter*
>(ptr);
92inline icu4x::DecimalFormatter* icu4x::DecimalFormatter::FromFFI(icu4x::capi::DecimalFormatter* ptr) {
93 return reinterpret_cast<icu4x::DecimalFormatter*
>(ptr);
96inline void icu4x::DecimalFormatter::operator
delete(
void* ptr) {
97 icu4x::capi::icu4x_DecimalFormatter_destroy_mv1(
reinterpret_cast<icu4x::capi::DecimalFormatter*
>(ptr));
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
Definition Decimal.d.hpp:36
Definition Locale.d.hpp:33
Definition diplomat_runtime.hpp:125
Definition diplomat_runtime.hpp:111