#pragma once #include namespace saw { namespace impl { template class json_encode_impl { static_assert(always_false, "This schema type is not being handle by the json encoding."); }; template class json_encode_impl, RootSchema, FromEncode> { static ErrorOr encode(const data& from, data& to, size_t ptr) { auto val = from.get(); std::array data; auto tc_result = std::to_chars(reinterpret_cast(data.data()), reinrepret_cast(data.data())+data.size(), val); if(tc_result.ec != std::errc{}){ return make_error(); } size_t bytes_written = 0; for(auto ptr = data.data(); ptr != tc_result.ptr; ++ptr){ ++bytes_written; } auto& buff = to.get_buffer(); error err = buff.write_require_length(bytes_written); if(!err.template is_type()){ return std::move(err); } for(auto ptr = data.data(); ptr != tc_result.ptr; ++ptr){ buff.push(ptr[0]); } return Void{}; } }; } }