From 1abc51cccbe62a4f0e7e13eeb51cfa3aaa9aa542 Mon Sep 17 00:00:00 2001 From: bptato Date: Tue, 14 Jan 2025 18:24:10 +0100 Subject: More strict defs --- src/io/bufreader.nim | 60 +++++++++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/io/bufreader.nim b/src/io/bufreader.nim index 86ed1aed..203a2e52 100644 --- a/src/io/bufreader.nim +++ b/src/io/bufreader.nim @@ -10,19 +10,19 @@ type BufferedReader* = object bufIdx: int recvAux*: seq[cint] #TODO assert on unused ones -proc sread*(reader: var BufferedReader; n: var SomeNumber) -proc sread*[T](reader: var BufferedReader; s: var set[T]) -proc sread*[T: enum](reader: var BufferedReader; x: var T) -proc sread*(reader: var BufferedReader; s: var string) -proc sread*(reader: var BufferedReader; b: var bool) +proc sread*(reader: var BufferedReader; n: out SomeNumber) +proc sread*[T](reader: var BufferedReader; s: out set[T]) +proc sread*[T: enum](reader: var BufferedReader; x: out T) +proc sread*(reader: var BufferedReader; s: out string) +proc sread*(reader: var BufferedReader; b: out bool) proc sread*(reader: var BufferedReader; tup: var tuple) -proc sread*[I, T](reader: var BufferedReader; a: var array[I, T]) -proc sread*(reader: var BufferedReader; s: var seq) -proc sread*[U, V](reader: var BufferedReader; t: var Table[U, V]) +proc sread*[I, T](reader: var BufferedReader; a: out array[I, T]) +proc sread*[T](reader: var BufferedReader; s: out seq[T]) +proc sread*[U, V](reader: var BufferedReader; t: out Table[U, V]) proc sread*(reader: var BufferedReader; obj: var object) proc sread*(reader: var BufferedReader; obj: var ref object) -proc sread*[T](reader: var BufferedReader; o: var Option[T]) -proc sread*[T, E](reader: var BufferedReader; o: var Result[T, E]) +proc sread*[T](reader: var BufferedReader; o: out Option[T]) +proc sread*[T, E](reader: var BufferedReader; o: out Result[T, E]) proc sread*(reader: var BufferedReader; c: var ARGBColor) proc sread*(reader: var BufferedReader; c: var CellColor) @@ -57,30 +57,32 @@ proc readData*(reader: var BufferedReader; buffer: pointer; len: int) = copyMem(buffer, addr reader.buffer[reader.bufIdx], len) reader.bufIdx += len -proc sread*(reader: var BufferedReader; n: var SomeNumber) = +proc sread*(reader: var BufferedReader; n: out SomeNumber) = + n = 0 reader.readData(addr n, sizeof(n)) -proc sread*[T: enum](reader: var BufferedReader; x: var T) = - var i: int +proc sread*[T: enum](reader: var BufferedReader; x: out T) = + var i {.noinit.}: int reader.sread(i) x = cast[T](i) -proc sread*[T](reader: var BufferedReader; s: var set[T]) = - var len: int +proc sread*[T](reader: var BufferedReader; s: out set[T]) = + var len {.noinit.}: int reader.sread(len) + s = {} for i in 0 ..< len: var x: T reader.sread(x) s.incl(x) -proc sread*(reader: var BufferedReader; s: var string) = - var len: int +proc sread*(reader: var BufferedReader; s: out string) = + var len {.noinit.}: int reader.sread(len) s = newString(len) if len > 0: reader.readData(addr s[0], len) -proc sread*(reader: var BufferedReader; b: var bool) = +proc sread*(reader: var BufferedReader; b: out bool) = var n: uint8 reader.sread(n) if n == 1u8: @@ -93,20 +95,21 @@ proc sread*(reader: var BufferedReader; tup: var tuple) = for f in tup.fields: reader.sread(f) -proc sread*[I; T](reader: var BufferedReader; a: var array[I, T]) = +proc sread*[I; T](reader: var BufferedReader; a: out array[I, T]) = for x in a.mitems: reader.sread(x) -proc sread*(reader: var BufferedReader; s: var seq) = - var len: int +proc sread*[T](reader: var BufferedReader; s: out seq[T]) = + var len {.noinit.}: int reader.sread(len) - s.setLen(len) + s = newSeq[T](len) for x in s.mitems: reader.sread(x) -proc sread*[U; V](reader: var BufferedReader; t: var Table[U, V]) = - var len: int +proc sread*[U; V](reader: var BufferedReader; t: out Table[U, V]) = + var len {.noinit.}: int reader.sread(len) + t = initTable[U, V](len) for i in 0..