(*
* ExtBuffer - extra functions over buffers.
* Copyright (C) 2014 Gabriel Scherer
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version,
* with the special exception on linking described in file LICENSE.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*)
(** Extra functions over text buffers.
We in fact provide the exact same interface as Buffer on 4.02 OCaml
versions, with the implementation for the 4.02-and-above
bytes-specific functions backported.
*)
open ExtBytes
module Buffer : sig
type t = Buffer.t
val create : int -> t
val contents : t -> string
val to_bytes : t -> Bytes.t
val sub : t -> int -> int -> string
val blit : t -> int -> Bytes.t -> int -> int -> unit
val nth : t -> int -> char
val length : t -> int
val clear : t -> unit
val reset : t -> unit
val add_char : t -> char -> unit
val add_string : t -> string -> unit
val add_bytes : t -> Bytes.t -> unit
val add_substring : t -> string -> int -> int -> unit
val add_subbytes : t -> Bytes.t -> int -> int -> unit
val add_substitute : t -> (string -> string) -> string -> unit
val add_buffer : t -> t -> unit
val add_channel : t -> in_channel -> int -> unit
val output_buffer : out_channel -> t -> unit
#if OCAML >= 405
val truncate : t -> int -> unit
#endif
#if OCAML >= 406
val add_utf_8_uchar : t -> Uchar.t -> unit
val add_utf_16le_uchar : t -> Uchar.t -> unit
val add_utf_16be_uchar : t -> Uchar.t -> unit
#endif
#if OCAML >= 407
(** [*_seq] functions were introduced in OCaml 4.07.0, and are _not_ implemented in extlib for older OCaml versions *)
val to_seq : t -> char Seq.t
val to_seqi : t -> (int * char) Seq.t
val add_seq : t -> char Seq.t -> unit
val of_seq : char Seq.t -> t
#endif
end