summaryrefslogtreecommitdiff
path: root/quadnames.c
diff options
context:
space:
mode:
Diffstat (limited to 'quadnames.c')
-rw-r--r--quadnames.c20
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