sig
type 'a sequence = ('a -> unit) -> unit
module type S =
sig
type key
type value
type t
val empty : CCMultiMap.S.t
val is_empty : CCMultiMap.S.t -> bool
val add :
CCMultiMap.S.t ->
CCMultiMap.S.key -> CCMultiMap.S.value -> CCMultiMap.S.t
val remove :
CCMultiMap.S.t ->
CCMultiMap.S.key -> CCMultiMap.S.value -> CCMultiMap.S.t
val remove_all : CCMultiMap.S.t -> CCMultiMap.S.key -> CCMultiMap.S.t
val mem : CCMultiMap.S.t -> CCMultiMap.S.key -> bool
val find :
CCMultiMap.S.t -> CCMultiMap.S.key -> CCMultiMap.S.value list
val find_iter :
CCMultiMap.S.t ->
CCMultiMap.S.key -> (CCMultiMap.S.value -> unit) -> unit
val count : CCMultiMap.S.t -> CCMultiMap.S.key -> int
val iter :
CCMultiMap.S.t ->
(CCMultiMap.S.key -> CCMultiMap.S.value -> unit) -> unit
val fold :
CCMultiMap.S.t ->
'a -> ('a -> CCMultiMap.S.key -> CCMultiMap.S.value -> 'a) -> 'a
val size : CCMultiMap.S.t -> int
val union : CCMultiMap.S.t -> CCMultiMap.S.t -> CCMultiMap.S.t
val inter : CCMultiMap.S.t -> CCMultiMap.S.t -> CCMultiMap.S.t
val diff : CCMultiMap.S.t -> CCMultiMap.S.t -> CCMultiMap.S.t
val equal : CCMultiMap.S.t -> CCMultiMap.S.t -> bool
val compare : CCMultiMap.S.t -> CCMultiMap.S.t -> int
val submap : CCMultiMap.S.t -> CCMultiMap.S.t -> bool
val to_seq :
CCMultiMap.S.t ->
(CCMultiMap.S.key * CCMultiMap.S.value) CCMultiMap.sequence
val of_seq :
?init:CCMultiMap.S.t ->
(CCMultiMap.S.key * CCMultiMap.S.value) CCMultiMap.sequence ->
CCMultiMap.S.t
val keys : CCMultiMap.S.t -> CCMultiMap.S.key CCMultiMap.sequence
val values : CCMultiMap.S.t -> CCMultiMap.S.value CCMultiMap.sequence
end
module type OrderedType =
sig
type t
val compare :
CCMultiMap.OrderedType.t -> CCMultiMap.OrderedType.t -> int
end
module Make :
functor (K : OrderedType) (V : OrderedType) ->
sig
type key = K.t
type value = V.t
type t
val empty : t
val is_empty : t -> bool
val add : t -> key -> value -> t
val remove : t -> key -> value -> t
val remove_all : t -> key -> t
val mem : t -> key -> bool
val find : t -> key -> value list
val find_iter : t -> key -> (value -> unit) -> unit
val count : t -> key -> int
val iter : t -> (key -> value -> unit) -> unit
val fold : t -> 'a -> ('a -> key -> value -> 'a) -> 'a
val size : t -> int
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val equal : t -> t -> bool
val compare : t -> t -> int
val submap : t -> t -> bool
val to_seq : t -> (key * value) sequence
val of_seq : ?init:t -> (key * value) sequence -> t
val keys : t -> key sequence
val values : t -> value sequence
end
module type BIDIR =
sig
type t
type left
type right
val empty : CCMultiMap.BIDIR.t
val is_empty : CCMultiMap.BIDIR.t -> bool
val add :
CCMultiMap.BIDIR.t ->
CCMultiMap.BIDIR.left -> CCMultiMap.BIDIR.right -> CCMultiMap.BIDIR.t
val remove :
CCMultiMap.BIDIR.t ->
CCMultiMap.BIDIR.left -> CCMultiMap.BIDIR.right -> CCMultiMap.BIDIR.t
val cardinal_left : CCMultiMap.BIDIR.t -> int
val cardinal_right : CCMultiMap.BIDIR.t -> int
val remove_left :
CCMultiMap.BIDIR.t -> CCMultiMap.BIDIR.left -> CCMultiMap.BIDIR.t
val remove_right :
CCMultiMap.BIDIR.t -> CCMultiMap.BIDIR.right -> CCMultiMap.BIDIR.t
val mem_left : CCMultiMap.BIDIR.t -> CCMultiMap.BIDIR.left -> bool
val mem_right : CCMultiMap.BIDIR.t -> CCMultiMap.BIDIR.right -> bool
val find_left :
CCMultiMap.BIDIR.t ->
CCMultiMap.BIDIR.left -> CCMultiMap.BIDIR.right CCMultiMap.sequence
val find_right :
CCMultiMap.BIDIR.t ->
CCMultiMap.BIDIR.right -> CCMultiMap.BIDIR.left CCMultiMap.sequence
val find1_left :
CCMultiMap.BIDIR.t ->
CCMultiMap.BIDIR.left -> CCMultiMap.BIDIR.right option
val find1_right :
CCMultiMap.BIDIR.t ->
CCMultiMap.BIDIR.right -> CCMultiMap.BIDIR.left option
val fold :
('a -> CCMultiMap.BIDIR.left -> CCMultiMap.BIDIR.right -> 'a) ->
'a -> CCMultiMap.BIDIR.t -> 'a
val pairs :
CCMultiMap.BIDIR.t ->
(CCMultiMap.BIDIR.left * CCMultiMap.BIDIR.right) CCMultiMap.sequence
val add_pairs :
CCMultiMap.BIDIR.t ->
(CCMultiMap.BIDIR.left * CCMultiMap.BIDIR.right) CCMultiMap.sequence ->
CCMultiMap.BIDIR.t
val seq_left :
CCMultiMap.BIDIR.t -> CCMultiMap.BIDIR.left CCMultiMap.sequence
val seq_right :
CCMultiMap.BIDIR.t -> CCMultiMap.BIDIR.right CCMultiMap.sequence
end
module MakeBidir :
functor (L : OrderedType) (R : OrderedType) ->
sig
type t
type left = L.t
type right = R.t
val empty : t
val is_empty : t -> bool
val add : t -> left -> right -> t
val remove : t -> left -> right -> t
val cardinal_left : t -> int
val cardinal_right : t -> int
val remove_left : t -> left -> t
val remove_right : t -> right -> t
val mem_left : t -> left -> bool
val mem_right : t -> right -> bool
val find_left : t -> left -> right sequence
val find_right : t -> right -> left sequence
val find1_left : t -> left -> right option
val find1_right : t -> right -> left option
val fold : ('a -> left -> right -> 'a) -> 'a -> t -> 'a
val pairs : t -> (left * right) sequence
val add_pairs : t -> (left * right) sequence -> t
val seq_left : t -> left sequence
val seq_right : t -> right sequence
end
end