j/tree: add templated type conversions
This commit is contained in:
parent
e6b15d2a85
commit
c2589abc8e
@ -321,6 +321,54 @@ json::tree::node::as_chars (void) const
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
namespace json { namespace tree {
|
||||
template <>
|
||||
bool node::as (void) const
|
||||
{
|
||||
return as_bool ();
|
||||
}
|
||||
} }
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
namespace json { namespace tree {
|
||||
template <>
|
||||
float json::tree::node::as (void) const
|
||||
{
|
||||
return as_float ();
|
||||
}
|
||||
} }
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
namespace json { namespace tree {
|
||||
template <>
|
||||
double
|
||||
json::tree::node::as (void) const
|
||||
{
|
||||
return as_double ();
|
||||
}
|
||||
} }
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
#define AS_INTEGRAL(T) \
|
||||
namespace json { namespace tree { \
|
||||
template <> \
|
||||
T \
|
||||
node::as (void) const \
|
||||
{ \
|
||||
return static_cast<T> (as_double ()); \
|
||||
} \
|
||||
} }
|
||||
|
||||
AS_INTEGRAL(uint8_t)
|
||||
AS_INTEGRAL(uint16_t)
|
||||
AS_INTEGRAL(uint32_t)
|
||||
AS_INTEGRAL(uint64_t)
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Global operatoers
|
||||
bool
|
||||
|
@ -75,6 +75,9 @@ namespace json { namespace tree {
|
||||
virtual size_t as_uint (void) const;
|
||||
virtual const char* as_chars (void) const;
|
||||
|
||||
template <typename T>
|
||||
T as (void) const;
|
||||
|
||||
virtual bool is_object (void) const { return false; }
|
||||
virtual bool is_array (void) const { return false; }
|
||||
virtual bool is_string (void) const { return false; }
|
||||
|
Loading…
Reference in New Issue
Block a user