nondescript/src/ndspkg/lib/io.nim

34 lines
854 B
Nim

import ../types/value
import ../types/native
import ../types/ndstring
import bitops
proc natRead(args: seq[NdValue], retval: var NdValue): NatReturn =
retval = stdin.readLine().fromNimString()
return natOk
proc natPrint(args: seq[NdValue], retval: var NdValue): NatReturn =
if args.len() == 0:
retval = fromNil()
return natOk
for i, arg in args.pairs:
write stdout, $arg
if i < args.high():
write stdout, " "
write stdout, "\n"
retval = args[0];
return natOk
proc natWrite(args: seq[NdValue], retval: var NdValue): NatReturn =
if args.len() != 1:
return natError("Write expects exactly 1 argument, got " & $args.len() & ".")
let arg = args[0]
write stdout, $arg
retval = arg;
return natOk
proc constructIo* =
defNative("read", natRead)
defNative("print", natPrint)
defNative("write", natWrite)