From 71f2e1a502ad231e3356217398e2d7fcd6137967 Mon Sep 17 00:00:00 2001 From: Jordan Gillard Date: Sun, 7 May 2023 03:25:25 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20Enhancing=20CellSeq=20for=20Bett?= =?UTF-8?q?er=20Readability=20and=20Maintainability=20(#21797)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- lib/system/cellseqs_v1.nim | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/system/cellseqs_v1.nim b/lib/system/cellseqs_v1.nim index 1952491b37..1a305aa428 100644 --- a/lib/system/cellseqs_v1.nim +++ b/lib/system/cellseqs_v1.nim @@ -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)