diff --git a/nitro/wallet/deref.nim b/nitro/wallet/deref.nim new file mode 100644 index 0000000..c5ff5cd --- /dev/null +++ b/nitro/wallet/deref.nim @@ -0,0 +1,46 @@ +import std/macros + +func identName(identDefs: NimNode): NimNode = + identDefs.expectKind(nnkIdentDefs) + identDefs[0] + +func identType(identDefs: NimNode): NimNode = + identDefs.expectKind(nnkIdentDefs) + identDefs[^2] + +func `identType=`(identDefs: NimNode, identType: NimNode) = + identDefs.expectKind(nnkIdentDefs) + identDefs[^2] = identType + +func insertRef(function: NimNode) = + function.expectKind(nnkFuncDef) + var paramType = function.params[1].identType + if paramType.kind == nnkVarTy: + paramType = paramType[0] + function.params[1].identType = newNimNode(nnkRefTy, paramType).add(paramType) + +func paramNames(function: NimNode): seq[NimNode] = + function.expectKind(nnkFuncDef) + for i in 1..