diff options
author | Peter Mikkelsen <peter@pmikkelsen.com> | 2021-07-16 00:42:49 +0000 |
---|---|---|
committer | Peter Mikkelsen <peter@pmikkelsen.com> | 2021-07-16 00:42:49 +0000 |
commit | 1c8789198373a52da9e80dc9b2b1ee2b67af61c4 (patch) | |
tree | 980040a8d1828a85428b175eef9f6a4106248309 /streams.c | |
parent | 2a77288e28f2725b5621c239d2393d49f61993e8 (diff) |
Make operators local to each module, and implement some more correct prettyprint code, used by write_term
Diffstat (limited to 'streams.c')
-rw-r--r-- | streams.c | 18 |
1 files changed, 14 insertions, 4 deletions
@@ -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); } |