🚀 Enhancing CellSeq for Better Readability and Maintainability (#21797)

Refactor and improve readability of CellSeq in system directory

* Use half-open range in the contains procedure for better readability and to avoid potential off-by-one errors
* Extract resizing logic from add procedure into a separate resize procedure for better code readability and separation of concerns
This commit is contained in:
Jordan Gillard
2023-05-07 03:25:25 -04:00
committed by GitHub
parent 4a94f3606e
commit 71f2e1a502

View File

@@ -16,18 +16,21 @@ type
d: PCellArray
proc contains(s: CellSeq, c: PCell): bool {.inline.} =
for i in 0 .. s.len-1:
if s.d[i] == c: return true
for i in 0 ..< s.len:
if s.d[i] == c:
return true
return false
proc resize(s: var CellSeq) =
s.cap = s.cap * 3 div 2
let d = cast[PCellArray](alloc(s.cap * sizeof(PCell)))
copyMem(d, s.d, s.len * sizeof(PCell))
dealloc(s.d)
s.d = d
proc add(s: var CellSeq, c: PCell) {.inline.} =
if s.len >= s.cap:
s.cap = s.cap * 3 div 2
var d = cast[PCellArray](alloc(s.cap * sizeof(PCell)))
copyMem(d, s.d, s.len * sizeof(PCell))
dealloc(s.d)
s.d = d
# XXX: realloc?
resize(s)
s.d[s.len] = c
inc(s.len)