diff options
-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>; |