`sig
type ('i, 'o) work
type ('i, 'o) gate
type ('x, 'i, 'o) wire
type ('i, 'o, 'a) guard = (('i, 'o) Cf_gadget.gate, 'a) Cf_cmonad.t
type ('i, 'o, 'a) t = (('i, 'o) Cf_gadget.work, 'a) Cf_cmonad.t
val eval : ('i, 'o, unit) Cf_gadget.t -> ('i, 'o) Cf_flow.t
val start : ('i, 'o, unit) Cf_gadget.t -> ('i, 'o, unit) Cf_gadget.t
val guard : ('i, 'o, unit) Cf_gadget.guard -> ('i, 'o, 'a) Cf_gadget.t
val abort : ('i, 'o, 'a) Cf_gadget.t
val wire : ('i, 'o, ('x, 'i, 'o) Cf_gadget.wire) Cf_gadget.t
val wirepair :
('i, 'o, ('x, 'i, 'o) Cf_gadget.wire * ('y, 'i, 'o) Cf_gadget.wire)
Cf_gadget.t
val null : ('i, 'o, ('x, 'i, 'o) Cf_gadget.wire) Cf_gadget.t
val read : ('i, 'o, 'i) Cf_gadget.t
val write : 'o -> ('i, 'o, unit) Cf_gadget.t
class type connector = object method check : bool method id : string end
class ['x, 'i, 'o] rx :
('x, 'i, 'o) Cf_gadget.wire ->
object
method check : bool
method get :
('x -> ('i, 'o, unit) Cf_gadget.t) -> ('i, 'o, unit) Cf_gadget.guard
method id : string
end
class ['x, 'i, 'o] tx :
('x, 'i, 'o) Cf_gadget.wire ->
object
method check : bool
method id : string
method put : 'x -> ('i, 'o, unit) Cf_gadget.t
end
val connect :
('i, 'o, ('x, 'i, 'o) Cf_gadget.wire) Cf_gadget.t ->
('i, 'o, ('x, 'i, 'o) Cf_gadget.rx * ('x, 'i, 'o) Cf_gadget.tx)
Cf_gadget.t
val simplex :
('i, 'o, ('x, 'i, 'o) Cf_gadget.rx * ('x, 'i, 'o) Cf_gadget.tx)
Cf_gadget.t
type ('x, 'y, 'i, 'o) pad =
('x, 'i, 'o) Cf_gadget.rx * ('y, 'i, 'o) Cf_gadget.tx
type ('x, 'y, 'i, 'o) fix =
('y, 'i, 'o) Cf_gadget.rx * ('x, 'i, 'o) Cf_gadget.tx
val connectpair :
('i, 'o, ('x, 'i, 'o) Cf_gadget.wire * ('y, 'i, 'o) Cf_gadget.wire)
Cf_gadget.t ->
('i, 'o, ('x, 'y, 'i, 'o) Cf_gadget.fix * ('x, 'y, 'i, 'o) Cf_gadget.pad)
Cf_gadget.t
val duplex :
('i, 'o, ('x, 'y, 'i, 'o) Cf_gadget.fix * ('x, 'y, 'i, 'o) Cf_gadget.pad)
Cf_gadget.t
val wrap :
('x, 'i, 'o) #Cf_gadget.rx ->
('y, 'i, 'o) #Cf_gadget.tx ->
('x, 'y) Cf_flow.t -> ('i, 'o, unit) Cf_gadget.t
class virtual ['i, 'o] next :
object
method private virtual guard : ('i, 'o, unit) Cf_gadget.guard
method next : ('i, 'o, 'a) Cf_gadget.t
end
class virtual ['i, 'o] start :
object
method private virtual guard : ('i, 'o, unit) Cf_gadget.guard
method start : ('i, 'o, unit) Cf_gadget.t
end
val create :
(('c, 'n, 'i, 'o) Cf_gadget.pad -> ('i, 'o) #Cf_gadget.start) ->
('i, 'o, ('c, 'n, 'i, 'o) Cf_gadget.fix) Cf_gadget.t
val createM :
(('c, 'n, 'i, 'o) Cf_gadget.pad ->
('i, 'o, ('i, 'o) #Cf_gadget.start) Cf_gadget.t) ->
('i, 'o, ('c, 'n, 'i, 'o) Cf_gadget.fix) Cf_gadget.t
end`