`sig
type t
exception Out_of_bounds
val max_length : int
val empty : BatText.t
val of_latin1 : string -> BatText.t
val of_string : string -> BatText.t
val to_string : BatText.t -> string
val of_uchar : BatUChar.t -> BatText.t
val of_char : char -> BatText.t
val make : int -> BatUChar.t -> BatText.t
val join : BatText.t -> BatText.t list -> BatText.t
val explode : BatText.t -> BatUChar.t list
val implode : BatUChar.t list -> BatText.t
val is_empty : BatText.t -> bool
val length : BatText.t -> int
val height : BatText.t -> int
val balance : BatText.t -> BatText.t
val append : BatText.t -> BatText.t -> BatText.t
val ( ^^^ ) : BatText.t -> BatText.t -> BatText.t
val append_char : BatUChar.t -> BatText.t -> BatText.t
val prepend_char : BatUChar.t -> BatText.t -> BatText.t
val get : BatText.t -> int -> BatUChar.t
val set : BatText.t -> int -> BatUChar.t -> BatText.t
val sub : BatText.t -> int -> int -> BatText.t
val insert : int -> BatText.t -> BatText.t -> BatText.t
val remove : int -> int -> BatText.t -> BatText.t
val iter : (BatUChar.t -> unit) -> BatText.t -> unit
val iteri : ?base:int -> (int -> BatUChar.t -> unit) -> BatText.t -> unit
val range_iter : (BatUChar.t -> unit) -> int -> int -> BatText.t -> unit
val range_iteri :
(int -> BatUChar.t -> unit) ->
?base:int -> int -> int -> BatText.t -> unit
val fold : ('a -> BatUChar.t -> 'a) -> 'a -> BatText.t -> 'a
val init : int -> (int -> BatUChar.t) -> BatText.t
val map : (BatUChar.t -> BatUChar.t) -> BatText.t -> BatText.t
val filter_map :
(BatUChar.t -> BatUChar.t option) -> BatText.t -> BatText.t
val filter : (BatUChar.t -> bool) -> BatText.t -> BatText.t
val index : BatText.t -> BatUChar.t -> int
val index_from : BatText.t -> int -> BatUChar.t -> int
val rindex : BatText.t -> BatUChar.t -> int
val rindex_from : BatText.t -> int -> BatUChar.t -> int
val contains : BatText.t -> BatUChar.t -> bool
val contains_from : BatText.t -> int -> BatUChar.t -> bool
val rcontains_from : BatText.t -> int -> BatUChar.t -> bool
val find : BatText.t -> BatText.t -> int
val find_from : BatText.t -> int -> BatText.t -> int
val rfind : BatText.t -> BatText.t -> int
val rfind_from : BatText.t -> int -> BatText.t -> int
val starts_with : BatText.t -> BatText.t -> bool
val ends_with : BatText.t -> BatText.t -> bool
val exists : BatText.t -> BatText.t -> bool
val left : BatText.t -> int -> BatText.t
val right : BatText.t -> int -> BatText.t
val head : BatText.t -> int -> BatText.t
val tail : BatText.t -> int -> BatText.t
val strip : ?chars:BatUChar.t list -> BatText.t -> BatText.t
val lchop : BatText.t -> BatText.t
val rchop : BatText.t -> BatText.t
val slice : ?first:int -> ?last:int -> BatText.t -> BatText.t
val splice : BatText.t -> int -> int -> BatText.t -> BatText.t
val fill : BatText.t -> int -> int -> BatUChar.t -> BatText.t
val blit : BatText.t -> int -> BatText.t -> int -> int -> BatText.t
val concat : BatText.t -> BatText.t list -> BatText.t
val replace :
str:BatText.t -> sub:BatText.t -> by:BatText.t -> bool * BatText.t
val split : BatText.t -> BatText.t -> BatText.t * BatText.t
val rsplit : BatText.t -> BatText.t -> BatText.t * BatText.t
val nsplit : BatText.t -> BatText.t -> BatText.t list
val compare : BatText.t -> BatText.t -> int
val print : (BatText.t, 'a) BatIO.printer
val read_char : BatIO.input -> BatUChar.t
val read_text : BatIO.input -> int -> BatText.t
val read_line : BatIO.input -> BatText.t
val read_all : BatIO.input -> BatText.t
val write_char : (BatUChar.t, 'a) BatIO.printer
val write_text : (BatText.t, 'a) BatIO.printer
val write_line : (BatText.t, 'a) BatIO.printer
val lines_of : BatIO.input -> BatText.t BatEnum.t
val chars_of : BatIO.input -> BatUChar.t BatEnum.t
val output_text : unit BatIO.output -> BatText.t -> unit
val write_lines : (BatText.t BatEnum.t, 'a) BatIO.printer
val write_texts : (BatText.t BatEnum.t, 'a) BatIO.printer
val write_chars : (BatUChar.t BatEnum.t, 'a) BatIO.printer
end`