mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-09 21:40:33 +02:00
Add lenp parameter back to scm_vector_(writable_)elements
Also fix uses.
This commit is contained in:
parent
04c80519bf
commit
bf5b9a86bc
5 changed files with 17 additions and 14 deletions
|
@ -32,12 +32,11 @@ calls.
|
||||||
|
|
||||||
Use SCM_VECTOR_REF, SCM_VECTOR_SET and SCM_VECTOR_LENGTH instead.
|
Use SCM_VECTOR_REF, SCM_VECTOR_SET and SCM_VECTOR_LENGTH instead.
|
||||||
|
|
||||||
** scm_vector_elements / scm_vector_writable_elements take a single argument that must be a vector.
|
** The vector argument to scm_vector_elements / scm_vector_writable_elements must be a true vector. Handle/inc arguments have been removed.
|
||||||
|
|
||||||
Use scm_array_get_handle and scm_array_handle_elements / scm_array_handle_writable_elements on general arrays.
|
Use scm_array_get_handle and scm_array_handle_elements / scm_array_handle_writable_elements on general arrays.
|
||||||
Use scm_c_vector_length to get the length of a vector.
|
|
||||||
|
|
||||||
** scm_bitvector_elements / scm_bitvector_writable_elements take a single argument that must be a bitvector
|
** The vector argument to scm_bitvector_elements / scm_bitvector_writable_elements must be a true bitvector. Handle/inc arguments have been removed.
|
||||||
|
|
||||||
Use scm_array_get_handle and scm_array_handle_bit_elements / scm_array_handle_bit_writable_elements on bit arrays.
|
Use scm_array_get_handle and scm_array_handle_bit_elements / scm_array_handle_bit_writable_elements on bit arrays.
|
||||||
Use scm_array1_bit_elements (NEW) / scm_array1_bit_writable_elements (NEW) on rank-1 bit arrays.
|
Use scm_array1_bit_elements (NEW) / scm_array1_bit_writable_elements (NEW) on rank-1 bit arrays.
|
||||||
|
|
|
@ -6441,7 +6441,7 @@ Sets the element at position @var{idx} in the vector @var{vec} to
|
||||||
@var{val}. No type or range checking is done.
|
@var{val}. No type or range checking is done.
|
||||||
@end deftypefn
|
@end deftypefn
|
||||||
|
|
||||||
@deftypefn {C Function} {const SCM *} scm_vector_elements (SCM vec)
|
@deftypefn {C Function} {const SCM *} scm_vector_elements (SCM vec, size_t *lenp)
|
||||||
Return a pointer to the elements of @var{vec}. This pointer can only be
|
Return a pointer to the elements of @var{vec}. This pointer can only be
|
||||||
used to read the elements of @var{vec}. When @var{vec} is not a vector,
|
used to read the elements of @var{vec}. When @var{vec} is not a vector,
|
||||||
an error is signaled.
|
an error is signaled.
|
||||||
|
@ -6452,8 +6452,8 @@ The following example shows the typical way to use this function. It
|
||||||
creates a list of all elements of @var{vec} (in reverse order).
|
creates a list of all elements of @var{vec} (in reverse order).
|
||||||
|
|
||||||
@example
|
@example
|
||||||
size_t len = scm_c_vector_length (vec);
|
size_t len;
|
||||||
const SCM *elt = scm_vector_elements (vec);
|
const SCM *elt = scm_vector_elements (vec, &len);
|
||||||
|
|
||||||
SCM list = SCM_EOL;
|
SCM list = SCM_EOL;
|
||||||
for (size_t i = 0; i < len; ++i)
|
for (size_t i = 0; i < len; ++i)
|
||||||
|
@ -6462,7 +6462,7 @@ for (size_t i = 0; i < len; ++i)
|
||||||
|
|
||||||
@end deftypefn
|
@end deftypefn
|
||||||
|
|
||||||
@deftypefn {C Function} {SCM *} scm_vector_writable_elements (SCM vec, scm_t_array_handle *handle, size_t *lenp, ssize_t *incp)
|
@deftypefn {C Function} {SCM *} scm_vector_writable_elements (SCM vec, size_t *lenp)
|
||||||
Like @code{scm_vector_elements} but the pointer can be used to modify
|
Like @code{scm_vector_elements} but the pointer can be used to modify
|
||||||
the vector.
|
the vector.
|
||||||
|
|
||||||
|
@ -6472,8 +6472,8 @@ The following example shows the typical way to use this function. It
|
||||||
fills a vector with @code{#t} (but see @code{vector-fill!}).
|
fills a vector with @code{#t} (but see @code{vector-fill!}).
|
||||||
|
|
||||||
@example
|
@example
|
||||||
size_t len = scm_c_vector_length (vec);
|
size_t len;
|
||||||
SCM *elt = scm_vector_writable_elements (vec);
|
SCM *elt = scm_vector_writable_elements (vec, &len);
|
||||||
|
|
||||||
for (size_t i = 0; i < len; ++i)
|
for (size_t i = 0; i < len; ++i)
|
||||||
elt[i] = SCM_BOOL_T;
|
elt[i] = SCM_BOOL_T;
|
||||||
|
|
|
@ -577,7 +577,7 @@ SCM_DEFINE (scm_stable_sort_x, "stable-sort!", 2, 0, 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
SCM temp = scm_c_make_vector (len, SCM_UNDEFINED);
|
SCM temp = scm_c_make_vector (len, SCM_UNDEFINED);
|
||||||
SCM *temp_elts = scm_vector_writable_elements (temp);
|
SCM *temp_elts = scm_vector_writable_elements (temp, NULL);
|
||||||
|
|
||||||
scm_merge_vector_step (vec_elts, temp_elts, less, 0, len-1, inc);
|
scm_merge_vector_step (vec_elts, temp_elts, less, 0, len-1, inc);
|
||||||
|
|
||||||
|
|
|
@ -56,19 +56,23 @@ scm_is_vector (SCM obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
const SCM *
|
const SCM *
|
||||||
scm_vector_elements (SCM vec)
|
scm_vector_elements (SCM vec, size_t *lenp)
|
||||||
#define FUNC_NAME "scm_vector_elements"
|
#define FUNC_NAME "scm_vector_elements"
|
||||||
{
|
{
|
||||||
SCM_VALIDATE_VECTOR (1, vec);
|
SCM_VALIDATE_VECTOR (1, vec);
|
||||||
|
if (lenp)
|
||||||
|
*lenp = SCM_I_VECTOR_LENGTH (vec);
|
||||||
return SCM_I_VECTOR_ELTS (vec);
|
return SCM_I_VECTOR_ELTS (vec);
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
|
||||||
SCM *
|
SCM *
|
||||||
scm_vector_writable_elements (SCM vec)
|
scm_vector_writable_elements (SCM vec, size_t *lenp)
|
||||||
#define FUNC_NAME "scm_vector_writable_elements"
|
#define FUNC_NAME "scm_vector_writable_elements"
|
||||||
{
|
{
|
||||||
SCM_VALIDATE_MUTABLE_VECTOR (1, vec);
|
SCM_VALIDATE_MUTABLE_VECTOR (1, vec);
|
||||||
|
if (lenp)
|
||||||
|
*lenp = SCM_I_VECTOR_LENGTH (vec);
|
||||||
return SCM_I_VECTOR_WELTS (vec);
|
return SCM_I_VECTOR_WELTS (vec);
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
|
|
@ -47,8 +47,8 @@ SCM_API SCM scm_c_make_vector (size_t len, SCM fill);
|
||||||
SCM_API size_t scm_c_vector_length (SCM vec);
|
SCM_API size_t scm_c_vector_length (SCM vec);
|
||||||
SCM_API SCM scm_c_vector_ref (SCM vec, size_t k);
|
SCM_API SCM scm_c_vector_ref (SCM vec, size_t k);
|
||||||
SCM_API void scm_c_vector_set_x (SCM vec, size_t k, SCM obj);
|
SCM_API void scm_c_vector_set_x (SCM vec, size_t k, SCM obj);
|
||||||
SCM_API const SCM *scm_vector_elements (SCM vec);
|
SCM_API const SCM *scm_vector_elements (SCM vec, size_t *lenp);
|
||||||
SCM_API SCM *scm_vector_writable_elements (SCM vec);
|
SCM_API SCM *scm_vector_writable_elements (SCM vec, size_t *lenp);
|
||||||
|
|
||||||
#define SCM_VALIDATE_VECTOR(pos, v) \
|
#define SCM_VALIDATE_VECTOR(pos, v) \
|
||||||
do { \
|
do { \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue