diff options
-rw-r--r-- | quadnames.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/quadnames.c b/quadnames.c index 88fe087..5632cd4 100644 --- a/quadnames.c +++ b/quadnames.c @@ -22,6 +22,7 @@ Array *quadthrow1(Array *); Array *quadthrow2(Array *, Array *); Array *quadinfo(Array *); Array *quadproto(Array *); +Array *quaducs(Array *); int needsnewline = 0; static Rune *quadquotebuf = nil; @@ -38,6 +39,7 @@ QuadnameDef quadnames[] = { {L"⎕THROW", FunctionTag, nil, nil, quadthrow1, quadthrow2}, {L"⎕INFO", FunctionTag, nil, nil, quadinfo, nil}, {L"⎕PROTO", FunctionTag, nil, nil, quadproto, nil}, + {L"⎕UCS", FunctionTag, nil, nil, quaducs, nil}, {nil, 0, nil, nil, nil, nil} /* MUST BE LAST */ }; @@ -317,4 +319,22 @@ Array * quadproto(Array *a) { return fillelement(a); +} + +/* ⎕UCS */ +Array * +quaducs(Array *a) +{ + Array *res = nil; + if(a->type == AtypeInt){ + res = duparrayshape(a, AtypeRune); + for(int i = 0; i < res->size; i++) + res->runedata[i] = a->intdata[i]; + }else if(a->type == AtypeRune){ + res = duparrayshape(a, AtypeInt); + for(int i = 0; i < res->size; i++) + res->intdata[i] = a->runedata[i]; + }else + throwerror(nil, EType); + return res; }
\ No newline at end of file |