Implement readInto and read(n)

This commit is contained in:
Zahary Karadjov 2020-05-01 21:39:08 +03:00
commit bf930b6f1b
No known key found for this signature in database
GPG key ID: C8936F8A3073D609
12 changed files with 636 additions and 220 deletions

View file

@ -7,15 +7,15 @@ macro fsMultiSync*(body: untyped) =
# but taking async parameters and having the async pragma.
var
asyncProcBody = copy body
asyncProcParams = asyncBody[3]
asyncProcParams = asyncProcBody[3]
asyncProcBody.addPragma(bindSym"async")
# The return types becomes Future[T]
if asyncProcParams[0].kind == nnkEmpty
asyncProcParams[0] = newBracketExpr(ident"Future", ident"void")
if asyncProcParams[0].kind == nnkEmpty:
asyncProcParams[0] = newTree(nnkBracketExpr, ident"Future", ident"void")
else:
asyncProcParams[0] = newBracketExpr(ident"Future", asyncProcParams[0])
asyncProcParams[0] = newTree(nnkBracketExpr, ident"Future", asyncProcParams[0])
# We replace all stream inputs with their async counterparts
for i in 1 ..< asyncProcParams.len:
@ -26,7 +26,7 @@ macro fsMultiSync*(body: untyped) =
elif sameType(typ, bindSym"OutputStream"):
paramsDef[^2] = bindSym "AsyncOutputStream"
result = newStmtList(body, asyncBody)
result = newStmtList(body, asyncProcBody)
if defined(debugSupportAsync):
echo result.repr