summaryrefslogtreecommitdiff
path: root/module/alphabet/abcstyx.m
diff options
context:
space:
mode:
Diffstat (limited to 'module/alphabet/abcstyx.m')
-rw-r--r--module/alphabet/abcstyx.m33
1 files changed, 33 insertions, 0 deletions
diff --git a/module/alphabet/abcstyx.m b/module/alphabet/abcstyx.m
new file mode 100644
index 00000000..227550a9
--- /dev/null
+++ b/module/alphabet/abcstyx.m
@@ -0,0 +1,33 @@
+ABCStyx: module {
+ PATH: con "/dis/alphabet/abcstyx.dis";
+ Value: adt {
+ c: fn(v: self ref Value): ref Value.C; # cmd
+ s: fn(v: self ref Value): ref Value.S; # string
+ w: fn(v: self ref Value): ref Value.W; # wfd
+ x: fn(v: self ref Value): ref Value.D; # styx
+
+ typec: fn(v: self ref Value): int;
+ type2s: fn(t: int): string;
+ discard: fn(v: self ref Value);
+ reusable: fn(v: self ref Value): int;
+
+ pick {
+ S =>
+ i: string;
+ C =>
+ i: ref Sh->Cmd;
+ W =>
+ i: chan of ref Sys->FD;
+ X =>
+ i: (chan of ref Styx->Rmsg, chan of ref Styx->Tmsg);
+ }
+ };
+ init: fn();
+};
+
+Styxmodule: module {
+ types: fn(): string;
+ init: fn();
+ run: fn(errorc: chan of string, r: ref Reports->Report,
+ opts: list of (int, list of ref ABCStyx->Value), args: list of ref ABCStyx->Value): ref ABCStyx->Value;
+};