DecimalFormatter.d.hpp (3734B)
1 #ifndef icu4x_DecimalFormatter_D_HPP 2 #define icu4x_DecimalFormatter_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 namespace icu4x { 15 namespace capi { struct DataProvider; } 16 class DataProvider; 17 namespace capi { struct Decimal; } 18 class Decimal; 19 namespace capi { struct DecimalFormatter; } 20 class DecimalFormatter; 21 namespace capi { struct Locale; } 22 class Locale; 23 class DataError; 24 class DecimalGroupingStrategy; 25 } 26 27 28 namespace icu4x { 29 namespace capi { 30 struct DecimalFormatter; 31 } // namespace capi 32 } // namespace 33 34 namespace icu4x { 35 /** 36 * An ICU4X Decimal Format object, capable of formatting a [`Decimal`] as a string. 37 * 38 * See the [Rust documentation for `DecimalFormatter`](https://docs.rs/icu/latest/icu/decimal/struct.DecimalFormatter.html) for more information. 39 */ 40 class DecimalFormatter { 41 public: 42 43 /** 44 * Creates a new [`DecimalFormatter`], using compiled data 45 * 46 * See the [Rust documentation for `try_new`](https://docs.rs/icu/latest/icu/decimal/struct.DecimalFormatter.html#method.try_new) for more information. 47 */ 48 inline static diplomat::result<std::unique_ptr<icu4x::DecimalFormatter>, icu4x::DataError> create_with_grouping_strategy(const icu4x::Locale& locale, std::optional<icu4x::DecimalGroupingStrategy> grouping_strategy); 49 50 /** 51 * Creates a new [`DecimalFormatter`], using a particular data source. 52 * 53 * See the [Rust documentation for `try_new`](https://docs.rs/icu/latest/icu/decimal/struct.DecimalFormatter.html#method.try_new) for more information. 54 */ 55 inline static diplomat::result<std::unique_ptr<icu4x::DecimalFormatter>, icu4x::DataError> create_with_grouping_strategy_and_provider(const icu4x::DataProvider& provider, const icu4x::Locale& locale, std::optional<icu4x::DecimalGroupingStrategy> grouping_strategy); 56 57 /** 58 * Creates a new [`DecimalFormatter`] from preconstructed locale data. 59 * 60 * See the [Rust documentation for `DecimalSymbolsV1`](https://docs.rs/icu/latest/icu/decimal/provider/struct.DecimalSymbolsV1.html) for more information. 61 */ 62 inline static diplomat::result<std::unique_ptr<icu4x::DecimalFormatter>, icu4x::DataError> create_with_manual_data(std::string_view plus_sign_prefix, std::string_view plus_sign_suffix, std::string_view minus_sign_prefix, std::string_view minus_sign_suffix, std::string_view decimal_separator, std::string_view grouping_separator, uint8_t primary_group_size, uint8_t secondary_group_size, uint8_t min_group_size, diplomat::span<const char32_t> digits, std::optional<icu4x::DecimalGroupingStrategy> grouping_strategy); 63 64 /** 65 * Formats a [`Decimal`] to a string. 66 * 67 * See the [Rust documentation for `format`](https://docs.rs/icu/latest/icu/decimal/struct.DecimalFormatter.html#method.format) for more information. 68 */ 69 inline std::string format(const icu4x::Decimal& value) const; 70 71 inline const icu4x::capi::DecimalFormatter* AsFFI() const; 72 inline icu4x::capi::DecimalFormatter* AsFFI(); 73 inline static const icu4x::DecimalFormatter* FromFFI(const icu4x::capi::DecimalFormatter* ptr); 74 inline static icu4x::DecimalFormatter* FromFFI(icu4x::capi::DecimalFormatter* ptr); 75 inline static void operator delete(void* ptr); 76 private: 77 DecimalFormatter() = delete; 78 DecimalFormatter(const icu4x::DecimalFormatter&) = delete; 79 DecimalFormatter(icu4x::DecimalFormatter&&) noexcept = delete; 80 DecimalFormatter operator=(const icu4x::DecimalFormatter&) = delete; 81 DecimalFormatter operator=(icu4x::DecimalFormatter&&) noexcept = delete; 82 static void operator delete[](void*, size_t) = delete; 83 }; 84 85 } // namespace 86 #endif // icu4x_DecimalFormatter_D_HPP