#pragma once #include namespace saw { namespace impl { template class json_encode { static_assert(always_false, "This schema type is not being handle by the json encoding."); }; template struct json_encode, RootSchema, FromEncode> { static error_or encode(const data, FromEncode>& from, data, encode::Json>& to) { auto val = from.get(); std::array data; auto tc_result = std::to_chars(reinterpret_cast(data.data()), reinterpret_cast(data.data())+data.size(), val); if(tc_result.ec != std::errc{}){ return make_error(); } size_t bytes_written = 0; for(char* ptr = reinterpret_cast(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(char* ptr = reinterpret_cast(data.data()); ptr != tc_result.ptr; ++ptr){ uint8_t* un_ptr = reinterpret_cast(ptr); buff.push(un_ptr[0]); } return void_t{}; } }; } }