sig
  type t
  val create : int -> Buffer.t
  val contents : Buffer.t -> string
  val sub : Buffer.t -> int -> int -> string
  val blit : Buffer.t -> int -> string -> 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_string : Buffer.t -> string -> unit
  val add_substring : Buffer.t -> string -> 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 -> Pervasives.in_channel -> int -> unit
  val output_buffer : Pervasives.out_channel -> Buffer.t -> unit
end