diff options
author | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-08-16 11:56:18 +0200 |
---|---|---|
committer | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-08-16 11:56:18 +0200 |
commit | be09d1faf1ba1bf83825d1c02714d4ae27ddffe0 (patch) | |
tree | ccda0380e48db64265699c9cfe1638b9f1b0d692 | |
parent | d9bf01c4f86c73364218e4a3ede7e1e75919f2d6 (diff) |
Encode bools for json
-rw-r--r-- | modules/codec-json/c++/json.tmpl.hpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/modules/codec-json/c++/json.tmpl.hpp b/modules/codec-json/c++/json.tmpl.hpp index fd789a4..979be96 100644 --- a/modules/codec-json/c++/json.tmpl.hpp +++ b/modules/codec-json/c++/json.tmpl.hpp @@ -40,6 +40,33 @@ class json_encode { static_assert(always_false<Schema, FromEncode>, "This schema type is not being handled by the json encoding."); }; +template<typename FromEncode> +struct json_encode<schema::Bool, FromEncode> { + using Schema = schema::Bool; + + static error_or<void> encode(const data<Schema, FromEncode>& from, buffer& to, uint64_t, bool){ + auto val = from.get(); + std::string_view view = val ? "true" : "false"; + uint64_t view_s = view.size(); + + auto& buff = to; + { + error err = buff.write_require_length(view_s); + if(!err.template is_type<err::no_error>()){ + return std::move(err); + } + } + + { + error err = buff.push(reinterpret_cast<uint8_t*>(&view[0], view_s); + if(!err.template is_type<err::no_error>()){ + return std::move(err); + } + } + return make_void(); + } +}; + template<typename T, size_t N, typename FromEncode> struct json_encode<schema::Primitive<T,N>, FromEncode> { using Schema = schema::Primitive<T,N>; |