diff --git a/include/ircd/json/stack/member.h b/include/ircd/json/stack/member.h index 0fb9c37f4..6517db02f 100644 --- a/include/ircd/json/stack/member.h +++ b/include/ircd/json/stack/member.h @@ -41,6 +41,10 @@ struct ircd::json::stack::member member(stack &s, const string_view &name, const json::value &); template member(object &po, const string_view &name, const json::tuple &t); template member(stack &s, const string_view &name, const json::tuple &t); + explicit member(object &, const json::object::member &); + explicit member(stack &, const json::object::member &); + explicit member(object &, const json::member &); + explicit member(stack &, const json::member &); member() = default; member(const member &) = delete; member(member &&) noexcept; diff --git a/ircd/json.cc b/ircd/json.cc index 57f81ea8c..d3792a7e5 100644 --- a/ircd/json.cc +++ b/ircd/json.cc @@ -1712,6 +1712,42 @@ ircd::json::stack::member::member(object &po, s->append(string_view{tmp, size_t(data(buf) - tmp)}); } +ircd::json::stack::member::member(stack &s, + const json::member &m) +:member +{ + stack::top(s), m +} +{ +} + +ircd::json::stack::member::member(object &po, + const json::member &m) +:member +{ + po, string_view{m.first}, m.second +} +{ +} + +ircd::json::stack::member::member(stack &s, + const json::object::member &om) +:member +{ + stack::top(s), om +} +{ +} + +ircd::json::stack::member::member(object &po, + const json::object::member &om) +:member +{ + po, om.first, om.second +} +{ +} + ircd::json::stack::member::member(stack &s, const string_view &name, const json::value &value)