Use a TC7 tag instead of a SMOB for bytevectors.
authorLudovic Courtès <ludo@gnu.org>
Sun, 30 Aug 2009 18:12:09 +0000 (20:12 +0200)
committerLudovic Courtès <ludo@gnu.org>
Sun, 30 Aug 2009 18:12:09 +0000 (20:12 +0200)
commit807e5a6641b2aa37ce4198a6c13f1aaebd3a5f25
tree34ef7e574f4b2027e3971406e368e25628d475c0
parentd6097d1d63a269ce960c47f81902aaaf26d46a64
Use a TC7 tag instead of a SMOB for bytevectors.

* libguile/bytevectors.c (scm_tc16_bytevector): Remove.
  (SCM_BYTEVECTOR_SET_LENGTH, SCM_BYTEVECTOR_SET_CONTENTS,
  SCM_BYTEVECTOR_SET_INLINE, SCM_BYTEVECTOR_SET_ELEMENT_TYPE,
  make_bytevector_from_buffer, scm_is_bytevector,
  scm_bootstrap_bytevectors): Adjust to the SMOB->tc7 change.
  (scm_i_print_bytevector): New, formerly `print_bytevector ()'.
  (bytevector_equal_p): Remove.

* libguile/bytevectors.h (SCM_BYTEVECTOR_LENGTH,
  SCM_BYTEVECTOR_CONTENTS, SCM_BYTEVECTOR_P): Adjust to SMOB->tc7
  change.
  (SCM_BYTEVECTOR_FLAGS, SCM_SET_BYTEVECTOR_FLAGS): New macros.
  (scm_tc16_bytevector): Remove declaration.
  (scm_i_print_bytevector): New declaration.

* libguile/eq.c (scm_equal_p): Handle `scm_tc7_bytevector'.

* libguile/evalext.c (scm_self_evaluating_p): Likewise.

* libguile/print.c (iprin1): Likewise.

* libguile/tags.h (scm_tc7_bytevector): New.
  (scm_tc7_unused_8): Remove.

* libguile/validate.h (SCM_VALIDATE_BYTEVECTOR): Adjust.

* test-suite/tests/bytevectors.test ("Datum
  Syntax")["self-evaluating?"]: New test.
libguile/bytevectors.c
libguile/bytevectors.h
libguile/eq.c
libguile/evalext.c
libguile/print.c
libguile/tags.h
libguile/validate.h
test-suite/tests/bytevectors.test