UTF8

`sig
type t = string
exception Malformed_code
val validate : UTF8.t -> unit
val get : UTF8.t -> int -> UChar.uchar
val init : int -> (int -> UChar.uchar) -> UTF8.t
val length : UTF8.t -> int
type index = int
val nth : UTF8.t -> int -> UTF8.index
val last : UTF8.t -> UTF8.index
val look : UTF8.t -> UTF8.index -> UChar.uchar
val out_of_range : UTF8.t -> UTF8.index -> bool
val compare_index : UTF8.t -> UTF8.index -> UTF8.index -> int
val next : UTF8.t -> UTF8.index -> UTF8.index
val prev : UTF8.t -> UTF8.index -> UTF8.index
val move : UTF8.t -> UTF8.index -> int -> UTF8.index
val iter : (UChar.uchar -> unit) -> UTF8.t -> unit
val compare : UTF8.t -> UTF8.t -> int
module Buf :
sig
type buf
val create : int -> UTF8.Buf.buf
val contents : UTF8.Buf.buf -> UTF8.t
val clear : UTF8.Buf.buf -> unit
val reset : UTF8.Buf.buf -> unit
val add_char : UTF8.Buf.buf -> UChar.uchar -> unit
val add_string : UTF8.Buf.buf -> UTF8.t -> unit
val add_buffer : UTF8.Buf.buf -> UTF8.Buf.buf -> unit
end
end`