mirror of
https://github.com/matrix-construct/construct
synced 2024-10-01 21:28:53 +02:00
ircd::json::tuple: Minor cleanup.
This commit is contained in:
parent
99058105b3
commit
2b2725f7c1
1 changed files with 25 additions and 10 deletions
|
@ -74,9 +74,12 @@ try
|
||||||
}
|
}
|
||||||
catch(const bad_lex_cast &e)
|
catch(const bad_lex_cast &e)
|
||||||
{
|
{
|
||||||
throw parse_error("cannot convert '%s' to '%s'",
|
throw parse_error
|
||||||
demangle<src>(),
|
{
|
||||||
demangle<dst>());
|
"cannot convert '%s' to '%s'",
|
||||||
|
demangle<src>(),
|
||||||
|
demangle<dst>()
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class dst,
|
template<class dst,
|
||||||
|
@ -136,10 +139,13 @@ try
|
||||||
}
|
}
|
||||||
catch(const std::exception &e)
|
catch(const std::exception &e)
|
||||||
{
|
{
|
||||||
throw parse_error("failed to set member '%s' (from %s): %s",
|
throw parse_error
|
||||||
key,
|
{
|
||||||
demangle<V>(),
|
"failed to set member '%s' (from %s): %s",
|
||||||
e.what());
|
key,
|
||||||
|
demangle<V>(),
|
||||||
|
e.what()
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class... T>
|
template<class... T>
|
||||||
|
@ -152,25 +158,34 @@ set(tuple<T...> &t,
|
||||||
{
|
{
|
||||||
case type::STRING:
|
case type::STRING:
|
||||||
case type::LITERAL:
|
case type::LITERAL:
|
||||||
|
{
|
||||||
set(t, key, string_view{value});
|
set(t, key, string_view{value});
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case type::NUMBER:
|
case type::NUMBER:
|
||||||
|
{
|
||||||
if(value.floats)
|
if(value.floats)
|
||||||
set(t, key, value.floating);
|
set(t, key, value.floating);
|
||||||
else
|
else
|
||||||
set(t, key, value.integer);
|
set(t, key, value.integer);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case type::OBJECT:
|
case type::OBJECT:
|
||||||
case type::ARRAY:
|
case type::ARRAY:
|
||||||
|
{
|
||||||
if(unlikely(!value.serial))
|
if(unlikely(!value.serial))
|
||||||
throw print_error("Type %s must be JSON to be used by tuple member '%s'",
|
throw print_error
|
||||||
reflect(type(value)),
|
{
|
||||||
key);
|
"Type %s must be JSON to be used by tuple member '%s'",
|
||||||
|
reflect(type(value)),
|
||||||
|
key
|
||||||
|
};
|
||||||
|
|
||||||
set(t, key, string_view{value});
|
set(t, key, string_view{value});
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return t;
|
return t;
|
||||||
|
|
Loading…
Reference in a new issue