Added marshalling support for uint32 (#88)

* Added marshalling support for uint32

* Update json_rpc/jsonmarshal.nim

Co-authored-by: Jacek Sieka <arnetheduck@gmail.com>

Co-authored-by: Jacek Sieka <arnetheduck@gmail.com>
This commit is contained in:
Hanno Cornelius 2020-11-16 16:45:53 +02:00 committed by GitHub
parent 99455437ba
commit dc3a2d33fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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