[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: SRFI-4 in Guile 1.7
From: |
Marius Vollmer |
Subject: |
Re: SRFI-4 in Guile 1.7 |
Date: |
Wed, 23 Mar 2005 12:21:52 +0100 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/21.3.50 (gnu/linux) |
address@hidden (Ludovic Courtès) writes:
> Can one expect the increment returned by `scm_TAGvector_elements ()' to
> always be 1 when TAG is `u8', 2 when TAG is `u16', and so on?
No, you can't. The increment gives the number of _elements_ between
the real elements of the vector in memory, not the number of _bytes_.
Very nearly all vectors will have an increment of 1, but not all. See
"Shared Arrays" in the manual: shared arrays of rank one are vectors,
but they don't need to be stored contiguously in memory.
For example, the diagonal of a 3x3 matrix is a vector, and to go from
one element of this vector to the next, you need to skip 4 elements in
memory (one full row of the matrix plus one more). Such a vector has
an increment of 4.
The size of an element in a uniform numeric vector can be retrieved
with scm_array_handle_uniform_element_size, if you need it.
> I have this impression, although I couldn't find proofs in the
> source code.
Maybe we could improve the manual. Do you have a suggestion?
--
GPG: D5D4E405 - 2F9B BCCC 8527 692A 04E3 331E FAF8 226A D5D4 E405