ref: a57d9fd3e0a6dd268872ed89d6a41c723d909b2e
dir: /lib/bio/iter.myr/
use std
use "bio"
pkg bio =
type lineiter = file#
type chariter = file#
impl iterable lineiter -> byte[:]
impl iterable chariter -> char
const byline : (f : file# -> lineiter)
const bychar : (f : file# -> chariter)
;;
const byline = {f
-> (f : lineiter)
}
impl iterable lineiter -> byte[:] =
__iternext__ = {itp, outp
match bio.readln((itp# : file#))
| `Ok ln:
outp# = ln
-> true
| `Eof:
-> false
| `Err _:
-> false
;;
}
__iterfin__ = {itp, outp
std.slfree(outp#)
}
;;
const bychar = {f
-> (f : chariter)
}
impl iterable chariter -> char =
__iternext__ = {itp, outp : char#
match bio.getc((itp# : file#))
| `Ok c:
outp# = c
-> true
| `Eof:
-> false
| `Err _:
-> false
;;
}
__iterfin__ = {itp, outp
}
;;