tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Decimal.hpp (13746B)


      1 #ifndef icu4x_Decimal_HPP
      2 #define icu4x_Decimal_HPP
      3 
      4 #include "Decimal.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 "DecimalLimitError.hpp"
     16 #include "DecimalParseError.hpp"
     17 #include "DecimalRoundingIncrement.hpp"
     18 #include "DecimalSign.hpp"
     19 #include "DecimalSignDisplay.hpp"
     20 #include "DecimalSignedRoundingMode.hpp"
     21 
     22 
     23 namespace icu4x {
     24 namespace capi {
     25    extern "C" {
     26 
     27    icu4x::capi::Decimal* icu4x_Decimal_from_int32_mv1(int32_t v);
     28 
     29    icu4x::capi::Decimal* icu4x_Decimal_from_uint32_mv1(uint32_t v);
     30 
     31    icu4x::capi::Decimal* icu4x_Decimal_from_int64_mv1(int64_t v);
     32 
     33    icu4x::capi::Decimal* icu4x_Decimal_from_uint64_mv1(uint64_t v);
     34 
     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);
     37 
     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);
     40 
     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);
     43 
     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);
     46 
     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);
     49 
     50    uint8_t icu4x_Decimal_digit_at_mv1(const icu4x::capi::Decimal* self, int16_t magnitude);
     51 
     52    int16_t icu4x_Decimal_magnitude_start_mv1(const icu4x::capi::Decimal* self);
     53 
     54    int16_t icu4x_Decimal_magnitude_end_mv1(const icu4x::capi::Decimal* self);
     55 
     56    int16_t icu4x_Decimal_nonzero_magnitude_start_mv1(const icu4x::capi::Decimal* self);
     57 
     58    int16_t icu4x_Decimal_nonzero_magnitude_end_mv1(const icu4x::capi::Decimal* self);
     59 
     60    bool icu4x_Decimal_is_zero_mv1(const icu4x::capi::Decimal* self);
     61 
     62    void icu4x_Decimal_multiply_pow10_mv1(icu4x::capi::Decimal* self, int16_t power);
     63 
     64    icu4x::capi::DecimalSign icu4x_Decimal_sign_mv1(const icu4x::capi::Decimal* self);
     65 
     66    void icu4x_Decimal_set_sign_mv1(icu4x::capi::Decimal* self, icu4x::capi::DecimalSign sign);
     67 
     68    void icu4x_Decimal_apply_sign_display_mv1(icu4x::capi::Decimal* self, icu4x::capi::DecimalSignDisplay sign_display);
     69 
     70    void icu4x_Decimal_trim_start_mv1(icu4x::capi::Decimal* self);
     71 
     72    void icu4x_Decimal_trim_end_mv1(icu4x::capi::Decimal* self);
     73 
     74    void icu4x_Decimal_trim_end_if_integer_mv1(icu4x::capi::Decimal* self);
     75 
     76    void icu4x_Decimal_pad_start_mv1(icu4x::capi::Decimal* self, int16_t position);
     77 
     78    void icu4x_Decimal_pad_end_mv1(icu4x::capi::Decimal* self, int16_t position);
     79 
     80    void icu4x_Decimal_set_max_position_mv1(icu4x::capi::Decimal* self, int16_t position);
     81 
     82    void icu4x_Decimal_round_mv1(icu4x::capi::Decimal* self, int16_t position);
     83 
     84    void icu4x_Decimal_ceil_mv1(icu4x::capi::Decimal* self, int16_t position);
     85 
     86    void icu4x_Decimal_expand_mv1(icu4x::capi::Decimal* self, int16_t position);
     87 
     88    void icu4x_Decimal_floor_mv1(icu4x::capi::Decimal* self, int16_t position);
     89 
     90    void icu4x_Decimal_trunc_mv1(icu4x::capi::Decimal* self, int16_t position);
     91 
     92    void icu4x_Decimal_round_with_mode_mv1(icu4x::capi::Decimal* self, int16_t position, icu4x::capi::DecimalSignedRoundingMode mode);
     93 
     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);
     95 
     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);
     98 
     99    void icu4x_Decimal_to_string_mv1(const icu4x::capi::Decimal* self, diplomat::capi::DiplomatWrite* write);
    100 
    101    void icu4x_Decimal_destroy_mv1(Decimal* self);
    102 
    103    } // extern "C"
    104 } // namespace capi
    105 } // namespace
    106 
    107 inline std::unique_ptr<icu4x::Decimal> icu4x::Decimal::from(int32_t v) {
    108  auto result = icu4x::capi::icu4x_Decimal_from_int32_mv1(v);
    109  return std::unique_ptr<icu4x::Decimal>(icu4x::Decimal::FromFFI(result));
    110 }
    111 
    112 inline std::unique_ptr<icu4x::Decimal> icu4x::Decimal::from(uint32_t v) {
    113  auto result = icu4x::capi::icu4x_Decimal_from_uint32_mv1(v);
    114  return std::unique_ptr<icu4x::Decimal>(icu4x::Decimal::FromFFI(result));
    115 }
    116 
    117 inline std::unique_ptr<icu4x::Decimal> icu4x::Decimal::from(int64_t v) {
    118  auto result = icu4x::capi::icu4x_Decimal_from_int64_mv1(v);
    119  return std::unique_ptr<icu4x::Decimal>(icu4x::Decimal::FromFFI(result));
    120 }
    121 
    122 inline std::unique_ptr<icu4x::Decimal> icu4x::Decimal::from(uint64_t v) {
    123  auto result = icu4x::capi::icu4x_Decimal_from_uint64_mv1(v);
    124  return std::unique_ptr<icu4x::Decimal>(icu4x::Decimal::FromFFI(result));
    125 }
    126 
    127 inline diplomat::result<std::unique_ptr<icu4x::Decimal>, icu4x::DecimalLimitError> icu4x::Decimal::from_double_with_integer_precision(double f) {
    128  auto result = icu4x::capi::icu4x_Decimal_from_double_with_integer_precision_mv1(f);
    129  return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::Decimal>, icu4x::DecimalLimitError>(diplomat::Ok<std::unique_ptr<icu4x::Decimal>>(std::unique_ptr<icu4x::Decimal>(icu4x::Decimal::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::Decimal>, icu4x::DecimalLimitError>(diplomat::Err<icu4x::DecimalLimitError>(icu4x::DecimalLimitError {}));
    130 }
    131 
    132 inline diplomat::result<std::unique_ptr<icu4x::Decimal>, icu4x::DecimalLimitError> icu4x::Decimal::from_double_with_lower_magnitude(double f, int16_t magnitude) {
    133  auto result = icu4x::capi::icu4x_Decimal_from_double_with_lower_magnitude_mv1(f,
    134    magnitude);
    135  return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::Decimal>, icu4x::DecimalLimitError>(diplomat::Ok<std::unique_ptr<icu4x::Decimal>>(std::unique_ptr<icu4x::Decimal>(icu4x::Decimal::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::Decimal>, icu4x::DecimalLimitError>(diplomat::Err<icu4x::DecimalLimitError>(icu4x::DecimalLimitError {}));
    136 }
    137 
    138 inline diplomat::result<std::unique_ptr<icu4x::Decimal>, icu4x::DecimalLimitError> icu4x::Decimal::from_double_with_significant_digits(double f, uint8_t digits) {
    139  auto result = icu4x::capi::icu4x_Decimal_from_double_with_significant_digits_mv1(f,
    140    digits);
    141  return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::Decimal>, icu4x::DecimalLimitError>(diplomat::Ok<std::unique_ptr<icu4x::Decimal>>(std::unique_ptr<icu4x::Decimal>(icu4x::Decimal::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::Decimal>, icu4x::DecimalLimitError>(diplomat::Err<icu4x::DecimalLimitError>(icu4x::DecimalLimitError {}));
    142 }
    143 
    144 inline diplomat::result<std::unique_ptr<icu4x::Decimal>, icu4x::DecimalLimitError> icu4x::Decimal::from_double_with_round_trip_precision(double f) {
    145  auto result = icu4x::capi::icu4x_Decimal_from_double_with_round_trip_precision_mv1(f);
    146  return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::Decimal>, icu4x::DecimalLimitError>(diplomat::Ok<std::unique_ptr<icu4x::Decimal>>(std::unique_ptr<icu4x::Decimal>(icu4x::Decimal::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::Decimal>, icu4x::DecimalLimitError>(diplomat::Err<icu4x::DecimalLimitError>(icu4x::DecimalLimitError {}));
    147 }
    148 
    149 inline diplomat::result<std::unique_ptr<icu4x::Decimal>, icu4x::DecimalParseError> icu4x::Decimal::from_string(std::string_view v) {
    150  auto result = icu4x::capi::icu4x_Decimal_from_string_mv1({v.data(), v.size()});
    151  return result.is_ok ? diplomat::result<std::unique_ptr<icu4x::Decimal>, icu4x::DecimalParseError>(diplomat::Ok<std::unique_ptr<icu4x::Decimal>>(std::unique_ptr<icu4x::Decimal>(icu4x::Decimal::FromFFI(result.ok)))) : diplomat::result<std::unique_ptr<icu4x::Decimal>, icu4x::DecimalParseError>(diplomat::Err<icu4x::DecimalParseError>(icu4x::DecimalParseError::FromFFI(result.err)));
    152 }
    153 
    154 inline uint8_t icu4x::Decimal::digit_at(int16_t magnitude) const {
    155  auto result = icu4x::capi::icu4x_Decimal_digit_at_mv1(this->AsFFI(),
    156    magnitude);
    157  return result;
    158 }
    159 
    160 inline int16_t icu4x::Decimal::magnitude_start() const {
    161  auto result = icu4x::capi::icu4x_Decimal_magnitude_start_mv1(this->AsFFI());
    162  return result;
    163 }
    164 
    165 inline int16_t icu4x::Decimal::magnitude_end() const {
    166  auto result = icu4x::capi::icu4x_Decimal_magnitude_end_mv1(this->AsFFI());
    167  return result;
    168 }
    169 
    170 inline int16_t icu4x::Decimal::nonzero_magnitude_start() const {
    171  auto result = icu4x::capi::icu4x_Decimal_nonzero_magnitude_start_mv1(this->AsFFI());
    172  return result;
    173 }
    174 
    175 inline int16_t icu4x::Decimal::nonzero_magnitude_end() const {
    176  auto result = icu4x::capi::icu4x_Decimal_nonzero_magnitude_end_mv1(this->AsFFI());
    177  return result;
    178 }
    179 
    180 inline bool icu4x::Decimal::is_zero() const {
    181  auto result = icu4x::capi::icu4x_Decimal_is_zero_mv1(this->AsFFI());
    182  return result;
    183 }
    184 
    185 inline void icu4x::Decimal::multiply_pow10(int16_t power) {
    186  icu4x::capi::icu4x_Decimal_multiply_pow10_mv1(this->AsFFI(),
    187    power);
    188 }
    189 
    190 inline icu4x::DecimalSign icu4x::Decimal::sign() const {
    191  auto result = icu4x::capi::icu4x_Decimal_sign_mv1(this->AsFFI());
    192  return icu4x::DecimalSign::FromFFI(result);
    193 }
    194 
    195 inline void icu4x::Decimal::set_sign(icu4x::DecimalSign sign) {
    196  icu4x::capi::icu4x_Decimal_set_sign_mv1(this->AsFFI(),
    197    sign.AsFFI());
    198 }
    199 
    200 inline void icu4x::Decimal::apply_sign_display(icu4x::DecimalSignDisplay sign_display) {
    201  icu4x::capi::icu4x_Decimal_apply_sign_display_mv1(this->AsFFI(),
    202    sign_display.AsFFI());
    203 }
    204 
    205 inline void icu4x::Decimal::trim_start() {
    206  icu4x::capi::icu4x_Decimal_trim_start_mv1(this->AsFFI());
    207 }
    208 
    209 inline void icu4x::Decimal::trim_end() {
    210  icu4x::capi::icu4x_Decimal_trim_end_mv1(this->AsFFI());
    211 }
    212 
    213 inline void icu4x::Decimal::trim_end_if_integer() {
    214  icu4x::capi::icu4x_Decimal_trim_end_if_integer_mv1(this->AsFFI());
    215 }
    216 
    217 inline void icu4x::Decimal::pad_start(int16_t position) {
    218  icu4x::capi::icu4x_Decimal_pad_start_mv1(this->AsFFI(),
    219    position);
    220 }
    221 
    222 inline void icu4x::Decimal::pad_end(int16_t position) {
    223  icu4x::capi::icu4x_Decimal_pad_end_mv1(this->AsFFI(),
    224    position);
    225 }
    226 
    227 inline void icu4x::Decimal::set_max_position(int16_t position) {
    228  icu4x::capi::icu4x_Decimal_set_max_position_mv1(this->AsFFI(),
    229    position);
    230 }
    231 
    232 inline void icu4x::Decimal::round(int16_t position) {
    233  icu4x::capi::icu4x_Decimal_round_mv1(this->AsFFI(),
    234    position);
    235 }
    236 
    237 inline void icu4x::Decimal::ceil(int16_t position) {
    238  icu4x::capi::icu4x_Decimal_ceil_mv1(this->AsFFI(),
    239    position);
    240 }
    241 
    242 inline void icu4x::Decimal::expand(int16_t position) {
    243  icu4x::capi::icu4x_Decimal_expand_mv1(this->AsFFI(),
    244    position);
    245 }
    246 
    247 inline void icu4x::Decimal::floor(int16_t position) {
    248  icu4x::capi::icu4x_Decimal_floor_mv1(this->AsFFI(),
    249    position);
    250 }
    251 
    252 inline void icu4x::Decimal::trunc(int16_t position) {
    253  icu4x::capi::icu4x_Decimal_trunc_mv1(this->AsFFI(),
    254    position);
    255 }
    256 
    257 inline void icu4x::Decimal::round_with_mode(int16_t position, icu4x::DecimalSignedRoundingMode mode) {
    258  icu4x::capi::icu4x_Decimal_round_with_mode_mv1(this->AsFFI(),
    259    position,
    260    mode.AsFFI());
    261 }
    262 
    263 inline void icu4x::Decimal::round_with_mode_and_increment(int16_t position, icu4x::DecimalSignedRoundingMode mode, icu4x::DecimalRoundingIncrement increment) {
    264  icu4x::capi::icu4x_Decimal_round_with_mode_and_increment_mv1(this->AsFFI(),
    265    position,
    266    mode.AsFFI(),
    267    increment.AsFFI());
    268 }
    269 
    270 inline diplomat::result<std::monostate, std::monostate> icu4x::Decimal::concatenate_end(icu4x::Decimal& other) {
    271  auto result = icu4x::capi::icu4x_Decimal_concatenate_end_mv1(this->AsFFI(),
    272    other.AsFFI());
    273  return result.is_ok ? diplomat::result<std::monostate, std::monostate>(diplomat::Ok<std::monostate>()) : diplomat::result<std::monostate, std::monostate>(diplomat::Err<std::monostate>());
    274 }
    275 
    276 inline std::string icu4x::Decimal::to_string() const {
    277  std::string output;
    278  diplomat::capi::DiplomatWrite write = diplomat::WriteFromString(output);
    279  icu4x::capi::icu4x_Decimal_to_string_mv1(this->AsFFI(),
    280    &write);
    281  return output;
    282 }
    283 
    284 inline const icu4x::capi::Decimal* icu4x::Decimal::AsFFI() const {
    285  return reinterpret_cast<const icu4x::capi::Decimal*>(this);
    286 }
    287 
    288 inline icu4x::capi::Decimal* icu4x::Decimal::AsFFI() {
    289  return reinterpret_cast<icu4x::capi::Decimal*>(this);
    290 }
    291 
    292 inline const icu4x::Decimal* icu4x::Decimal::FromFFI(const icu4x::capi::Decimal* ptr) {
    293  return reinterpret_cast<const icu4x::Decimal*>(ptr);
    294 }
    295 
    296 inline icu4x::Decimal* icu4x::Decimal::FromFFI(icu4x::capi::Decimal* ptr) {
    297  return reinterpret_cast<icu4x::Decimal*>(ptr);
    298 }
    299 
    300 inline void icu4x::Decimal::operator delete(void* ptr) {
    301  icu4x::capi::icu4x_Decimal_destroy_mv1(reinterpret_cast<icu4x::capi::Decimal*>(ptr));
    302 }
    303 
    304 
    305 #endif // icu4x_Decimal_HPP