DecimalRoundingIncrement.d.hpp (1660B)
1 #ifndef icu4x_DecimalRoundingIncrement_D_HPP 2 #define icu4x_DecimalRoundingIncrement_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 DecimalRoundingIncrement { 18 DecimalRoundingIncrement_MultiplesOf1 = 0, 19 DecimalRoundingIncrement_MultiplesOf2 = 1, 20 DecimalRoundingIncrement_MultiplesOf5 = 2, 21 DecimalRoundingIncrement_MultiplesOf25 = 3, 22 }; 23 24 typedef struct DecimalRoundingIncrement_option {union { DecimalRoundingIncrement ok; }; bool is_ok; } DecimalRoundingIncrement_option; 25 } // namespace capi 26 } // namespace 27 28 namespace icu4x { 29 /** 30 * Increment used in a rounding operation. 31 * 32 * See the [Rust documentation for `RoundingIncrement`](https://docs.rs/fixed_decimal/latest/fixed_decimal/enum.RoundingIncrement.html) for more information. 33 */ 34 class DecimalRoundingIncrement { 35 public: 36 enum Value { 37 MultiplesOf1 = 0, 38 MultiplesOf2 = 1, 39 MultiplesOf5 = 2, 40 MultiplesOf25 = 3, 41 }; 42 43 DecimalRoundingIncrement() = default; 44 // Implicit conversions between enum and ::Value 45 constexpr DecimalRoundingIncrement(Value v) : value(v) {} 46 constexpr operator Value() const { return value; } 47 // Prevent usage as boolean value 48 explicit operator bool() const = delete; 49 50 inline icu4x::capi::DecimalRoundingIncrement AsFFI() const; 51 inline static icu4x::DecimalRoundingIncrement FromFFI(icu4x::capi::DecimalRoundingIncrement c_enum); 52 private: 53 Value value; 54 }; 55 56 } // namespace 57 #endif // icu4x_DecimalRoundingIncrement_D_HPP