io
buffered

buffered

Mojo module 🡭

buffered

Buffered reading and writing.

Examples

BufferedReader:

from testing import assert_equal
from extramojo.io.buffered import BufferedReader

fn test_read_until(file: String, expected_lines: List[String]) raises:
    var buffer_capacities = List(10, 100, 200, 500)
    for cap in buffer_capacities:
        var fh = open(file, "r")
        var reader = BufferedReader(fh^, buffer_capacity=cap)
        var buffer = List[UInt8]()
        var counter = 0
        while reader.read_until(buffer) != 0:
            assert_equal(List(expected_lines[counter].as_bytes()), buffer)
            counter += 1
            buffer.clear()
        assert_equal(counter, len(expected_lines))
        print(String("Successful read_until with buffer capacity of {}").format(cap))

BufferedWriter:

from extramojo.io.buffered import BufferedWriter

fn test_buffered_writer(file: String, expected_lines: List[String]) raises:
    var fh = BufferedWriter(open(String(file), "w"), buffer_capacity=128)
    for i in range(len(expected_lines)):
        fh.write_bytes(expected_lines[i].as_bytes())
        fh.write_bytes("
".as_bytes())
    fh.flush()
    fh.close()

    test_read_until(String(file), expected_lines)

Aliases

  • NEW_LINE = 10
  • SIMD_U8_WIDTH = simdwidthof[::DType,__mlir_type.!kgen.target]()
  • BUF_SIZE = 131072

Structs

Functions