1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

io: add missing documentation and edit existing ones (#17105)

This commit is contained in:
Nahua 2023-01-25 21:03:20 +01:00 committed by GitHub
parent 84b99ceeb2
commit 21b17fe234
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 32 additions and 21 deletions

View File

@ -1,6 +1,6 @@
module io module io
// BufferedReader provides a buffered interface for a reader // BufferedReader provides a buffered interface for a reader.
pub struct BufferedReader { pub struct BufferedReader {
mut: mut:
reader Reader reader Reader
@ -13,14 +13,14 @@ pub mut:
end_of_stream bool // whether we reached the end of the upstream reader end_of_stream bool // whether we reached the end of the upstream reader
} }
// BufferedReaderConfig are options that can be given to a reader // BufferedReaderConfig are options that can be given to a buffered reader.
pub struct BufferedReaderConfig { pub struct BufferedReaderConfig {
reader Reader reader Reader
cap int = 128 * 1024 // large for fast reading of big(ish) files cap int = 128 * 1024 // large for fast reading of big(ish) files
retries int = 2 // how many times to retry before assuming the stream ended retries int = 2 // how many times to retry before assuming the stream ended
} }
// new_buffered_reader creates new BufferedReader // new_buffered_reader creates a new BufferedReader.
pub fn new_buffered_reader(o BufferedReaderConfig) &BufferedReader { pub fn new_buffered_reader(o BufferedReaderConfig) &BufferedReader {
if o.cap <= 0 { if o.cap <= 0 {
panic('new_buffered_reader should be called with a positive `cap`') panic('new_buffered_reader should be called with a positive `cap`')
@ -35,7 +35,7 @@ pub fn new_buffered_reader(o BufferedReaderConfig) &BufferedReader {
return r return r
} }
// read fufills the Reader interface // read fufills the Reader interface.
pub fn (mut r BufferedReader) read(mut buf []u8) !int { pub fn (mut r BufferedReader) read(mut buf []u8) !int {
if r.end_of_stream { if r.end_of_stream {
return Eof{} return Eof{}
@ -58,6 +58,7 @@ pub fn (mut r BufferedReader) read(mut buf []u8) !int {
return read return read
} }
// free deallocates the memory for a buffered reader's internal buffer.
pub fn (mut r BufferedReader) free() { pub fn (mut r BufferedReader) free() {
unsafe { unsafe {
r.buf.free() r.buf.free()
@ -65,7 +66,7 @@ pub fn (mut r BufferedReader) free() {
} }
// fill_buffer attempts to refill the internal buffer // fill_buffer attempts to refill the internal buffer
// and returns whether it got any data // and returns whether it got any data.
fn (mut r BufferedReader) fill_buffer() bool { fn (mut r BufferedReader) fill_buffer() bool {
if r.end_of_stream { if r.end_of_stream {
// we know we have already reached the end of stream // we know we have already reached the end of stream
@ -94,19 +95,19 @@ fn (mut r BufferedReader) fill_buffer() bool {
return true return true
} }
// needs_fill returns whether the buffer needs refilling // needs_fill returns whether the buffer needs refilling.
fn (r BufferedReader) needs_fill() bool { fn (r BufferedReader) needs_fill() bool {
return r.offset >= r.len return r.offset >= r.len
} }
// end_of_stream returns whether the end of the stream was reached // end_of_stream returns whether the end of the stream was reached.
pub fn (r BufferedReader) end_of_stream() bool { pub fn (r BufferedReader) end_of_stream() bool {
return r.end_of_stream return r.end_of_stream
} }
// read_line attempts to read a line from the buffered reader // read_line attempts to read a line from the buffered reader
// it will read until it finds a new line character (\n) or // it will read until it finds a new line character (\n) or
// the end of stream // the end of stream.
pub fn (mut r BufferedReader) read_line() !string { pub fn (mut r BufferedReader) read_line() !string {
if r.end_of_stream { if r.end_of_stream {
return error('none') return error('none')

View File

@ -4,6 +4,10 @@ const (
buf_max_len = 1024 buf_max_len = 1024
) )
// cp copies from `src` to `dst` by allocating
// a maximum of 1024 bytes buffer for reading
// until either EOF is reached on `src` or an error occurs.
// An error is returned if an error is encountered during write.
pub fn cp(mut src Reader, mut dst Writer) ! { pub fn cp(mut src Reader, mut dst Writer) ! {
mut buf := []u8{len: io.buf_max_len} mut buf := []u8{len: io.buf_max_len}
for { for {

View File

@ -19,7 +19,7 @@ fn (err NotExpected) code() int {
return err.code return err.code
} }
// Reader represents a stream of data that can be read // Reader represents a stream of data that can be read.
pub interface Reader { pub interface Reader {
// read reads up to buf.len bytes and places // read reads up to buf.len bytes and places
// them into buf. // them into buf.
@ -35,7 +35,7 @@ const (
) )
// ReadAllConfig allows options to be passed for the behaviour // ReadAllConfig allows options to be passed for the behaviour
// of read_all // of read_all.
pub struct ReadAllConfig { pub struct ReadAllConfig {
read_to_end_of_stream bool read_to_end_of_stream bool
mut: mut:
@ -43,7 +43,7 @@ mut:
} }
// read_all reads all bytes from a reader until either a 0 length read // read_all reads all bytes from a reader until either a 0 length read
// or if read_to_end_of_stream is true then the end of the stream (`none`) // or if read_to_end_of_stream is true then the end of the stream (`none`).
pub fn read_all(config ReadAllConfig) ![]u8 { pub fn read_all(config ReadAllConfig) ![]u8 {
mut r := config.reader mut r := config.reader
read_till_eof := config.read_to_end_of_stream read_till_eof := config.read_to_end_of_stream
@ -64,7 +64,7 @@ pub fn read_all(config ReadAllConfig) ![]u8 {
} }
// read_any reads any available bytes from a reader // read_any reads any available bytes from a reader
// (until the reader returns a read of 0 length) // (until the reader returns a read of 0 length).
pub fn read_any(mut r Reader) ![]u8 { pub fn read_any(mut r Reader) ![]u8 {
mut b := []u8{len: io.read_all_len} mut b := []u8{len: io.read_all_len}
mut read := 0 mut read := 0
@ -81,7 +81,7 @@ pub fn read_any(mut r Reader) ![]u8 {
return b[..read] return b[..read]
} }
// RandomReader represents a stream of data that can be read from at a random location // RandomReader represents a stream of readable data from at a random location.
pub interface RandomReader { pub interface RandomReader {
read_from(pos u64, mut buf []u8) !int read_from(pos u64, mut buf []u8) !int
} }

View File

@ -1,29 +1,34 @@
module io module io
// ReaderWriter represents a stream that can be read from and wrote to // ReaderWriter represents a stream that can be read and written.
pub interface ReaderWriter { pub interface ReaderWriter {
Reader Reader
Writer Writer
} }
// ReaderWriterImpl is a ReaderWriter that can be made from // ReaderWriterImpl is a ReaderWriter that can be made from
// a separate reader and writer (see fn make_readerwriter) // a separate reader and writer (see fn make_readerwriter).
struct ReaderWriterImpl { struct ReaderWriterImpl {
mut: mut:
r Reader r Reader
w Writer w Writer
} }
// read reads up to `buf.len` bytes into `buf`. It returns
// the number of bytes read or any error encountered.
pub fn (mut r ReaderWriterImpl) read(mut buf []u8) !int { pub fn (mut r ReaderWriterImpl) read(mut buf []u8) !int {
return r.r.read(mut buf) return r.r.read(mut buf)
} }
// write writes `buf.len` bytes from `buf` to the underlying
// data stream. It returns the number of bytes written or any error
// encountered.
pub fn (mut r ReaderWriterImpl) write(buf []u8) !int { pub fn (mut r ReaderWriterImpl) write(buf []u8) !int {
return r.w.write(buf) return r.w.write(buf)
} }
// make_readerwriter takes a rstream and a wstream and makes // make_readerwriter takes a rstream and a wstream and makes
// an rwstream with them // an rwstream with them.
pub fn make_readerwriter(r Reader, w Writer) ReaderWriterImpl { pub fn make_readerwriter(r Reader, w Writer) ReaderWriterImpl {
return ReaderWriterImpl{ return ReaderWriterImpl{
r: r r: r

View File

@ -13,7 +13,7 @@ pub struct TempFileOptions {
pattern string pattern string
} }
// temp_file returns an uniquely named, open, writable, `os.File` and it's path // temp_file returns a uniquely named, open, writable, `os.File` and it's path.
pub fn temp_file(tfo TempFileOptions) !(os.File, string) { pub fn temp_file(tfo TempFileOptions) !(os.File, string) {
mut d := tfo.path mut d := tfo.path
if d == '' { if d == '' {
@ -50,7 +50,7 @@ fn error_for_temporary_folder(fn_name string, d string) !string {
return error('${fn_name} could not create temporary directory "${d}". Please ensure you have write permissions for it.') return error('${fn_name} could not create temporary directory "${d}". Please ensure you have write permissions for it.')
} }
// temp_dir returns an uniquely named, writable, directory path // temp_dir returns a uniquely named, writable, directory path.
pub fn temp_dir(tdo TempFileOptions) !string { pub fn temp_dir(tdo TempFileOptions) !string {
mut d := tdo.path mut d := tdo.path
if d == '' { if d == '' {

View File

@ -1,13 +1,14 @@
module io module io
// Writer represents a stream of data that can be written to // Writer is the interface that wraps the `write` method, which
// writes `buf.len` bytes to the underlying data stream.
pub interface Writer { pub interface Writer {
mut: mut:
write(buf []u8) !int write(buf []u8) !int
} }
// RandomWriter represents a stream of data that can be written to // RandomWriter is the interface that wraps the `write_to` method,
// at a random pos // which writes `buf.len` bytes to the underlying data stream at a random `pos`.
pub interface RandomWriter { pub interface RandomWriter {
write_to(pos u64, buf []u8) !int write_to(pos u64, buf []u8) !int
} }