You are looking at historical revision 31597 of this page. It may differ significantly from its current revision.

chunk-vector

Description

A dyn-vector like library capable of storing other srfi-4 vectors inside a dense array.

Author

Richard van Roy (pluizer)

Requirements

none

Documentation

Procedures

[procedure] (make-f32chunk-vector size [size-hint])
[procedure] (make-f64chunk-vector size [size-hint])
[procedure] (make-s8chunk-vector size [size-hint])
[procedure] (make-s16chunk-vector size [size-hint])
[procedure] (make-s32chunk-vector size [size-hint])
[procedure] (make-u8chunk-vector size [size-hint])
[procedure] (make-u16chunk-vector size [size-hint])
[procedure] (make-u32chunk-vector size [size-hint])

Create a new chunk vector with a chunk-size of /size/.

[procedure] (f32vector-remove! vector index)
[procedure] (f64vector-remove! vector index)
[procedure] (s8vector-remove! vector index)
[procedure] (s16vector-remove! vector index)
[procedure] (s32vector-remove! vector index)
[procedure] (u8vector-remove! vector index)
[procedure] (u16vector-remove! vector index)
[procedure] (u32vector-remove! vector index)

Removes a chunk from the vector using its /index/.

[procedure] (f32vector-set! vectror index value)
[procedure] (f64vector-set! vectror index value)
[procedure] (s8vector-set! vectror index value)
[procedure] (s16vector-set! vectror index value)
[procedure] (s32vector-set! vectror index value)
[procedure] (u8vector-set! vectror index value)
[procedure] (u16vector-set! vectror index value)
[procedure] (u32vector-set! vectror index value)

Changed the value of a chunk using its /index/.

[procedure] (f32vector-push! vector value)
[procedure] (f64vector-push! vector value)
[procedure] (s8vector-push! vector value)
[procedure] (s16vector-push! vector value)
[procedure] (s32vector-push! vector value)
[procedure] (u8vector-push! vector value)
[procedure] (u16vector-push! vector value)
[procedure] (u32vector-push! vector value)

Pushes a new chunk to the vector.

[procedure] (f32vector-ref vector index)
[procedure] (f64vector-ref vector index)
[procedure] (s8vector-ref vector index)
[procedure] (s16vector-ref vector index)
[procedure] (s32vector-ref vector index)
[procedure] (u8vector-ref vector index)
[procedure] (u16vector-ref vector index)
[procedure] (u32vector-ref vector index)

Returns the data at /index/.

[procedure] (f32vector-length vector)
[procedure] (f64vector-length vector)
[procedure] (s8vector-length vector)
[procedure] (s16vector-length vector)
[procedure] (s32vector-length vector)
[procedure] (u8vector-length vector)
[procedure] (u16vector-length vector)
[procedure] (u32vector-length vector)

Returns the number of chunks in the vector.

[procedure] (f32vector->pointer vector)
[procedure] (f64vector->pointer vector)
[procedure] (s8vector->pointer vector)
[procedure] (s16vector->pointer vector)
[procedure] (s32vector->pointer vector)
[procedure] (u8vector->pointer vector)
[procedure] (u16vector->pointer vector)
[procedure] (u32vector->pointer vector)

Returns a pointer to the dense foreign array where the data is stored.

Example

(use chunk-vector)

;; Create a chunk-vector that holds f32vectors with the size of 2.
(define v (make-f32chunk-vector 2))

(define index-a (f32chunk-vector-push! v (f32vector 1 2)))

(define index-b (f32chunk-vector-push! v (f32vector 3 4)))

(define index-c (f32chunk-vector-push! v (f32vector 7 8)))

(f32chunk-vector-remove! v index-c)

(f32chunk-vector-set! v index-b (f32vector 0 0))

(print (f32chunk-vector-ref v index-a)) ; => #f32(1.0 2.0)

(print (f32chunk-vector-ref v index-b)) ; => #f32(0.0 0.0)

(print (f32chunk-vector-ref v index-c)) ; undefined