Buffer

`sig
type t
val create : int -> Buffer.t
val contents : Buffer.t -> string
val to_bytes : Buffer.t -> bytes
val sub : Buffer.t -> int -> int -> string
val blit : Buffer.t -> int -> bytes -> int -> int -> unit
val nth : Buffer.t -> int -> char
val length : Buffer.t -> int
val clear : Buffer.t -> unit
val reset : Buffer.t -> unit
val add_char : Buffer.t -> char -> unit
val add_utf_8_uchar : Buffer.t -> Stdlib.Uchar.t -> unit
val add_utf_16le_uchar : Buffer.t -> Stdlib.Uchar.t -> unit
val add_utf_16be_uchar : Buffer.t -> Stdlib.Uchar.t -> unit
val add_string : Buffer.t -> string -> unit
val add_bytes : Buffer.t -> bytes -> unit
val add_substring : Buffer.t -> string -> int -> int -> unit
val add_subbytes : Buffer.t -> bytes -> int -> int -> unit
val add_substitute : Buffer.t -> (string -> string) -> string -> unit
val add_buffer : Buffer.t -> Buffer.t -> unit
val add_channel : Buffer.t -> Stdlib.in_channel -> int -> unit
val output_buffer : Stdlib.out_channel -> Buffer.t -> unit
val truncate : Buffer.t -> int -> unit
val to_seq : Buffer.t -> char Stdlib.Seq.t
val to_seqi : Buffer.t -> (int * char) Stdlib.Seq.t
val add_seq : Buffer.t -> char Stdlib.Seq.t -> unit
val of_seq : char Stdlib.Seq.t -> Buffer.t
val add_uint8 : Buffer.t -> int -> unit
val add_int8 : Buffer.t -> int -> unit
val add_uint16_ne : Buffer.t -> int -> unit
val add_uint16_be : Buffer.t -> int -> unit
val add_uint16_le : Buffer.t -> int -> unit
val add_int16_ne : Buffer.t -> int -> unit
val add_int16_be : Buffer.t -> int -> unit
val add_int16_le : Buffer.t -> int -> unit
val add_int32_ne : Buffer.t -> int32 -> unit
val add_int32_be : Buffer.t -> int32 -> unit
val add_int32_le : Buffer.t -> int32 -> unit
val add_int64_ne : Buffer.t -> int64 -> unit
val add_int64_be : Buffer.t -> int64 -> unit
val add_int64_le : Buffer.t -> int64 -> unit
end`