Always create the bytevector SMOB type.
authorLudovic Courtès <ludo@gnu.org>
Sun, 21 Jun 2009 22:56:00 +0000 (00:56 +0200)
committerLudovic Courtès <ludo@gnu.org>
Sun, 21 Jun 2009 23:11:10 +0000 (01:11 +0200)
commitcfb4702f5886f2df197521cc47b6ca86547b165e
tree1b5d551ff85b62be4c22a3b034bbb90a01a9ae28
parent438974d08dcb96a01fe62ea9b0446b8420e703c4
Always create the bytevector SMOB type.

* libguile/bytevectors.c (scm_tc16_bytevector, print_bytevector,
  bytevector_equal_p, free_bytevector): Don't use the snarfing macros.
  (scm_bootstrap_bytevectors): New.
  (scm_init_bytevectors): No longer initialize SCM_NULL_BYTEVECTOR,
  which is done by `scm_bootstrap_bytevectors ()'.

* libguile/bytevectors.h (scm_bootstrap_bytevectors): New declaration.
  (scm_init_bytevectors): Made internal.  This can be done because we
  explicitly register it with `scm_c_register_extension ()' in
  `scm_bootstrap_bytevectors ()'.

* libguile/init.c (scm_i_init_guile): Call `scm_bootstrap_bytevectors ()'.
  This is so that expressions like "(generalized-vector-length #vu8())"
  work even when `(rnrs bytevector)' hasn't been loaded.
libguile/bytevectors.c
libguile/bytevectors.h
libguile/init.c