`sig module type Type = sig type t val get : CamomileLibrary.SubText.Type.t -> int -> CamomileLibrary.UChar.t val init : int -> (int -> CamomileLibrary.UChar.t) -> CamomileLibrary.SubText.Type.t val length : CamomileLibrary.SubText.Type.t -> int type index val look : CamomileLibrary.SubText.Type.t -> CamomileLibrary.SubText.Type.index -> CamomileLibrary.UChar.t val nth : CamomileLibrary.SubText.Type.t -> int -> CamomileLibrary.SubText.Type.index val first : CamomileLibrary.SubText.Type.t -> CamomileLibrary.SubText.Type.index val last : CamomileLibrary.SubText.Type.t -> CamomileLibrary.SubText.Type.index val next : CamomileLibrary.SubText.Type.t -> CamomileLibrary.SubText.Type.index -> CamomileLibrary.SubText.Type.index val prev : CamomileLibrary.SubText.Type.t -> CamomileLibrary.SubText.Type.index -> CamomileLibrary.SubText.Type.index val move : CamomileLibrary.SubText.Type.t -> CamomileLibrary.SubText.Type.index -> int -> CamomileLibrary.SubText.Type.index val out_of_range : CamomileLibrary.SubText.Type.t -> CamomileLibrary.SubText.Type.index -> bool val compare_index : CamomileLibrary.SubText.Type.t -> CamomileLibrary.SubText.Type.index -> CamomileLibrary.SubText.Type.index -> int val iter : (CamomileLibrary.UChar.t -> unit) -> CamomileLibrary.SubText.Type.t -> unit val compare : CamomileLibrary.SubText.Type.t -> CamomileLibrary.SubText.Type.t -> int module Buf : sig type buf val create : int -> CamomileLibrary.SubText.Type.Buf.buf val contents : CamomileLibrary.SubText.Type.Buf.buf -> CamomileLibrary.SubText.Type.t val clear : CamomileLibrary.SubText.Type.Buf.buf -> unit val reset : CamomileLibrary.SubText.Type.Buf.buf -> unit val add_char : CamomileLibrary.SubText.Type.Buf.buf -> CamomileLibrary.UChar.t -> unit val add_string : CamomileLibrary.SubText.Type.Buf.buf -> CamomileLibrary.SubText.Type.t -> unit val add_buffer : CamomileLibrary.SubText.Type.Buf.buf -> CamomileLibrary.SubText.Type.Buf.buf -> unit end type ur_text type ur_index val refer : CamomileLibrary.SubText.Type.ur_text -> CamomileLibrary.SubText.Type.ur_index -> CamomileLibrary.SubText.Type.ur_index -> CamomileLibrary.SubText.Type.t val excerpt : CamomileLibrary.SubText.Type.t -> CamomileLibrary.SubText.Type.ur_text val context : CamomileLibrary.SubText.Type.t -> CamomileLibrary.SubText.Type.ur_text * CamomileLibrary.SubText.Type.ur_index * CamomileLibrary.SubText.Type.ur_index val ur_index_of : CamomileLibrary.SubText.Type.t -> CamomileLibrary.SubText.Type.index -> CamomileLibrary.SubText.Type.ur_index end module Make : functor (Text : UnicodeString.Type) -> sig type t val get : t -> int -> UChar.t val init : int -> (int -> UChar.t) -> t val length : t -> int type index val look : t -> index -> UChar.t val nth : t -> int -> index val first : t -> index val last : t -> index val next : t -> index -> index val prev : t -> index -> index val move : t -> index -> int -> index val out_of_range : t -> index -> bool val compare_index : t -> index -> index -> int val iter : (UChar.t -> unit) -> t -> unit val compare : t -> t -> int module Buf : sig type buf val create : int -> buf val contents : buf -> t val clear : buf -> unit val reset : buf -> unit val add_char : buf -> UChar.t -> unit val add_string : buf -> t -> unit val add_buffer : buf -> buf -> unit end type ur_text = Text.t type ur_index = Text.index val refer : ur_text -> ur_index -> ur_index -> t val excerpt : t -> ur_text val context : t -> ur_text * ur_index * ur_index val ur_index_of : t -> index -> ur_index end end`