From dc3a2d33fc49e8415323da146b60b5c7e07afd2c Mon Sep 17 00:00:00 2001 From: Hanno Cornelius <68783915+jm-clius@users.noreply.github.com> Date: Mon, 16 Nov 2020 16:45:53 +0200 Subject: [PATCH] Added marshalling support for uint32 (#88) * Added marshalling support for uint32 * Update json_rpc/jsonmarshal.nim Co-authored-by: Jacek Sieka Co-authored-by: Jacek Sieka --- json_rpc/jsonmarshal.nim | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/json_rpc/jsonmarshal.nim b/json_rpc/jsonmarshal.nim index ede3f3c..9aa7834 100644 --- a/json_rpc/jsonmarshal.nim +++ b/json_rpc/jsonmarshal.nim @@ -34,6 +34,7 @@ proc fromJson*[T](n: JsonNode, argName: string, result: var seq[T]) proc fromJson*[N, T](n: JsonNode, argName: string, result: var array[N, T]) proc fromJson*(n: JsonNode, argName: string, result: var int64) proc fromJson*(n: JsonNode, argName: string, result: var uint64) +proc fromJson*(n: JsonNode, argName: string, result: var uint32) proc fromJson*(n: JsonNode, argName: string, result: var ref int64) proc fromJson*(n: JsonNode, argName: string, result: var ref int) proc fromJson*[T](n: JsonNode, argName: string, result: var Option[T]) @@ -94,6 +95,16 @@ proc fromJson*(n: JsonNode, argName: string, result: var uint64) = ValueError, "JSON-RPC input is an unexpected negative value") result = uint64(asInt) +proc fromJson*(n: JsonNode, argName: string, result: var uint32) = + n.kind.expect(JInt, argName) + let asInt = n.getBiggestInt() + # signed -> unsigned conversions are unchecked + # https://github.com/nim-lang/RFCs/issues/175 + if asInt < 0: + raise newException( + ValueError, "JSON-RPC input is an unexpected negative value") + result = uint32(asInt) + proc fromJson*(n: JsonNode, argName: string, result: var ref int64) = n.kind.expect(JInt, argName) new result