1 #ifndef Decimal_H 2 #define Decimal_H 3 4 #include <stdio.h> 5 #include <stdint.h> 6 #include <stddef.h> 7 #include <stdbool.h> 8 #include "diplomat_runtime.h" 9 10 #include "FixedDecimalParseError.d.h" 11 #include "FixedDecimalRoundingIncrement.d.h" 12 #include "FixedDecimalSign.d.h" 13 #include "FixedDecimalSignDisplay.d.h" 14 #include "FixedDecimalSignedRoundingMode.d.h" 15 16 #include "Decimal.d.h" 17 18 19 20 21 22 23 Decimal* icu4x_Decimal_from_int32_mv1(int32_t v); 24 25 Decimal* icu4x_Decimal_from_uint32_mv1(uint32_t v); 26 27 Decimal* icu4x_Decimal_from_int64_mv1(int64_t v); 28 29 Decimal* icu4x_Decimal_from_uint64_mv1(uint64_t v); 30 31 typedef struct icu4x_Decimal_from_double_with_integer_precision_mv1_result {union {Decimal* ok; }; bool is_ok;} icu4x_Decimal_from_double_with_integer_precision_mv1_result; 32 icu4x_Decimal_from_double_with_integer_precision_mv1_result icu4x_Decimal_from_double_with_integer_precision_mv1(double f); 33 34 typedef struct icu4x_Decimal_from_double_with_lower_magnitude_mv1_result {union {Decimal* ok; }; bool is_ok;} icu4x_Decimal_from_double_with_lower_magnitude_mv1_result; 35 icu4x_Decimal_from_double_with_lower_magnitude_mv1_result icu4x_Decimal_from_double_with_lower_magnitude_mv1(double f, int16_t magnitude); 36 37 typedef struct icu4x_Decimal_from_double_with_significant_digits_mv1_result {union {Decimal* ok; }; bool is_ok;} icu4x_Decimal_from_double_with_significant_digits_mv1_result; 38 icu4x_Decimal_from_double_with_significant_digits_mv1_result icu4x_Decimal_from_double_with_significant_digits_mv1(double f, uint8_t digits); 39 40 typedef struct icu4x_Decimal_from_double_with_round_trip_precision_mv1_result {union {Decimal* ok; }; bool is_ok;} icu4x_Decimal_from_double_with_round_trip_precision_mv1_result; 41 icu4x_Decimal_from_double_with_round_trip_precision_mv1_result icu4x_Decimal_from_double_with_round_trip_precision_mv1(double f); 42 43 typedef struct icu4x_Decimal_from_string_mv1_result {union {Decimal* ok; FixedDecimalParseError err;}; bool is_ok;} icu4x_Decimal_from_string_mv1_result; 44 icu4x_Decimal_from_string_mv1_result icu4x_Decimal_from_string_mv1(DiplomatStringView v); 45 46 uint8_t icu4x_Decimal_digit_at_mv1(const Decimal* self, int16_t magnitude); 47 48 int16_t icu4x_Decimal_magnitude_start_mv1(const Decimal* self); 49 50 int16_t icu4x_Decimal_magnitude_end_mv1(const Decimal* self); 51 52 int16_t icu4x_Decimal_nonzero_magnitude_start_mv1(const Decimal* self); 53 54 int16_t icu4x_Decimal_nonzero_magnitude_end_mv1(const Decimal* self); 55 56 bool icu4x_Decimal_is_zero_mv1(const Decimal* self); 57 58 void icu4x_Decimal_multiply_pow10_mv1(Decimal* self, int16_t power); 59 60 FixedDecimalSign icu4x_Decimal_sign_mv1(const Decimal* self); 61 62 void icu4x_Decimal_set_sign_mv1(Decimal* self, FixedDecimalSign sign); 63 64 void icu4x_Decimal_apply_sign_display_mv1(Decimal* self, FixedDecimalSignDisplay sign_display); 65 66 void icu4x_Decimal_trim_start_mv1(Decimal* self); 67 68 void icu4x_Decimal_trim_end_mv1(Decimal* self); 69 70 void icu4x_Decimal_trim_end_if_integer_mv1(Decimal* self); 71 72 void icu4x_Decimal_pad_start_mv1(Decimal* self, int16_t position); 73 74 void icu4x_Decimal_pad_end_mv1(Decimal* self, int16_t position); 75 76 void icu4x_Decimal_set_max_position_mv1(Decimal* self, int16_t position); 77 78 void icu4x_Decimal_round_mv1(Decimal* self, int16_t position); 79 80 void icu4x_Decimal_ceil_mv1(Decimal* self, int16_t position); 81 82 void icu4x_Decimal_expand_mv1(Decimal* self, int16_t position); 83 84 void icu4x_Decimal_floor_mv1(Decimal* self, int16_t position); 85 86 void icu4x_Decimal_trunc_mv1(Decimal* self, int16_t position); 87 88 void icu4x_Decimal_round_with_mode_mv1(Decimal* self, int16_t position, FixedDecimalSignedRoundingMode mode); 89 90 void icu4x_Decimal_round_with_mode_and_increment_mv1(Decimal* self, int16_t position, FixedDecimalSignedRoundingMode mode, FixedDecimalRoundingIncrement increment); 91 92 typedef struct icu4x_Decimal_concatenate_end_mv1_result { bool is_ok;} icu4x_Decimal_concatenate_end_mv1_result; 93 icu4x_Decimal_concatenate_end_mv1_result icu4x_Decimal_concatenate_end_mv1(Decimal* self, Decimal* other); 94 95 void icu4x_Decimal_to_string_mv1(const Decimal* self, DiplomatWrite* write); 96 97 98 void icu4x_Decimal_destroy_mv1(Decimal* self); 99 100 101 102 103 104 #endif // Decimal_H 105