From de3bbbc0981bde7a02f7f5398ce921e0beb4c174 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Sun, 16 Jan 2022 00:48:37 +0000 Subject: Implement floats --- quadnames.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'quadnames.c') diff --git a/quadnames.c b/quadnames.c index b765e58..14c431e 100644 --- a/quadnames.c +++ b/quadnames.c @@ -8,10 +8,13 @@ Datum *getquad(void); int setquad(Datum); Datum *getio(void); int setio(Datum); +Datum *getpp(void); +int setpp(Datum); QuadnameDef quadnames[] = { {L"⎕", NameTag, getquad, setquad, nil, nil}, {L"⎕IO", NameTag, getio, setio, nil, nil}, + {L"⎕PP", NameTag, getpp, setpp, nil, nil}, {nil, 0, nil, nil, nil, nil} /* MUST BE LAST */ }; @@ -60,7 +63,7 @@ getio(void) { Datum *d = mallocz(sizeof(Datum), 1); d->tag = ArrayTag; - d->array = mkscalarint(globalIO()); + d->array = mkscalarint(currentsymtab->io); return d; } @@ -74,4 +77,26 @@ setio(Datum new) currentsymtab->io = new.array->intdata[0]; return 1; } +} + +/* ⎕PP */ +Datum * +getpp(void) +{ + Datum *d = mallocz(sizeof(Datum), 1); + d->tag = ArrayTag; + d->array = mkscalarint(printprecision); + return d; +} + +int +setpp(Datum new) +{ + if(new.tag != ArrayTag || new.array->rank != 0 || new.array->type != AtypeInt || new.array->intdata[0] < 0){ + print("⎕PP: domain error\n"); + return 0; + }else{ + printprecision = new.array->intdata[0]; + return 1; + } } \ No newline at end of file -- cgit v1.2.3