sig
type position = { chr : int; line : int; }
type range = {
file : string;
from_position : Locality.position;
to_position : Locality.position;
}
type t = Locality.range
type 'a annot = 'a * Locality.t
type 'a maybe = ?pos:Locality.t -> 'a
val of_pos : Lexing.position -> Lexing.position -> Locality.t
val dummy : Locality.t
val dummy_annot : 'a -> 'a Locality.annot
val has_dummy_annot : 'a Locality.annot -> bool
val to_string : Locality.t -> string
val print : Format.formatter -> Locality.t -> unit
val print_annot :
(Format.formatter -> 'a -> unit) ->
Format.formatter -> 'a Locality.annot -> unit
val annot_of_yojson :
?filenames:string array ->
(Yojson.Basic.json -> 'a) -> Yojson.Basic.json -> 'a Locality.annot
val annot_to_yojson :
?filenames:int Mods.StringMap.t ->
('a -> Yojson.Basic.json) -> 'a Locality.annot -> Yojson.Basic.json
val write_range : Bi_outbuf.t -> Locality.t -> unit
val string_of_range : ?len:int -> Locality.t -> string
val read_range : Yojson.Safe.lexer_state -> Lexing.lexbuf -> Locality.t
val range_of_string : string -> Locality.t
end