summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libguile/eval.c23
-rw-r--r--libguile/numbers.c12
-rw-r--r--libguile/numbers.h5
-rw-r--r--libguile/smob.h3
-rw-r--r--libguile/srcprop.c12
-rw-r--r--libguile/unif.h3
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);