Combiners_common.CommonSourceCommon utility definitions used by combiners
Kinds of domain combiners
type Core.All.id += | C_empty : unit Core.All.id| C_pair : combiner * 'a Core.All.id * 'b Core.All.id -> ('a * 'b) Core.All.idGADT identifiers used by domain combiners
GADT identifiers used by value combiners
sat_targets ~domains ~targets checks whether a combiner containing domains satisifies some route targets
Manager of the left argument in a pair of domains
Manager of the right argument in a pair of domains
val find_domain_man :
'b 'c. target:'b Core.All.id ->
tree:'c Core.All.id ->
('a, 'c) Core.All.man ->
('a, 'b) Core.All.manFind the manager of a domain given the manager of a combiner containing it
Check whether a domain is part of a combiner tree
val cascade_call :
Core.All.DomainSet.t option ->
(Core.All.DomainSet.t option ->
'a ->
('b, 'c) Core.All.man ->
'b Core.Flow.flow ->
('b, 'd) Core.All.Cases.cases option) ->
Core.All.DomainSet.t ->
(Core.All.DomainSet.t option ->
'a ->
('b, 'e) Core.All.man ->
'b Core.Flow.flow ->
('b, 'd) Core.All.Cases.cases option) ->
Core.All.DomainSet.t ->
'a ->
('b, 'c * 'e) Core.All.man ->
'b Core.Flow.flow ->
('b, 'd) Core.All.Cases.cases optionApply transfer functions f1 and f2 in cascade. Function f1 is called first. When f1 returns None or not-handled cases, f2 is called. Note that not-handled cases are joined in order to call f2 only once.
val cascade_stateless_call :
Core.All.DomainSet.t option ->
(Core.All.DomainSet.t option ->
'a ->
('b, 'c) Core.All.man ->
'b Core.Flow.flow ->
('b, 'd) Core.All.Cases.cases option) ->
Core.All.DomainSet.t ->
(Core.All.DomainSet.t option ->
'a ->
('b, 'c) Core.All.man ->
'b Core.Flow.flow ->
('b, 'd) Core.All.Cases.cases option) ->
Core.All.DomainSet.t ->
'a ->
('b, 'c) Core.All.man ->
'b Core.Flow.flow ->
('b, 'd) Core.All.Cases.cases optionval broadcast_call :
Core.All.DomainSet.t option ->
(Core.All.DomainSet.t option ->
'a ->
('b, 'c) Core.All.man ->
'd ->
('e, 'f) Core.All.Cases.cases option) ->
Core.All.DomainSet.t ->
(Core.All.DomainSet.t option ->
'a ->
('b, 'g) Core.All.man ->
'd ->
('e, 'f) Core.All.Cases.cases option) ->
Core.All.DomainSet.t ->
'a ->
('b, 'c * 'g) Core.All.man ->
'd ->
('e, 'f) Core.All.Cases.cases optionval broadcast_stateless_call :
Core.All.DomainSet.t option ->
(Core.All.DomainSet.t option ->
'a ->
'b ->
'c ->
('d, 'e) Core.All.Cases.cases option) ->
Core.All.DomainSet.t ->
(Core.All.DomainSet.t option ->
'a ->
'b ->
'c ->
('d, 'e) Core.All.Cases.cases option) ->
Core.All.DomainSet.t ->
'a ->
'b ->
'c ->
('d, 'e) Core.All.Cases.cases optionval broadcast_init :
('a ->
('b, 'c) Core.All.man ->
'd Core.Flow.flow ->
'd Core.All.Post.post option) ->
('a ->
('b, 'e) Core.All.man ->
'd Core.Flow.flow ->
('d, unit) Core.Cases.cases option) ->
'a ->
('b, 'c * 'e) Core.All.man ->
'd Core.Flow.flow ->
('d, unit) Core.Cases.cases optionval broadcast_stateless_init :
('a -> 'b -> 'c Core.Flow.flow -> 'c Core.All.Post.post option) ->
('a -> 'b -> 'c Core.Flow.flow -> ('c, unit) Core.Cases.cases option) ->
'a ->
'b ->
'c Core.Flow.flow ->
('c, unit) Core.Cases.cases option