From 1c8789198373a52da9e80dc9b2b1ee2b67af61c4 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Fri, 16 Jul 2021 00:42:49 +0000 Subject: Make operators local to each module, and implement some more correct prettyprint code, used by write_term --- streams.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'streams.c') diff --git a/streams.c b/streams.c index a11eeb7..e090cdb 100644 --- a/streams.c +++ b/streams.c @@ -205,10 +205,8 @@ readterm(Term *stream, Term **term) } void -writeterm(Term *stream, Term *options, Term *term) +writeterm(Term *stream, Term *options, Term *term, Module *mod) { - USED(options); - Stream *s = getstream(stream); if(s == nil) return; @@ -217,7 +215,19 @@ writeterm(Term *stream, Term *options, Term *term) int ignoreops = 0; int numbervars = 0; - Rune *output = prettyprint(term, quoted, ignoreops, numbervars); + Term *op; + for(op = options; op->tag == CompoundTerm; op = op->children->next){ + Term *opkey = op->children->children; + Term *opval = opkey->next; + if(runestrcmp(opkey->text, L"quoted") == 0) + quoted = opval->ival; + else if(runestrcmp(opkey->text, L"ignore_ops") == 0) + ignoreops = opval->ival; + else if(runestrcmp(opkey->text, L"numbervars") == 0) + numbervars = opval->ival; + } + + Rune *output = prettyprint(term, quoted, ignoreops, numbervars, mod); Bprint(s->bio, "%S", output); Bflush(s->bio); } -- cgit v1.2.3