From d2b44ec9fc7bf4687dae74edfe708395461b5b6e Mon Sep 17 00:00:00 2001 From: glenda Date: Fri, 9 Sep 2022 21:06:16 +0000 Subject: =?UTF-8?q?Cleanup=20threads=20and=20add=20a=20=E2=8E=95TASKS=20sy?= =?UTF-8?q?stem=20function?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- quadnames.c | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'quadnames.c') diff --git a/quadnames.c b/quadnames.c index bd98b9d..e3d3ca8 100644 --- a/quadnames.c +++ b/quadnames.c @@ -28,6 +28,8 @@ Array *quadinfo(Array *); Array *quadproto(Array *); Array *quaducs(Array *); Array *quaddl(Array *); +Array *quadtasks1(Array *); +Array *quadtasks2(Array *, Array *); int needsnewline = 0; static Rune *quadquotebuf = nil; @@ -50,6 +52,7 @@ QuadnameDef quadnames[] = { {L"⎕PROTO", FunctionTag, nil, nil, quadproto, nil}, {L"⎕UCS", FunctionTag, nil, nil, quaducs, nil}, {L"⎕DL", FunctionTag, nil, nil, quaddl, nil}, + {L"⎕TASKS", FunctionTag, nil, nil, quadtasks1, quadtasks2}, {nil, 0, nil, nil, nil, nil} /* MUST BE LAST */ }; @@ -410,4 +413,32 @@ quaddl(Array *a) else throwerror(nil, EDomain); return fnSame(a); -} \ No newline at end of file +} + +/* ⎕TASKS */ +Array * +quadtasks1(Array *properties) +{ + Array *threadids = runningtasks(); + Array *res = rundfn(L"⍺ ⎕TASKS ⍵", nil, nil, threadids, properties); + freearray(threadids); + return res; +} + +/* ⎕TASKS */ +Array * +quadtasks2(Array *task, Array *property) +{ + if(GetType(task) != AtypeInt || GetType(property) != AtypeInt) + throwerror(nil, EDomain); + if(GetRank(task) > 1 || GetRank(property) > 1) + throwerror(nil, ERank); + if(GetRank(task) > 0 || GetRank(property) > 0) + return rundfn(L"⍺ ⎕TASKS⌾ ⍵", nil, nil, task, property); + + /* Get task with ID task, and property based on number in property */ + return taskproperty(task->intdata[0], property->intdata[0]); +} + + + -- cgit v1.2.3