1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

Add stringbuf printer

* libguile/strings.h:
* libguile/strings.c (scm_i_print_stringbuf):
* libguile/print.c (iprin1): Add a printer for stringbufs.  The
  disassembler can print a stringbuf.
This commit is contained in:
Andy Wingo 2013-10-24 10:19:07 +02:00
parent 0f676d8725
commit db07176665
3 changed files with 22 additions and 0 deletions

View file

@ -261,6 +261,23 @@ scm_i_pthread_mutex_t stringbuf_write_mutex = SCM_I_PTHREAD_MUTEX_INITIALIZER;
#define IS_SH_STRING(str) (SCM_CELL_TYPE(str)==SH_STRING_TAG)
void
scm_i_print_stringbuf (SCM exp, SCM port, scm_print_state *pstate)
{
SCM str;
scm_i_pthread_mutex_lock (&stringbuf_write_mutex);
SET_STRINGBUF_SHARED (exp);
scm_i_pthread_mutex_unlock (&stringbuf_write_mutex);
str = scm_double_cell (RO_STRING_TAG, SCM_UNPACK(exp),
0, STRINGBUF_LENGTH (exp));
scm_puts ("#<stringbuf ", port);
scm_iprin1 (str, port, pstate);
scm_puts (">", port);
}
SCM scm_nullstr;
/* Create a scheme string with space for LEN 8-bit Latin-1-encoded