Remove array impl. registry; instead, hard-code array handle creation
authorAndy Wingo <wingo@pobox.com>
Sun, 9 Feb 2014 11:31:59 +0000 (12:31 +0100)
committerAndy Wingo <wingo@pobox.com>
Sun, 9 Feb 2014 11:48:21 +0000 (12:48 +0100)
commitcf64dca65c4ee4d845a73e7d7c15ab7583aff15b
tree690ecc2fd6357077f0e736df9bf4637bce6b0aa6
parent8269f0be18c046d94f01f83dcff80794e97e6c27
Remove array impl. registry; instead, hard-code array handle creation

* libguile/array-handle.h (scm_t_vector_ref, scm_t_vector_set): Rename
  from scm_t_array_ref, scm_t_array_set.  These were named
  scm_i_t_array_ref and scm_i_t_array_set in 1.8 and 2.0.  Change to
  take the vector directly, instead of the array handle.  In this way,
  generic array handles are layered on top of specific implementations
  of backing stores.

  Remove scm_t_array_implementation, introduced in 2.0 but never
  documented.  It was a failed attempt to layer the array implementation
  that actually introduced too many layers, as it prevented the "vref"
  and "vset" members of scm_t_array_handle (called "ref" and "set" in
  1.8, not present in 2.0) from specializing on array backing stores.

  (scm_i_register_array_implementation) (scm_i_array_implementation_for_obj):
  Remove these internal interfaces.

  (scm_t_array_handle): Adapt to scm_t_vector_ref / scm_t_vector_set
  change.

  (scm_array_handle_ref, scm_array_handle_set): Adapt to change in
  vref/vset prototype.

* libguile/array-handle.c (scm_array_get_handle): Inline all the
  necessary initializations here for all specific array types.

* libguile/array-map.c (rafill, racp, ramap, rafe, array_index_map_1):

* libguile/arrays.c: Remove array implementation code.

* libguile/bitvectors.h:
* libguile/bitvectors.c: Remove array implementation code.
  (scm_i_bitvector_bits): New internal interface.

* libguile/bytevectors.c: Remove array implementation code.

* libguile/srfi-4.h: Remove declarations for internal procedures that
  don't exist (!).

* libguile/strings.c: Remove array implementation code.

* libguile/vectors.c: Remove array implementation code.
libguile/array-handle.c
libguile/array-handle.h
libguile/array-map.c
libguile/arrays.c
libguile/bitvectors.c
libguile/bitvectors.h
libguile/bytevectors.c
libguile/srfi-4.h
libguile/strings.c
libguile/vectors.c