vec.scm update

This commit is contained in:
tocariimaa 2025-03-05 13:06:44 -03:00
parent 3a46a24b2f
commit 7f13522351

View file

@ -35,6 +35,9 @@
(define (dynvec-length dvec)
(car dvec))
(define (dynvec-cap dvec)
(vector-length (cdr dvec)))
(define (dynvec-ref dvec i)
(vector-ref (cdr dvec) i))
@ -44,12 +47,19 @@
(define (dynvec-vec dvec)
(cdr dvec))
(define (dynvec-resize! dvec newcap)
(let ((nvec (make-vector newcap)))
(do ((i 0 (+ i 1))) ((= i 0)))))
;;; Appends elements to a dynamic vector, resizing if needed.
(define (dynvec-append! dvec . args)
(let ((i (dynvec-length dvec)))
(let ((i (dynvec-length dvec)) (cap (dynvec-cap dvec)))
(for-each
(lambda (v)
(vector-set! (dynvec-vec dvec) i v)
(set! i (+ i 1)))
(set! i (+ i 1))
(if (= i cap)
(dynvec-resize! dvec (* dvec 2))))
args)
(set-car! dvec i)))