Module type Hook.S_ordered

module type S_ordered = sig .. end

hook with a notion of priority.


include Hook.S
type key 
type id 
val register_key : key -> id
val extend : id -> (param -> result) -> unit
val extend_once : id -> (param -> result) -> unit
val add_dependency : id -> id -> unit

add_dependency hook1 hook2 indicates that hook1 must be executed before hook2. In case of a cycle, all hooks will be executed, but an arbitrary order will be chosen among the elements of the cycle.