summaryrefslogtreecommitdiff
path: root/streams.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <peter@pmikkelsen.com>2021-07-16 00:42:49 +0000
committerPeter Mikkelsen <peter@pmikkelsen.com>2021-07-16 00:42:49 +0000
commit1c8789198373a52da9e80dc9b2b1ee2b67af61c4 (patch)
tree980040a8d1828a85428b175eef9f6a4106248309 /streams.c
parent2a77288e28f2725b5621c239d2393d49f61993e8 (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.c18
1 files changed, 14 insertions, 4 deletions
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);
}