mirror of
https://github.com/logos-storage/nim-json-rpc.git
synced 2026-01-16 04:23:09 +00:00
Fixed parsing issue with forward decls
This commit is contained in:
parent
a9715050ae
commit
7d93ca6168
@ -44,12 +44,46 @@ proc fromJson(n: JsonNode, argName: string, result: var int) =
|
||||
n.kind.expect(JInt, argName)
|
||||
result = n.getInt()
|
||||
|
||||
# TODO: Why does compiler complain that result cannot be assigned to when using result: var int|var int64
|
||||
# TODO: Compiler requires forward decl when processing out of module
|
||||
proc fromJson(n: JsonNode, argName: string, result: var uint64)
|
||||
proc fromJson(n: JsonNode, argName: string, result: var byte)
|
||||
proc fromJson(n: JsonNode, argName: string, result: var float)
|
||||
proc fromJson(n: JsonNode, argName: string, result: var string)
|
||||
proc fromJson[T](n: JsonNode, argName: string, result: var seq[T])
|
||||
proc fromJson[N, T](n: JsonNode, argName: string, result: var array[N, T])
|
||||
|
||||
# TODO: Why can't this be forward declared? Complains of lack of definition
|
||||
proc fromJson[T: enum](n: JsonNode, argName: string, result: var T) =
|
||||
n.kind.expect(JInt, argName)
|
||||
result = n.getInt().T
|
||||
|
||||
# TODO: Why can't this be forward declared? Complains of lack of definition
|
||||
proc fromJson[T: object](n: JsonNode, argName: string, result: var T) =
|
||||
for k, v in fieldpairs(result):
|
||||
fromJson(n[k], k, v)
|
||||
|
||||
proc fromJson(n: JsonNode, argName: string, result: var int64) =
|
||||
n.kind.expect(JInt, argName)
|
||||
result = n.getInt()
|
||||
|
||||
proc fromJson(n: JsonNode, argName: string, result: var uint64) =
|
||||
n.kind.expect(JInt, argName)
|
||||
result = n.getInt().uint64
|
||||
|
||||
proc fromJson(n: JsonNode, argName: string, result: var byte) =
|
||||
n.kind.expect(JInt, argName)
|
||||
let v = n.getInt()
|
||||
if v > 255 or v < 0: raise newException(ValueError, "Parameter \"" & argName & "\" value out of range for byte: " & $v)
|
||||
result = byte(v)
|
||||
|
||||
# TODO: Alow string input for UInt256?
|
||||
#[
|
||||
proc fromJson(n: JsonNode, argName: string, result: var UInt256) =
|
||||
n.kind.expect(JString, argName)
|
||||
result = n.getStr().parse(Stint[256]) # TODO: Requires error checking?
|
||||
]#
|
||||
|
||||
proc fromJson(n: JsonNode, argName: string, result: var float) =
|
||||
n.kind.expect(JFloat, argName)
|
||||
result = n.getFloat()
|
||||
@ -67,10 +101,6 @@ proc fromJson[N, T](n: JsonNode, argName: string, result: var array[N, T]) =
|
||||
for i in 0 ..< n.len:
|
||||
fromJson(n[i], argName, result[i])
|
||||
|
||||
proc fromJson[T: object](n: JsonNode, argName: string, result: var T) =
|
||||
for k, v in fieldpairs(result):
|
||||
fromJson(n[k], k, v)
|
||||
|
||||
proc unpackArg[T](argIdx: int, argName: string, argtype: typedesc[T], args: JsonNode): T =
|
||||
when argType is array or argType is seq:
|
||||
args[argIdx].kind.expect(JArray, argName)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user