1#ifndef icu4x_Decimal_HPP
2#define icu4x_Decimal_HPP
27 icu4x::capi::Decimal* icu4x_Decimal_from_int32_mv1(int32_t v);
29 icu4x::capi::Decimal* icu4x_Decimal_from_uint32_mv1(uint32_t v);
31 icu4x::capi::Decimal* icu4x_Decimal_from_int64_mv1(int64_t v);
33 icu4x::capi::Decimal* icu4x_Decimal_from_uint64_mv1(uint64_t v);
35 typedef struct icu4x_Decimal_from_double_with_integer_precision_mv1_result {
union {icu4x::capi::Decimal* ok; };
bool is_ok;} icu4x_Decimal_from_double_with_integer_precision_mv1_result;
36 icu4x_Decimal_from_double_with_integer_precision_mv1_result icu4x_Decimal_from_double_with_integer_precision_mv1(
double f);
38 typedef struct icu4x_Decimal_from_double_with_lower_magnitude_mv1_result {
union {icu4x::capi::Decimal* ok; };
bool is_ok;} icu4x_Decimal_from_double_with_lower_magnitude_mv1_result;
39 icu4x_Decimal_from_double_with_lower_magnitude_mv1_result icu4x_Decimal_from_double_with_lower_magnitude_mv1(
double f, int16_t magnitude);
41 typedef struct icu4x_Decimal_from_double_with_significant_digits_mv1_result {
union {icu4x::capi::Decimal* ok; };
bool is_ok;} icu4x_Decimal_from_double_with_significant_digits_mv1_result;
42 icu4x_Decimal_from_double_with_significant_digits_mv1_result icu4x_Decimal_from_double_with_significant_digits_mv1(
double f, uint8_t digits);
44 typedef struct icu4x_Decimal_from_double_with_round_trip_precision_mv1_result {
union {icu4x::capi::Decimal* ok; };
bool is_ok;} icu4x_Decimal_from_double_with_round_trip_precision_mv1_result;
45 icu4x_Decimal_from_double_with_round_trip_precision_mv1_result icu4x_Decimal_from_double_with_round_trip_precision_mv1(
double f);
47 typedef struct icu4x_Decimal_from_string_mv1_result {
union {icu4x::capi::Decimal* ok; icu4x::capi::DecimalParseError err;};
bool is_ok;} icu4x_Decimal_from_string_mv1_result;
48 icu4x_Decimal_from_string_mv1_result icu4x_Decimal_from_string_mv1(diplomat::capi::DiplomatStringView v);
50 uint8_t icu4x_Decimal_digit_at_mv1(
const icu4x::capi::Decimal* self, int16_t magnitude);
52 int16_t icu4x_Decimal_magnitude_start_mv1(
const icu4x::capi::Decimal* self);
54 int16_t icu4x_Decimal_magnitude_end_mv1(
const icu4x::capi::Decimal* self);
56 int16_t icu4x_Decimal_nonzero_magnitude_start_mv1(
const icu4x::capi::Decimal* self);
58 int16_t icu4x_Decimal_nonzero_magnitude_end_mv1(
const icu4x::capi::Decimal* self);
60 bool icu4x_Decimal_is_zero_mv1(
const icu4x::capi::Decimal* self);
62 void icu4x_Decimal_multiply_pow10_mv1(icu4x::capi::Decimal* self, int16_t power);
64 icu4x::capi::DecimalSign icu4x_Decimal_sign_mv1(
const icu4x::capi::Decimal* self);
66 void icu4x_Decimal_set_sign_mv1(icu4x::capi::Decimal* self, icu4x::capi::DecimalSign sign);
68 void icu4x_Decimal_apply_sign_display_mv1(icu4x::capi::Decimal* self, icu4x::capi::DecimalSignDisplay sign_display);
70 void icu4x_Decimal_trim_start_mv1(icu4x::capi::Decimal* self);
72 void icu4x_Decimal_trim_end_mv1(icu4x::capi::Decimal* self);
74 void icu4x_Decimal_trim_end_if_integer_mv1(icu4x::capi::Decimal* self);
76 void icu4x_Decimal_pad_start_mv1(icu4x::capi::Decimal* self, int16_t position);
78 void icu4x_Decimal_pad_end_mv1(icu4x::capi::Decimal* self, int16_t position);
80 void icu4x_Decimal_set_max_position_mv1(icu4x::capi::Decimal* self, int16_t position);
82 void icu4x_Decimal_round_mv1(icu4x::capi::Decimal* self, int16_t position);
84 void icu4x_Decimal_ceil_mv1(icu4x::capi::Decimal* self, int16_t position);
86 void icu4x_Decimal_expand_mv1(icu4x::capi::Decimal* self, int16_t position);
88 void icu4x_Decimal_floor_mv1(icu4x::capi::Decimal* self, int16_t position);
90 void icu4x_Decimal_trunc_mv1(icu4x::capi::Decimal* self, int16_t position);
92 void icu4x_Decimal_round_with_mode_mv1(icu4x::capi::Decimal* self, int16_t position, icu4x::capi::DecimalSignedRoundingMode mode);
94 void icu4x_Decimal_round_with_mode_and_increment_mv1(icu4x::capi::Decimal* self, int16_t position, icu4x::capi::DecimalSignedRoundingMode mode, icu4x::capi::DecimalRoundingIncrement increment);
96 typedef struct icu4x_Decimal_concatenate_end_mv1_result {
bool is_ok;} icu4x_Decimal_concatenate_end_mv1_result;
97 icu4x_Decimal_concatenate_end_mv1_result icu4x_Decimal_concatenate_end_mv1(icu4x::capi::Decimal* self, icu4x::capi::Decimal* other);
99 void icu4x_Decimal_to_string_mv1(
const icu4x::capi::Decimal* self, diplomat::capi::DiplomatWrite* write);
101 void icu4x_Decimal_destroy_mv1(Decimal* self);
108 auto result = icu4x::capi::icu4x_Decimal_from_int32_mv1(v);
109 return std::unique_ptr<icu4x::Decimal>(icu4x::Decimal::FromFFI(result));
113 auto result = icu4x::capi::icu4x_Decimal_from_uint32_mv1(v);
114 return std::unique_ptr<icu4x::Decimal>(icu4x::Decimal::FromFFI(result));
118 auto result = icu4x::capi::icu4x_Decimal_from_int64_mv1(v);
119 return std::unique_ptr<icu4x::Decimal>(icu4x::Decimal::FromFFI(result));
123 auto result = icu4x::capi::icu4x_Decimal_from_uint64_mv1(v);
124 return std::unique_ptr<icu4x::Decimal>(icu4x::Decimal::FromFFI(result));
128 auto result = icu4x::capi::icu4x_Decimal_from_double_with_integer_precision_mv1(f);
133 auto result = icu4x::capi::icu4x_Decimal_from_double_with_lower_magnitude_mv1(f,
139 auto result = icu4x::capi::icu4x_Decimal_from_double_with_significant_digits_mv1(f,
145 auto result = icu4x::capi::icu4x_Decimal_from_double_with_round_trip_precision_mv1(f);
150 auto result = icu4x::capi::icu4x_Decimal_from_string_mv1({v.data(), v.size()});
155 auto result = icu4x::capi::icu4x_Decimal_digit_at_mv1(this->AsFFI(),
161 auto result = icu4x::capi::icu4x_Decimal_magnitude_start_mv1(this->AsFFI());
166 auto result = icu4x::capi::icu4x_Decimal_magnitude_end_mv1(this->AsFFI());
171 auto result = icu4x::capi::icu4x_Decimal_nonzero_magnitude_start_mv1(this->AsFFI());
176 auto result = icu4x::capi::icu4x_Decimal_nonzero_magnitude_end_mv1(this->AsFFI());
181 auto result = icu4x::capi::icu4x_Decimal_is_zero_mv1(this->AsFFI());
186 icu4x::capi::icu4x_Decimal_multiply_pow10_mv1(this->AsFFI(),
191 auto result = icu4x::capi::icu4x_Decimal_sign_mv1(this->AsFFI());
192 return icu4x::DecimalSign::FromFFI(result);
196 icu4x::capi::icu4x_Decimal_set_sign_mv1(this->AsFFI(),
201 icu4x::capi::icu4x_Decimal_apply_sign_display_mv1(this->AsFFI(),
202 sign_display.AsFFI());
206 icu4x::capi::icu4x_Decimal_trim_start_mv1(this->AsFFI());
210 icu4x::capi::icu4x_Decimal_trim_end_mv1(this->AsFFI());
214 icu4x::capi::icu4x_Decimal_trim_end_if_integer_mv1(this->AsFFI());
218 icu4x::capi::icu4x_Decimal_pad_start_mv1(this->AsFFI(),
223 icu4x::capi::icu4x_Decimal_pad_end_mv1(this->AsFFI(),
228 icu4x::capi::icu4x_Decimal_set_max_position_mv1(this->AsFFI(),
233 icu4x::capi::icu4x_Decimal_round_mv1(this->AsFFI(),
238 icu4x::capi::icu4x_Decimal_ceil_mv1(this->AsFFI(),
243 icu4x::capi::icu4x_Decimal_expand_mv1(this->AsFFI(),
248 icu4x::capi::icu4x_Decimal_floor_mv1(this->AsFFI(),
253 icu4x::capi::icu4x_Decimal_trunc_mv1(this->AsFFI(),
258 icu4x::capi::icu4x_Decimal_round_with_mode_mv1(this->AsFFI(),
264 icu4x::capi::icu4x_Decimal_round_with_mode_and_increment_mv1(this->AsFFI(),
271 auto result = icu4x::capi::icu4x_Decimal_concatenate_end_mv1(this->AsFFI(),
278 diplomat::capi::DiplomatWrite write = diplomat::WriteFromString(output);
279 icu4x::capi::icu4x_Decimal_to_string_mv1(this->AsFFI(),
284inline const icu4x::capi::Decimal* icu4x::Decimal::AsFFI()
const {
285 return reinterpret_cast<const icu4x::capi::Decimal*
>(
this);
288inline icu4x::capi::Decimal* icu4x::Decimal::AsFFI() {
289 return reinterpret_cast<icu4x::capi::Decimal*
>(
this);
292inline const icu4x::Decimal* icu4x::Decimal::FromFFI(
const icu4x::capi::Decimal* ptr) {
293 return reinterpret_cast<const icu4x::Decimal*
>(ptr);
296inline icu4x::Decimal* icu4x::Decimal::FromFFI(icu4x::capi::Decimal* ptr) {
297 return reinterpret_cast<icu4x::Decimal*
>(ptr);
300inline void icu4x::Decimal::operator
delete(
void* ptr) {
301 icu4x::capi::icu4x_Decimal_destroy_mv1(
reinterpret_cast<icu4x::capi::Decimal*
>(ptr));
Definition diplomat_runtime.hpp:140
Definition DecimalParseError.d.hpp:31
Definition DecimalRoundingIncrement.d.hpp:34
Definition DecimalSignDisplay.d.hpp:35
Definition DecimalSign.d.hpp:33
Definition DecimalSignedRoundingMode.d.hpp:39
Definition Decimal.d.hpp:36
void set_sign(icu4x::DecimalSign sign)
Definition Decimal.hpp:195
void multiply_pow10(int16_t power)
Definition Decimal.hpp:185
void apply_sign_display(icu4x::DecimalSignDisplay sign_display)
Definition Decimal.hpp:200
void pad_end(int16_t position)
Definition Decimal.hpp:222
bool is_zero() const
Definition Decimal.hpp:180
static diplomat::result< std::unique_ptr< icu4x::Decimal >, icu4x::DecimalLimitError > from_double_with_round_trip_precision(double f)
Definition Decimal.hpp:144
void round(int16_t position)
Definition Decimal.hpp:232
diplomat::result< std::monostate, std::monostate > concatenate_end(icu4x::Decimal &other)
Definition Decimal.hpp:270
int16_t nonzero_magnitude_start() const
Definition Decimal.hpp:170
int16_t magnitude_end() const
Definition Decimal.hpp:165
void round_with_mode_and_increment(int16_t position, icu4x::DecimalSignedRoundingMode mode, icu4x::DecimalRoundingIncrement increment)
Definition Decimal.hpp:263
void floor(int16_t position)
Definition Decimal.hpp:247
int16_t nonzero_magnitude_end() const
Definition Decimal.hpp:175
void trim_start()
Definition Decimal.hpp:205
void trim_end_if_integer()
Definition Decimal.hpp:213
void set_max_position(int16_t position)
Definition Decimal.hpp:227
icu4x::DecimalSign sign() const
Definition Decimal.hpp:190
void expand(int16_t position)
Definition Decimal.hpp:242
static diplomat::result< std::unique_ptr< icu4x::Decimal >, icu4x::DecimalLimitError > from_double_with_lower_magnitude(double f, int16_t magnitude)
Definition Decimal.hpp:132
static diplomat::result< std::unique_ptr< icu4x::Decimal >, icu4x::DecimalParseError > from_string(std::string_view v)
Definition Decimal.hpp:149
void ceil(int16_t position)
Definition Decimal.hpp:237
std::string to_string() const
Definition Decimal.hpp:276
int16_t magnitude_start() const
Definition Decimal.hpp:160
uint8_t digit_at(int16_t magnitude) const
Definition Decimal.hpp:154
static diplomat::result< std::unique_ptr< icu4x::Decimal >, icu4x::DecimalLimitError > from_double_with_integer_precision(double f)
Definition Decimal.hpp:127
static std::unique_ptr< icu4x::Decimal > from(int32_t v)
Definition Decimal.hpp:107
void trim_end()
Definition Decimal.hpp:209
void trunc(int16_t position)
Definition Decimal.hpp:252
void pad_start(int16_t position)
Definition Decimal.hpp:217
static diplomat::result< std::unique_ptr< icu4x::Decimal >, icu4x::DecimalLimitError > from_double_with_significant_digits(double f, uint8_t digits)
Definition Decimal.hpp:138
void round_with_mode(int16_t position, icu4x::DecimalSignedRoundingMode mode)
Definition Decimal.hpp:257
Definition diplomat_runtime.hpp:125
Definition diplomat_runtime.hpp:111
Definition DecimalLimitError.d.hpp:26