0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-09-28 11:48:54 +02:00

ircd::json: Move member.h definitions to proper dependency ordered location.

This commit is contained in:
Jason Volk 2018-03-21 13:49:00 -07:00
parent df605d5646
commit 0483a381f8

View file

@ -991,81 +991,6 @@ const
return { string_view::end(), string_view::end() };
}
///////////////////////////////////////////////////////////////////////////////
//
// json/member.h
//
ircd::string_view
ircd::json::stringify(mutable_buffer &buf,
const members &list)
{
return stringify(buf, std::begin(list), std::end(list));
}
ircd::string_view
ircd::json::stringify(mutable_buffer &buf,
const member &m)
{
return stringify(buf, &m, &m + 1);
}
ircd::string_view
ircd::json::stringify(mutable_buffer &buf,
const member *const &b,
const member *const &e)
{
static const auto print_member
{
[](mutable_buffer &buf, const member &m)
{
printer(buf, printer.name << printer.name_sep, m.first);
stringify(buf, m.second);
}
};
char *const start{begin(buf)};
printer(buf, printer.object_begin);
printer::list_protocol(buf, b, e, print_member);
printer(buf, printer.object_end);
return { start, begin(buf) };
}
size_t
ircd::json::serialized(const members &m)
{
return serialized(std::begin(m), std::end(m));
}
size_t
ircd::json::serialized(const member *const &begin,
const member *const &end)
{
const size_t ret(1 + !std::distance(begin, end));
return std::accumulate(begin, end, ret, []
(auto ret, const auto &member)
{
return ret += serialized(member) + 1;
});
}
size_t
ircd::json::serialized(const member &member)
{
return serialized(member.first) + 1 + serialized(member.second);
}
bool
ircd::json::sorted(const member *const &begin,
const member *const &end)
{
return std::is_sorted(begin, end, []
(const member &a, const member &b)
{
return a < b;
});
}
///////////////////////////////////////////////////////////////////////////////
//
// json/object.h
@ -1482,6 +1407,81 @@ const
return { string_view::end(), string_view::end() };
}
///////////////////////////////////////////////////////////////////////////////
//
// json/member.h
//
ircd::string_view
ircd::json::stringify(mutable_buffer &buf,
const members &list)
{
return stringify(buf, std::begin(list), std::end(list));
}
ircd::string_view
ircd::json::stringify(mutable_buffer &buf,
const member &m)
{
return stringify(buf, &m, &m + 1);
}
ircd::string_view
ircd::json::stringify(mutable_buffer &buf,
const member *const &b,
const member *const &e)
{
static const auto print_member
{
[](mutable_buffer &buf, const member &m)
{
printer(buf, printer.name << printer.name_sep, m.first);
stringify(buf, m.second);
}
};
char *const start{begin(buf)};
printer(buf, printer.object_begin);
printer::list_protocol(buf, b, e, print_member);
printer(buf, printer.object_end);
return { start, begin(buf) };
}
size_t
ircd::json::serialized(const members &m)
{
return serialized(std::begin(m), std::end(m));
}
size_t
ircd::json::serialized(const member *const &begin,
const member *const &end)
{
const size_t ret(1 + !std::distance(begin, end));
return std::accumulate(begin, end, ret, []
(auto ret, const auto &member)
{
return ret += serialized(member) + 1;
});
}
size_t
ircd::json::serialized(const member &member)
{
return serialized(member.first) + 1 + serialized(member.second);
}
bool
ircd::json::sorted(const member *const &begin,
const member *const &end)
{
return std::is_sorted(begin, end, []
(const member &a, const member &b)
{
return a < b;
});
}
///////////////////////////////////////////////////////////////////////////////
//
// json/value.h