diff options
-rw-r--r-- | libguile/eval.c | 23 | ||||
-rw-r--r-- | libguile/numbers.c | 12 | ||||
-rw-r--r-- | libguile/numbers.h | 5 | ||||
-rw-r--r-- | libguile/smob.h | 3 | ||||
-rw-r--r-- | libguile/srcprop.c | 12 | ||||
-rw-r--r-- | libguile/unif.h | 3 |
6 files changed, 36 insertions, 22 deletions
diff --git a/libguile/eval.c b/libguile/eval.c index 5acfcedfe..898642c3c 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -68,6 +68,7 @@ #include "procprop.h" #include "hashtab.h" #include "hash.h" +#include "print.h" #ifdef DEBUG_EXTENSIONS #include "debug.h" @@ -2772,17 +2773,20 @@ scm_makprom (code) #ifdef __STDC__ static int -prinprom (SCM exp, SCM port, int writing) +prinprom (SCM exp, SCM port, scm_print_state *pstate) #else static int -prinprom (exp, port, writing) +prinprom (exp, port, pstate) SCM exp; SCM port; - int writing; + scm_print_state *pstate; #endif { + int writingp = SCM_WRITINGP (pstate); scm_gen_puts (scm_regular_string, "#<promise ", port); - scm_iprin1 (SCM_CDR (exp), port, writing); + SCM_SET_WRITINGP (pstate, 1); + scm_iprin1 (SCM_CDR (exp), port, pstate); + SCM_SET_WRITINGP (pstate, writingp); scm_gen_putc ('>', port); return !0; } @@ -2844,15 +2848,16 @@ scm_makmmacro (code) #ifdef __STDC__ static int -prinmacro (SCM exp, SCM port, int writing) +prinmacro (SCM exp, SCM port, scm_print_state *pstate) #else static int -prinmacro (exp, port, writing) +prinmacro (exp, port, pstate) SCM exp; SCM port; - int writing; + scm_print_state *pstate; #endif { + int writingp = SCM_WRITINGP (pstate); if (SCM_CAR (exp) & (3L << 16)) scm_gen_puts (scm_regular_string, "#<macro", port); else @@ -2860,7 +2865,9 @@ prinmacro (exp, port, writing) if (SCM_CAR (exp) & (2L << 16)) scm_gen_putc ('!', port); scm_gen_putc (' ', port); - scm_iprin1 (SCM_CDR (exp), port, writing); + SCM_SET_WRITINGP (pstate, 1); + scm_iprin1 (SCM_CDR (exp), port, pstate); + SCM_SET_WRITINGP (pstate, writingp); scm_gen_putc ('>', port); return !0; } diff --git a/libguile/numbers.c b/libguile/numbers.c index bf3d6387f..22029358b 100644 --- a/libguile/numbers.c +++ b/libguile/numbers.c @@ -1581,13 +1581,13 @@ scm_number_to_string(x, radix) SCM_FLOATS or SCM_BIGDIGs conditionals */ #ifdef __STDC__ int -scm_floprint(SCM sexp, SCM port, int writing) +scm_floprint(SCM sexp, SCM port, scm_print_state *pstate) #else int -scm_floprint(sexp, port, writing) +scm_floprint(sexp, port, pstate) SCM sexp; SCM port; - int writing; + scm_print_state *pstate; #endif { #ifdef SCM_FLOATS @@ -1602,13 +1602,13 @@ scm_floprint(sexp, port, writing) #ifdef __STDC__ int -scm_bigprint(SCM exp, SCM port, int writing) +scm_bigprint(SCM exp, SCM port, scm_print_state *pstate) #else int -scm_bigprint(exp, port, writing) +scm_bigprint(exp, port, pstate) SCM exp; SCM port; - int writing; + scm_print_state *pstate; #endif { #ifdef SCM_BIGDIG diff --git a/libguile/numbers.h b/libguile/numbers.h index 96bd5e2f1..6f6647b79 100644 --- a/libguile/numbers.h +++ b/libguile/numbers.h @@ -45,6 +45,7 @@ #include "libguile/__scm.h" +#include "print.h" @@ -265,8 +266,8 @@ extern SCM scm_divbigint(SCM x, long z, int sgn, int mode); extern SCM scm_divbigbig(SCM_BIGDIG *x, scm_sizet nx, SCM_BIGDIG *y, scm_sizet ny, int sgn, int modes); extern scm_sizet scm_iint2str(long num, int rad, char *p); extern SCM scm_number_to_string(SCM x, SCM radix); -extern int scm_floprint(SCM sexp, SCM port, int writing); -extern int scm_bigprint(SCM exp, SCM port, int writing); +extern int scm_floprint(SCM sexp, SCM port, scm_print_state *pstate); +extern int scm_bigprint(SCM exp, SCM port, scm_print_state *pstate); extern SCM scm_istr2int(char *str, long len, long radix); extern SCM scm_istr2flo(char *str, long len, long radix); extern SCM scm_istring2number(char *str, long len, long radix); diff --git a/libguile/smob.h b/libguile/smob.h index ddd3cc4df..f7ab334af 100644 --- a/libguile/smob.h +++ b/libguile/smob.h @@ -44,13 +44,14 @@ */ #include "libguile/__scm.h" +#include "print.h" typedef struct scm_smobfuns { SCM (*mark) SCM_P ((SCM)); scm_sizet (*free) SCM_P ((SCM)); - int (*print) SCM_P ((SCM exp, SCM port, int writing)); + int (*print) SCM_P ((SCM exp, SCM port, scm_print_state *pstate)); SCM (*equalp) SCM_P ((SCM, SCM)); } scm_smobfuns; diff --git a/libguile/srcprop.c b/libguile/srcprop.c index d577738ad..e2c7af9b1 100644 --- a/libguile/srcprop.c +++ b/libguile/srcprop.c @@ -51,6 +51,7 @@ #include "hashtab.h" #include "hash.h" #include "weaks.h" +#include "print.h" #include "srcprop.h" @@ -108,17 +109,20 @@ freesrcprops (obj) #ifdef __STDC__ static int -prinsrcprops (SCM obj, SCM port, int writing) +prinsrcprops (SCM obj, SCM port, scm_print_state *pstate) #else static int -prinsrcprops (obj, port, writing) +prinsrcprops (obj, port, pstate) SCM obj; SCM port; - int writing; + scm_print_state *pstate; #endif { + int writingp = SCM_WRITINGP (pstate); scm_gen_puts (scm_regular_string, "#<srcprops ", port); - scm_iprin1 (scm_srcprops_to_plist (obj), port, 1); + SCM_SET_WRITINGP (pstate, 1); + scm_iprin1 (scm_srcprops_to_plist (obj), port, pstate); + SCM_SET_WRITINGP (pstate, writingp); scm_gen_putc ('>', port); return 1; } diff --git a/libguile/unif.h b/libguile/unif.h index 6d2dc4df8..a4071ee6c 100644 --- a/libguile/unif.h +++ b/libguile/unif.h @@ -45,6 +45,7 @@ #include "libguile/__scm.h" +#include "print.h" typedef struct scm_array @@ -107,7 +108,7 @@ extern SCM scm_string_downcase_x (SCM v); extern SCM scm_istr2bve (char *str, long len); extern SCM scm_array_to_list (SCM v); extern SCM scm_list_to_uniform_array (SCM ndim, SCM prot, SCM lst); -extern int scm_raprin1 (SCM exp, SCM port, int writing); +extern int scm_raprin1 (SCM exp, SCM port, scm_print_state *pstate); extern SCM scm_array_prototype (SCM ra); extern void scm_init_unif (void); |