mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
46 lines
1019 B
V
46 lines
1019 B
V
|
module io
|
||
|
|
||
|
// ReaderWriter represents a stream that can be read from and wrote to
|
||
|
pub interface ReaderWriter {
|
||
|
// from Reader
|
||
|
read(mut buf []byte) ?int
|
||
|
|
||
|
// from Writer
|
||
|
write(buf []byte) ?int
|
||
|
}
|
||
|
|
||
|
// ReaderWriterImpl is a ReaderWriter that can be made from
|
||
|
// a seperate reader and writer (see fn make_readerwriter)
|
||
|
struct ReaderWriterImpl {
|
||
|
r Reader
|
||
|
w Writer
|
||
|
}
|
||
|
|
||
|
pub fn (mut r ReaderWriterImpl) read(mut buf []byte) ?int {
|
||
|
return r.r.read(mut buf)
|
||
|
}
|
||
|
|
||
|
pub fn (mut r ReaderWriterImpl) write(buf []byte) ?int {
|
||
|
return r.w.write(buf)
|
||
|
}
|
||
|
|
||
|
// make_readerwriter takes a rstream and a wstream and makes
|
||
|
// an rwstream with them
|
||
|
pub fn make_readerwriter(r Reader, w Writer) ReaderWriterImpl {
|
||
|
return {r: r, w: w}
|
||
|
}
|
||
|
|
||
|
struct Zzz_CoerceInterfaceTableGeneration {
|
||
|
}
|
||
|
|
||
|
fn (_ Zzz_CoerceInterfaceTableGeneration) write(buf []byte) ?int {
|
||
|
}
|
||
|
|
||
|
fn (_ Zzz_CoerceInterfaceTableGeneration) read(mut buf []byte) ?int {
|
||
|
}
|
||
|
|
||
|
fn zzz_reader_writer_coerce_compiler() {
|
||
|
x := Zzz_CoerceInterfaceTableGeneration{}
|
||
|
_ := make_readerwriter(x, x)
|
||
|
}
|