sig
type in_key = InCtrl | InNum of int | InImpl of Locations.Zone.t
type out_key = OutRet | OutLoc of Locations.Zone.t
type key =
In of PdgIndex.Signature.in_key
| Out of PdgIndex.Signature.out_key
type 'info t = {
in_ctrl : 'info option;
in_params : (int * 'info) list;
in_implicits : (Locations.Zone.t * 'info) list;
out_ret : 'info option;
outputs : (Locations.Zone.t * 'info) list;
}
module Str_descr :
sig
val in_key : Structural_descr.t
val out_key : Structural_descr.t
val key : Structural_descr.t
val t : Structural_descr.t -> Structural_descr.t
end
val empty : 'a PdgIndex.Signature.t
val in_key : int -> PdgIndex.Signature.key
val in_impl_key : Locations.Zone.t -> PdgIndex.Signature.key
val in_top_key : PdgIndex.Signature.key
val in_ctrl_key : PdgIndex.Signature.key
val out_ret_key : PdgIndex.Signature.key
val out_key : Locations.Zone.t -> PdgIndex.Signature.key
val mk_undef_in_key : Locations.Zone.t -> PdgIndex.Signature.in_key
val copy : 'a -> 'a
val cmp_in_key :
PdgIndex.Signature.in_key -> PdgIndex.Signature.in_key -> int
val cmp_out_key :
PdgIndex.Signature.out_key -> PdgIndex.Signature.out_key -> int
val equal_out_key :
PdgIndex.Signature.out_key -> PdgIndex.Signature.out_key -> bool
val add_in_list :
('a * 'b) list -> 'a -> 'b -> ('b -> 'b -> 'b) -> ('a * 'b) list
val add_loc :
(Locations.Zone.t * 'a) list ->
Locations.Zone.t ->
'a -> ('a -> 'a -> 'a) -> (Locations.Zone.t * 'a) list
val add_replace : bool -> 'a -> 'b -> 'b
val add_input :
'a PdgIndex.Signature.t ->
int -> 'a -> replace:bool -> 'a PdgIndex.Signature.t
val add_impl_input :
'a PdgIndex.Signature.t ->
Locations.Zone.t -> 'a -> replace:bool -> 'a PdgIndex.Signature.t
val add_output :
'a PdgIndex.Signature.t ->
Locations.Zone.t -> 'a -> replace:bool -> 'a PdgIndex.Signature.t
val add_in_ctrl :
'a PdgIndex.Signature.t -> 'a -> replace:bool -> 'a PdgIndex.Signature.t
val add_out_ret :
'a PdgIndex.Signature.t -> 'a -> replace:bool -> 'a PdgIndex.Signature.t
val add_info :
'a PdgIndex.Signature.t ->
PdgIndex.Signature.key -> 'a -> replace:bool -> 'a PdgIndex.Signature.t
val find_input : 'a PdgIndex.Signature.t -> int -> 'a
val find_output : 'a PdgIndex.Signature.t -> Locations.Zone.t -> 'a
val find_out_ret : 'a PdgIndex.Signature.t -> 'a
val find_in_ctrl : 'a PdgIndex.Signature.t -> 'a
val find_implicit_input : 'a PdgIndex.Signature.t -> Locations.Zone.t -> 'a
val find_in_top : 'a PdgIndex.Signature.t -> 'a
val find_in_info :
'a PdgIndex.Signature.t -> PdgIndex.Signature.in_key -> 'a
val find_out_info :
'a PdgIndex.Signature.t -> PdgIndex.Signature.out_key -> 'a
val find_info : 'a PdgIndex.Signature.t -> PdgIndex.Signature.key -> 'a
val fold_outputs :
('a -> Locations.Zone.t * 'b -> 'a) ->
'a -> 'b PdgIndex.Signature.t -> 'a
val fold_all_outputs :
('a -> PdgIndex.Signature.out_key * 'b -> 'a) ->
'a -> 'b PdgIndex.Signature.t -> 'a
val fold_num_inputs :
('a -> int * 'b -> 'a) -> 'a -> 'b PdgIndex.Signature.t -> 'a
val fold_impl_inputs :
('a -> Locations.Zone.t * 'b -> 'a) ->
'a -> 'b PdgIndex.Signature.t -> 'a
val fold_matching_impl_inputs :
Locations.Zone.t ->
('a -> Locations.Zone.t * 'b -> 'a) ->
'a -> 'b PdgIndex.Signature.t -> 'a
val fold_all_inputs :
('a -> PdgIndex.Signature.in_key * 'b -> 'a) ->
'a -> 'b PdgIndex.Signature.t -> 'a
val fold :
('a -> PdgIndex.Signature.key * 'b -> 'a) ->
'a -> 'b PdgIndex.Signature.t -> 'a
val merge :
'a PdgIndex.Signature.t ->
'a PdgIndex.Signature.t -> ('a -> 'a -> 'a) -> 'a PdgIndex.Signature.t
val pretty_in_key : Format.formatter -> PdgIndex.Signature.in_key -> unit
val pretty_out_key : Format.formatter -> PdgIndex.Signature.out_key -> unit
val pretty_key : Format.formatter -> PdgIndex.Signature.key -> unit
val pretty :
(Format.formatter -> 'a -> unit) ->
Format.formatter -> 'a PdgIndex.Signature.t -> unit
end