summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorClaudius 'keldu' Holeksa <mail@keldu.de>2024-08-16 11:56:18 +0200
committerClaudius 'keldu' Holeksa <mail@keldu.de>2024-08-16 11:56:18 +0200
commitbe09d1faf1ba1bf83825d1c02714d4ae27ddffe0 (patch)
treeccda0380e48db64265699c9cfe1638b9f1b0d692 /modules
parentd9bf01c4f86c73364218e4a3ede7e1e75919f2d6 (diff)
Encode bools for json
Diffstat (limited to 'modules')
-rw-r--r--modules/codec-json/c++/json.tmpl.hpp27
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>;