equal
deleted
inserted
replaced
15 val peek: Document_ID.exec -> Future.group list |
15 val peek: Document_ID.exec -> Future.group list |
16 val cancel: Document_ID.exec -> unit |
16 val cancel: Document_ID.exec -> unit |
17 val terminate: Document_ID.exec -> unit |
17 val terminate: Document_ID.exec -> unit |
18 type params = {name: string, pos: Position.T, pri: int} |
18 type params = {name: string, pos: Position.T, pri: int} |
19 val fork: params -> (unit -> 'a) -> 'a future |
19 val fork: params -> (unit -> 'a) -> 'a future |
20 val print: params -> (serial -> unit) -> unit |
20 val print: params -> (unit -> unit) -> unit |
21 val fork_prints: Document_ID.exec -> unit |
21 val fork_prints: Document_ID.exec -> unit |
22 val purge: Document_ID.exec list -> unit |
22 val purge: Document_ID.exec list -> unit |
23 val reset: unit -> Future.group list |
23 val reset: unit -> Future.group list |
24 val shutdown: unit -> unit |
24 val shutdown: unit -> unit |
25 end; |
25 end; |
133 in future end)) (); |
133 in future end)) (); |
134 |
134 |
135 |
135 |
136 (* print *) |
136 (* print *) |
137 |
137 |
138 fun print ({name, pos, pri}: params) pr = |
138 fun print ({name, pos, pri}: params) e = |
139 change_state (apsnd (fn execs => |
139 change_state (apsnd (fn execs => |
140 let |
140 let |
141 val exec_id = the_default 0 (Position.parse_id pos); |
141 val exec_id = the_default 0 (Position.parse_id pos); |
142 val i = serial (); |
142 val print = {name = name, pri = pri, body = e}; |
143 val print = {name = name, pri = pri, body = fn () => pr i}; |
|
144 in |
143 in |
145 (case Inttab.lookup execs exec_id of |
144 (case Inttab.lookup execs exec_id of |
146 SOME (groups, prints) => Inttab.update (exec_id, (groups, print :: prints)) execs |
145 SOME (groups, prints) => Inttab.update (exec_id, (groups, print :: prints)) execs |
147 | NONE => raise Fail (unregistered exec_id)) |
146 | NONE => raise Fail (unregistered exec_id)) |
148 end)); |
147 end)); |