functor (R : EXPOSURE) ->
sig
type projection = R.projection
and marker = R.marker
and submarker = R.submarker
and matchinghalf = R.matchinghalf
and splitmessage = R.splitmessage
and joinmessage = R.joinmessage
and matching = Swarm.SWARM.matchinghalf * Swarm.SWARM.matchinghalf
and bindhalf = R.bindhalf
and 'a resident
and 'a bindholder
class type notifier_type =
object
method get_symmetric :
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf -> Swarm.SWARM.bindhalf
method join :
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf ->
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf ->
Swarm.SWARM.bindhalf -> Swarm.SWARM.joinmessage -> unit
method notify : unit
method release :
Swarm.SWARM.projection -> Swarm.SWARM.bindhalf -> unit
method split :
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf ->
Swarm.SWARM.bindhalf ->
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf -> Swarm.SWARM.splitmessage -> unit
method transfer :
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf ->
Swarm.SWARM.projection -> Swarm.SWARM.bindhalf -> unit
end
type whichsplit = SplitFirst | SplitSecond
and splitpart =
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf ->
Swarm.SWARM.whichsplit *
(Swarm.SWARM.projection * Swarm.SWARM.bindhalf)
and joinpart =
Swarm.SWARM.whichsplit ->
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf -> Swarm.SWARM.projection * Swarm.SWARM.bindhalf
class type core =
object ('a)
method click : unit -> bool
method get_full_marker : Swarm.SWARM.projection -> Swarm.SWARM.marker
method get_projection : unit -> Swarm.SWARM.projection list
method get_submarker :
Swarm.SWARM.projection ->
Swarm.SWARM.matchinghalf -> Swarm.SWARM.submarker
method has_active : Swarm.SWARM.projection -> bool
method is_started : unit -> bool
method reset_notifier : unit -> unit
method set_notifier : Swarm.SWARM.notifier_type -> unit
method start : unit -> unit
method stop : unit -> unit
method tarjoin :
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf ->
'a ->
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf ->
Swarm.SWARM.joinmessage ->
('a * Swarm.SWARM.projection * Swarm.SWARM.bindhalf) *
Swarm.SWARM.joinpart
method tarsplit :
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf ->
Swarm.SWARM.splitmessage ->
('a * Swarm.SWARM.projection * Swarm.SWARM.bindhalf) *
('a * Swarm.SWARM.projection * Swarm.SWARM.bindhalf) *
Swarm.SWARM.splitpart
method unimate_dock :
Swarm.SWARM.projection ->
Swarm.SWARM.matchinghalf ->
Swarm.SWARM.submarker -> Swarm.SWARM.bindhalf
method unimate_prop :
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf -> 'a Swarm.SWARM.bindholder -> unit
method unimate_undock :
Swarm.SWARM.projection -> Swarm.SWARM.bindhalf -> unit
method unirelease :
Swarm.SWARM.projection -> Swarm.SWARM.bindhalf -> unit
end
class base_core :
object ('a)
method is_started : unit -> bool
method ngetsym :
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf -> Swarm.SWARM.bindhalf
method njoin :
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf ->
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf ->
Swarm.SWARM.bindhalf -> Swarm.SWARM.joinmessage -> unit
method nnotify : unit -> unit
method nrelease :
Swarm.SWARM.projection -> Swarm.SWARM.bindhalf -> unit
method nsplit :
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf ->
Swarm.SWARM.bindhalf ->
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf -> Swarm.SWARM.splitmessage -> unit
method ntransfer :
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf ->
Swarm.SWARM.projection -> Swarm.SWARM.bindhalf -> unit
method reset_notifier : unit -> unit
method set_notifier : Swarm.SWARM.notifier_type -> unit
method start : unit -> unit
method stop : unit -> unit
method tarjoin :
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf ->
'a ->
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf ->
Swarm.SWARM.joinmessage ->
('a * Swarm.SWARM.projection * Swarm.SWARM.bindhalf) *
Swarm.SWARM.joinpart
method tarsplit :
Swarm.SWARM.projection ->
Swarm.SWARM.bindhalf ->
Swarm.SWARM.splitmessage ->
('a * Swarm.SWARM.projection * Swarm.SWARM.bindhalf) *
('a * Swarm.SWARM.projection * Swarm.SWARM.bindhalf) *
Swarm.SWARM.splitpart
end
class type ['a] t =
object
constraint 'a = #Swarm.SWARM.core
method break : unit -> unit
method get_core : 'a Swarm.SWARM.resident -> 'a
method is_running : unit -> bool
method list_residents : 'a Swarm.SWARM.resident list
method remove : 'a Swarm.SWARM.resident -> unit
method run : unit -> unit
method shelter : 'a -> 'a Swarm.SWARM.resident
method start_all : unit -> unit
method start_resident : 'a Swarm.SWARM.resident -> unit
method stop_all : unit -> unit
method stop_resident : 'a Swarm.SWARM.resident -> unit
method wake : 'a Swarm.SWARM.resident -> unit
end
val make : unit -> #Swarm.SWARM.core Swarm.SWARM.t
end