mirror of
https://github.com/codex-storage/nim-json-rpc.git
synced 2025-02-24 08:58:18 +00:00
Add StUInt256 json handling, explicitly pass type
in param setup.
This commit is contained in:
parent
d8b68e14f7
commit
4d1d82e5d8
@ -1,4 +1,4 @@
|
|||||||
import asyncdispatch, asyncnet, json, tables, macros, strutils, jsonconverters
|
import asyncdispatch, asyncnet, json, tables, macros, strutils, jsonconverters, stint
|
||||||
export asyncdispatch, asyncnet, json, jsonconverters
|
export asyncdispatch, asyncnet, json, jsonconverters
|
||||||
|
|
||||||
type
|
type
|
||||||
@ -46,12 +46,12 @@ proc fromJson(n: JsonNode, argName: string, result: var int) =
|
|||||||
|
|
||||||
# TODO: Why does compiler complain that result cannot be assigned to when using result: var int|var int64
|
# 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
|
# 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 byte)
|
||||||
proc fromJson(n: JsonNode, argName: string, result: var float)
|
proc fromJson(n: JsonNode, argName: string, result: var float)
|
||||||
proc fromJson(n: JsonNode, argName: string, result: var string)
|
proc fromJson(n: JsonNode, argName: string, result: var string)
|
||||||
proc fromJson[T](n: JsonNode, argName: string, result: var seq[T])
|
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, T](n: JsonNode, argName: string, result: var array[N, T])
|
||||||
|
proc fromJson(n: JsonNode, argName: string, result: var UInt256)
|
||||||
|
|
||||||
# TODO: Why can't this be forward declared? Complains of lack of definition
|
# TODO: Why can't this be forward declared? Complains of lack of definition
|
||||||
proc fromJson[T: enum](n: JsonNode, argName: string, result: var T) =
|
proc fromJson[T: enum](n: JsonNode, argName: string, result: var T) =
|
||||||
@ -67,22 +67,15 @@ proc fromJson(n: JsonNode, argName: string, result: var int64) =
|
|||||||
n.kind.expect(JInt, argName)
|
n.kind.expect(JInt, argName)
|
||||||
result = n.getInt()
|
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) =
|
proc fromJson(n: JsonNode, argName: string, result: var byte) =
|
||||||
n.kind.expect(JInt, argName)
|
n.kind.expect(JInt, argName)
|
||||||
let v = n.getInt()
|
let v = n.getInt()
|
||||||
if v > 255 or v < 0: raise newException(ValueError, "Parameter \"" & argName & "\" value out of range for byte: " & $v)
|
if v > 255 or v < 0: raise newException(ValueError, "Parameter \"" & argName & "\" value out of range for byte: " & $v)
|
||||||
result = byte(v)
|
result = byte(v)
|
||||||
|
|
||||||
# TODO: Alow string input for UInt256?
|
|
||||||
#[
|
|
||||||
proc fromJson(n: JsonNode, argName: string, result: var UInt256) =
|
proc fromJson(n: JsonNode, argName: string, result: var UInt256) =
|
||||||
n.kind.expect(JString, argName)
|
n.kind.expect(JString, argName)
|
||||||
result = n.getStr().parse(Stint[256]) # TODO: Requires error checking?
|
result = parse(StUint[256], n.getStr()) # TODO: Requires error checking?
|
||||||
]#
|
|
||||||
|
|
||||||
proc fromJson(n: JsonNode, argName: string, result: var float) =
|
proc fromJson(n: JsonNode, argName: string, result: var float) =
|
||||||
n.kind.expect(JFloat, argName)
|
n.kind.expect(JFloat, argName)
|
||||||
@ -134,7 +127,7 @@ proc setupParams(parameters, paramsIdent: NimNode): NimNode =
|
|||||||
paramNameStr = $paramName
|
paramNameStr = $paramName
|
||||||
paramType = parameters[i][1]
|
paramType = parameters[i][1]
|
||||||
result.add(quote do:
|
result.add(quote do:
|
||||||
var `paramName` = `unpackArg`(`pos`, `paramNameStr`, `paramType`, `paramsIdent`)
|
var `paramName` = `unpackArg`(`pos`, `paramNameStr`, type(`paramType`), `paramsIdent`)
|
||||||
)
|
)
|
||||||
|
|
||||||
proc makeProcName(s: string): string =
|
proc makeProcName(s: string): string =
|
||||||
|
Loading…
x
Reference in New Issue
Block a user