add generic array implementation facility
authorAndy Wingo <wingo@pobox.com>
Sun, 19 Jul 2009 13:04:40 +0000 (15:04 +0200)
committerAndy Wingo <wingo@pobox.com>
Sun, 19 Jul 2009 13:15:40 +0000 (15:15 +0200)
commit2a610be59412a9d633a373c6f6ec4d4794c40fd8
treeeef959741b074fabac5456d1b0c6b9eaa80194f3
parent2fa901a51f62da8a01112aefbf687530f4bff160
add generic array implementation facility

* libguile/array-handle.c (scm_i_register_array_implementation):
  (scm_i_array_implementation_for_obj): Add generic array facility,
  which will (in a few commits) detangle the array code.
  (scm_array_get_handle): Use the generic array facility. Note that
  scm_t_array_handle no longer has ref and set function pointers;
  instead it has a pointer to the array implementation. It is unlikely
  that code out there used these functions, however, as the supported
  way was through scm_array_handle_ref/set_x.
  (scm_array_handle_pos): Move this function here from arrays.c.
  (scm_array_handle_element_type): New function, returns a Scheme value
  representing the type of element stored in this array.

* libguile/array-handle.h (scm_t_array_element_type): New enum, for
  generically determining the type of an array.
  (scm_array_handle_rank):
  (scm_array_handle_dims): These are now just #defines.

* libguile/arrays.c:
* libguile/bitvectors.c:
* libguile/bytevectors.c:
* libguile/srfi-4.c:
* libguile/strings.c:
* libguile/vectors.c: Register array implementations for all of these.

* libguile/inline.h: Update for array_handle_ref/set change.
* libguile/deprecated.h: Need to include arrays.h now.
12 files changed:
libguile/array-handle.c
libguile/array-handle.h
libguile/arrays.c
libguile/bitvectors.c
libguile/bytevectors.c
libguile/deprecated.h
libguile/inline.h
libguile/srfi-4.c
libguile/srfi-4.i.c
libguile/strings.c
libguile/vectors.c
test-suite/tests/unif.test