Skip to content
  • Andy Wingo's avatar
    Remove array impl. registry; instead, hard-code array handle creation · cf64dca6
    Andy Wingo authored
    * 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.
    cf64dca6