summaryrefslogtreecommitdiff
path: root/quadnames.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-16 00:48:37 +0000
committerPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-16 00:48:37 +0000
commitde3bbbc0981bde7a02f7f5398ce921e0beb4c174 (patch)
tree88813af01d0d16a19a205f4bd0f07fcc555d5a81 /quadnames.c
parentf02e90b27e37f91d4409842dd21cd00c999c805d (diff)
Implement floats
Diffstat (limited to 'quadnames.c')
-rw-r--r--quadnames.c27
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