//===----------------------------------------------------------------------===// // DuckDB // // duckdb/common/types/decimal.hpp // // //===----------------------------------------------------------------------===// #pragma once #include "duckdb/common/types.hpp" namespace duckdb { template struct DecimalWidth {}; template <> struct DecimalWidth { static constexpr uint8_t max = 4; }; template <> struct DecimalWidth { static constexpr uint8_t max = 9; }; template <> struct DecimalWidth { static constexpr uint8_t max = 18; }; template <> struct DecimalWidth { static constexpr uint8_t max = 38; }; //! The Decimal class is a static class that holds helper functions for the Decimal type class Decimal { public: static constexpr uint8_t MAX_WIDTH_INT16 = DecimalWidth::max; static constexpr uint8_t MAX_WIDTH_INT32 = DecimalWidth::max; static constexpr uint8_t MAX_WIDTH_INT64 = DecimalWidth::max; static constexpr uint8_t MAX_WIDTH_INT128 = DecimalWidth::max; static constexpr uint8_t MAX_WIDTH_DECIMAL = MAX_WIDTH_INT128; public: static string ToString(int16_t value, uint8_t width, uint8_t scale); static string ToString(int32_t value, uint8_t width, uint8_t scale); static string ToString(int64_t value, uint8_t width, uint8_t scale); static string ToString(hugeint_t value, uint8_t width, uint8_t scale); }; } // namespace duckdb