diff options
author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-16 00:48:37 +0000 |
---|---|---|
committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-16 00:48:37 +0000 |
commit | de3bbbc0981bde7a02f7f5398ce921e0beb4c174 (patch) | |
tree | 88813af01d0d16a19a205f4bd0f07fcc555d5a81 /quadnames.c | |
parent | f02e90b27e37f91d4409842dd21cd00c999c805d (diff) |
Implement floats
Diffstat (limited to 'quadnames.c')
-rw-r--r-- | quadnames.c | 27 |
1 files changed, 26 insertions, 1 deletions
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 |