From d80f29b65a2a923339db67a7952a111dcf46bd79 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sat, 22 Apr 2023 20:19:33 -0700 Subject: [PATCH] ircd::json::stack::member: Conversion constructions from other member categories. --- include/ircd/json/stack/member.h | 4 ++++ ircd/json.cc | 36 ++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) 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)