summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/plib/pfmtlog.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/plib/pfmtlog.h')
-rw-r--r--src/lib/netlist/plib/pfmtlog.h23
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 *>
{