diff options
Diffstat (limited to 'src/codec-json/json.tmpl.h')
-rw-r--r-- | src/codec-json/json.tmpl.h | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/codec-json/json.tmpl.h b/src/codec-json/json.tmpl.h index 3699e10..a19e3dc 100644 --- a/src/codec-json/json.tmpl.h +++ b/src/codec-json/json.tmpl.h @@ -5,23 +5,23 @@ namespace saw { namespace impl { template<typename Schema, typename RootSchema, typename FromEncode> -class json_encode_impl { +class json_encode { static_assert(always_false<Schema, RootSchema, FromEncode>, "This schema type is not being handle by the json encoding."); }; template<typename T, size_t N, typename RootSchema, typename FromEncode> -class json_encode_impl<saw::schema::Primitive<T,N>, RootSchema, FromEncode> { - static ErrorOr<void> encode(const data<Schema, FromEncode>& from, data<Schema, encode::Json>& to, size_t ptr) { +struct json_encode<saw::schema::Primitive<T,N>, RootSchema, FromEncode> { + static error_or<void> encode(const data<saw::schema::Primitive<T,N>, FromEncode>& from, data<saw::schema::Primitive<T,N>, encode::Json>& to) { auto val = from.get(); std::array<uint8_t, 256> data; - auto tc_result = std::to_chars(reinterpret_cast<int8_t>(data.data()), reinrepret_cast<int8_t>(data.data())+data.size(), val); + auto tc_result = std::to_chars(reinterpret_cast<char*>(data.data()), reinterpret_cast<char*>(data.data())+data.size(), val); if(tc_result.ec != std::errc{}){ return make_error<err::critical>(); } size_t bytes_written = 0; - for(auto ptr = data.data(); ptr != tc_result.ptr; ++ptr){ + for(char* ptr = reinterpret_cast<char*>(data.data()); ptr != tc_result.ptr; ++ptr){ ++bytes_written; } @@ -31,11 +31,12 @@ class json_encode_impl<saw::schema::Primitive<T,N>, RootSchema, FromEncode> { return std::move(err); } - for(auto ptr = data.data(); ptr != tc_result.ptr; ++ptr){ - buff.push(ptr[0]); + for(char* ptr = reinterpret_cast<char*>(data.data()); ptr != tc_result.ptr; ++ptr){ + uint8_t* un_ptr = reinterpret_cast<uint8_t*>(ptr); + buff.push(un_ptr[0]); } - return Void{}; + return void_t{}; } }; } |