diff options
author | Marius Vollmer <mvo@zagadka.de> | 2005-01-02 20:06:08 +0000 |
---|---|---|
committer | Marius Vollmer <mvo@zagadka.de> | 2005-01-02 20:06:08 +0000 |
commit | 6e708ef2b1897c3ea4d5ac47720974078d50e9e4 (patch) | |
tree | 3dde367b768213b4693cc586b2adf23074f15667 /libguile/unif.h | |
parent | 9c6e33c62acc203792053b6d5a579bdc22827eec (diff) | |
download | guile-6e708ef2b1897c3ea4d5ac47720974078d50e9e4.tar.gz |
* weaks.c: Use new vector elements API or simple vector
API, as appropriate.
* srfi-4.h, srfi-4.c, srfi-4.i.c (scm_array_handle_uniform_elements,
scm_array_handle_uniform_writable_elements,
scm_uniform_vector_elements, scm_uniform_vector_writable_elements):
(scm_<foo>vector_elements, scm_<foo>vector_writable_elements): Use
scm_t_array_handle, deliver length and increment.
(scm_array_handle_<foo>_elements,
scm_array_handle_<foo>_writable_elements): New.
* unif.h, unif.c (scm_t_array_handle, scm_array_get_handle,
scm_array_handle_rank, scm_array_handle_dims, scm_array_handle_ref
scm_array_handle_set, scm_array_handle_elements
scm_array_handle_writable_elements, scm_vector_get_handle): New.
(scm_make_uve, scm_array_prototype, scm_list_to_uniform_array,
scm_dimensions_to_uniform_array): Deprecated for real. (scm_array_p,
scm_i_array_p): Use latter for SCM_DEFINE since snarfing wont allow a
mismatch between C and Scheme arglists. (scm_make_shared_array,
scm_enclose_array): Correctly use scm_c_generalized_vector_length
instead of scm_uniform_vector_length.
* weaks.h, weaks.c: Use new internal weak vector API from
vectors.h.
* Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES,
EXTRA_libguile_la_SOURCES): Changed ramap.c and unif.c from being
'extra' to being regular sources.
(noinst_HEADERS): Added quicksort.i.c.
* quicksort.i.c: New file.
* vectors.h, vector.c (SCM_VECTORP, SCM_VECTOR_LENGTH, SCM_VELTS,
SCM_WRITABLE_VELTS, SCM_VECTOR_REF, SCM_VECTOR_SET): Deprecated and
reimplemented. Replaced all uses with scm_vector_elements,
scm_vector_writable_elements, or SCM_SIMPLE_VECTOR_*, as appropriate.
(scm_is_simple_vector, SCM_SIMPLE_VECTOR_LENGTH,
SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET, SCM_SIMPLE_VECTOR_LOC):
New. (SCM_VECTOR_BASE, SCM_SET_VECTOR_BASE, SCM_VECTOR_MAX_LENGTH,
SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH, SCM_VELTS_AS_STACKITEMS,
SCM_SETVELTS, SCM_GC_WRITABLE_VELTS): Removed. (scm_vector_copy):
New. (scm_vector_elements, scm_vector_writable_elements): Use
scm_t_array_handle, deliver length and increment. Moved to
unif.h. Changed all uses. (scm_vector_release_elements,
scm_vector_release_writable_elements,
(scm_frame_vector_release_elements,
scm_frame_vector_release_writable_elements): Removed.
(SCM_I_IS_VECTOR, SCM_I_VECTOR_ELTS, SCM_I_VECTOR_WELTS,
SCM_I_VECTOR_LENGTH, scm_i_vector_free): New internal API.
(SCM_I_WVECTP SCM_I_WVECT_LENGTH SCM_I_WVECT_VELTS
SCM_I_WVECT_GC_WVELTS SCM_I_WVECT_TYPE SCM_I_WVECT_GC_CHAIN
SCM_I_SET_WVECT_GC_CHAIN, scm_i_allocate_weak_vector): New, for weak
vectors.
Diffstat (limited to 'libguile/unif.h')
-rw-r--r-- | libguile/unif.h | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/libguile/unif.h b/libguile/unif.h index 83325f7d6..1a0073f21 100644 --- a/libguile/unif.h +++ b/libguile/unif.h @@ -105,6 +105,29 @@ SCM_API int scm_is_typed_array (SCM obj, SCM type); SCM_API SCM scm_i_read_array (SCM port, int c); +typedef struct { + SCM array; + size_t base; + scm_t_array_dim *dims; + scm_t_array_dim dim0; +} scm_t_array_handle; + +SCM_API void scm_array_get_handle (SCM array, scm_t_array_handle *h); +SCM_API size_t scm_array_handle_rank (scm_t_array_handle *h); +SCM_API scm_t_array_dim *scm_array_handle_dims (scm_t_array_handle *h); +SCM_API SCM scm_array_handle_ref (scm_t_array_handle *h, size_t pos); +SCM_API void scm_array_handle_set (scm_t_array_handle *h, size_t pos, SCM val); +SCM_API const SCM *scm_array_handle_elements (scm_t_array_handle *h); +SCM_API SCM *scm_array_handle_writable_elements (scm_t_array_handle *h); + +SCM_API void scm_vector_get_handle (SCM vec, scm_t_array_handle *h); +SCM_API const SCM *scm_vector_elements (SCM vec, + scm_t_array_handle *h, + size_t *lenp, ssize_t *incp); +SCM_API SCM *scm_vector_writable_elements (SCM vec, + scm_t_array_handle *h, + size_t *lenp, ssize_t *incp); + /** Bit vectors */ @@ -138,17 +161,22 @@ SCM_API void scm_frame_bitvector_release_writable_elements (SCM vec); /* deprecated. */ +#if SCM_ENABLE_DEPRECATED + SCM_API SCM scm_make_uve (long k, SCM prot); +SCM_API SCM scm_array_prototype (SCM ra); +SCM_API SCM scm_list_to_uniform_array (SCM ndim, SCM prot, SCM lst); +SCM_API SCM scm_dimensions_to_uniform_array (SCM dims, SCM prot, SCM fill); + +#endif + SCM_API SCM scm_make_ra (int ndim); SCM_API void scm_ra_set_contp (SCM ra); SCM_API SCM scm_cvref (SCM v, unsigned long pos, SCM last); SCM_API SCM scm_istr2bve (SCM str); SCM_API int scm_raprin1 (SCM exp, SCM port, scm_print_state *pstate); -SCM_API SCM scm_array_prototype (SCM ra); -SCM_API SCM scm_list_to_uniform_array (SCM ndim, SCM prot, SCM lst); SCM_API long scm_aind (SCM ra, SCM args, const char *what); SCM_API SCM scm_shap2ra (SCM args, const char *what); -SCM_API SCM scm_dimensions_to_uniform_array (SCM dims, SCM prot, SCM fill); SCM_API SCM scm_ra2contig (SCM ra, int copy); SCM_API SCM scm_i_cvref (SCM v, size_t p, int enclosed); |