DecimalSignedRoundingMode.d.hpp (1963B)
1 #ifndef icu4x_DecimalSignedRoundingMode_D_HPP 2 #define icu4x_DecimalSignedRoundingMode_D_HPP 3 4 #include <stdio.h> 5 #include <stdint.h> 6 #include <stddef.h> 7 #include <stdbool.h> 8 #include <memory> 9 #include <functional> 10 #include <optional> 11 #include <cstdlib> 12 #include "../diplomat_runtime.hpp" 13 14 15 namespace icu4x { 16 namespace capi { 17 enum DecimalSignedRoundingMode { 18 DecimalSignedRoundingMode_Expand = 0, 19 DecimalSignedRoundingMode_Trunc = 1, 20 DecimalSignedRoundingMode_HalfExpand = 2, 21 DecimalSignedRoundingMode_HalfTrunc = 3, 22 DecimalSignedRoundingMode_HalfEven = 4, 23 DecimalSignedRoundingMode_Ceil = 5, 24 DecimalSignedRoundingMode_Floor = 6, 25 DecimalSignedRoundingMode_HalfCeil = 7, 26 DecimalSignedRoundingMode_HalfFloor = 8, 27 }; 28 29 typedef struct DecimalSignedRoundingMode_option {union { DecimalSignedRoundingMode ok; }; bool is_ok; } DecimalSignedRoundingMode_option; 30 } // namespace capi 31 } // namespace 32 33 namespace icu4x { 34 /** 35 * Mode used in a rounding operation for signed numbers. 36 * 37 * See the [Rust documentation for `SignedRoundingMode`](https://docs.rs/fixed_decimal/latest/fixed_decimal/enum.SignedRoundingMode.html) for more information. 38 */ 39 class DecimalSignedRoundingMode { 40 public: 41 enum Value { 42 Expand = 0, 43 Trunc = 1, 44 HalfExpand = 2, 45 HalfTrunc = 3, 46 HalfEven = 4, 47 Ceil = 5, 48 Floor = 6, 49 HalfCeil = 7, 50 HalfFloor = 8, 51 }; 52 53 DecimalSignedRoundingMode() = default; 54 // Implicit conversions between enum and ::Value 55 constexpr DecimalSignedRoundingMode(Value v) : value(v) {} 56 constexpr operator Value() const { return value; } 57 // Prevent usage as boolean value 58 explicit operator bool() const = delete; 59 60 inline icu4x::capi::DecimalSignedRoundingMode AsFFI() const; 61 inline static icu4x::DecimalSignedRoundingMode FromFFI(icu4x::capi::DecimalSignedRoundingMode c_enum); 62 private: 63 Value value; 64 }; 65 66 } // namespace 67 #endif // icu4x_DecimalSignedRoundingMode_D_HPP