diff options
Diffstat (limited to 'src/lib/netlist/plib/pfmtlog.h')
-rw-r--r-- | src/lib/netlist/plib/pfmtlog.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/lib/netlist/plib/pfmtlog.h b/src/lib/netlist/plib/pfmtlog.h index 53ed539078e..fd1f073cb73 100644 --- a/src/lib/netlist/plib/pfmtlog.h +++ b/src/lib/netlist/plib/pfmtlog.h @@ -28,11 +28,22 @@ P_ENUM(plog_level, template <typename T> struct ptype_traits_base { - static const T cast(const T &x) { return x; } - static const bool is_signed = std::numeric_limits<T>::is_signed; + static constexpr const T cast(const T &x) { return x; } + static constexpr const bool is_signed = std::numeric_limits<T>::is_signed; static char32_t fmt_spec() { return 'u'; } }; +#if (PUSE_FLOAT128) +template <> +struct ptype_traits_base<__float128> +{ + // FIXME: need native support at some time + static constexpr const long double cast(const __float128 &x) { return static_cast<long double>(x); } + static constexpr const bool is_signed = true; + static char32_t fmt_spec() { return 'f'; } +}; +#endif + template <> struct ptype_traits_base<bool> { @@ -133,6 +144,14 @@ struct ptype_traits<long double> : ptype_traits_base<long double> static char32_t fmt_spec() { return 'f'; } }; +#if (PUSE_FLOAT128) +template<> +struct ptype_traits<__float128> : ptype_traits_base<__float128> +{ + static char32_t fmt_spec() { return 'f'; } +}; +#endif + template<> struct ptype_traits<char *> : ptype_traits_base<char *> { |