Up

module UMap

: sig

Maps over Unicode characters.

#
type 'a t
#
val empty : 'a t
#
val is_empty : 'a t -> bool
#
val add : ?eq:('a -> 'a -> bool) -> UChar.t -> 'a -> 'a t -> 'a t

add ?eq u v m returns the new map which is same to m except it maps u to some value v' which satisfies eq v v'. If eq is not supplied, structural equality is used.

#
val add_range : ?eq:('a -> 'a -> bool) -> UChar.t -> UChar.t -> 'a -> 'a t -> 'a t

add ?eq u1 u2 v m returns the new map which is same to m except it maps characters in the range u1-u2 to some value v' which satisfies eq v v'. If eq is not supplied, structural equality is used.

#
val find : UChar.t -> 'a t -> 'a
#
val remove : UChar.t -> 'a t -> 'a t
#
val remove_range : UChar.t -> UChar.t -> 'a t -> 'a t

remove_range u1 u2 m removes u1-u2 from the domain of m

#
val from : UChar.t -> 'a t -> 'a t

from u m restricts the domain of m to the characters whose code points are equal or greater than u.

#
val after : UChar.t -> 'a t -> 'a t

after u m restricts the domain of m to the characters whose code points are greater than u.

#
val until : UChar.t -> 'a t -> 'a t

until u m restricts the domain of m to the characters whose code points are equal or smaller than u.

#
val before : UChar.t -> 'a t -> 'a t

before u m restricts the domain of m to the characters whose code points are smaller than u.

#
val mem : UChar.t -> 'a t -> bool
#
val iter : (UChar.t -> 'a -> unit) -> 'a t -> unit
#
val iter_range : (UChar.t -> UChar.t -> 'a -> unit) -> 'a t -> unit

iter proc m : For each contingent region u1-u2 that is mapped to a constant v, proc u1 u2 v is called. The order of call is determined by increasing order on u1.

map ?eq f m and mapi ?eq f m : Similar to map and mapi in stdlib Map, but if the map m' is returned, it is only guaranteed that eq (find u m') (f (find u m )) is true for map and eq (find u m') (f u (find u m )) is true for mapi. If eq is not specified, structural equality is used.

#
val map : ?eq:('b -> 'b -> bool) -> ('a -> 'b) -> 'a t -> 'b t
#
val mapi : ?eq:('b -> 'b -> bool) -> (UChar.t -> 'a -> 'b) -> 'a t -> 'b t
#
val fold : (UChar.t -> 'b -> 'a -> 'a) -> 'b t -> 'a -> 'a
#
val fold_range : (UChar.t -> UChar.t -> 'b -> 'a -> 'a) -> 'b t -> 'a -> 'a

fold_range f m x is equivalent to f u_(2n) u_(2n+1) v_n (... (f u_1 u_2 v_1 x)) where all characters in the range u_(2k)-u_(2k+1) are mapped to v_k and u_1 < u_3 < ... in code point order. For each range u_(2k)-u_(2k+1) is separated by a character which is not mapped to v_k.

#
val set_to_map : USet.t -> 'a -> 'a t

Constant map.

#
val domain : 'a t -> USet.t

Domain.

#
val map_to_set : ('a -> bool) -> 'a t -> USet.t

map_to_set p m returns the set of characters which are mapped to values satisfying the predicate p by m.

#
val umap_of_imap : 'a IMap.t -> 'a t
#
val imap_of_umap : 'a t -> 'a IMap.t
end