vec.scm update
This commit is contained in:
parent
3a46a24b2f
commit
7f13522351
1 changed files with 12 additions and 2 deletions
|
@ -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)))
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue