# Module BatBuffer

    module BatBuffer: sig .. end

Extensible string buffers.

This module implements string buffers that automatically expand as necessary. It provides accumulative concatenation of strings in quasi-linear time (instead of quadratic time when strings are concatenated pairwise).

This module extends Stdlib's Buffer module, go there for documentation on the rest of the functions and types.
Author(s): Pierre Weis (Base module), Xavier Leroy (Base module), David Teller, Dawid Toton

    val enum : Buffer.t -> char BatEnum.t

Returns an enumeration of the characters of a buffer.

Contents of the enumeration is unspecified if the buffer is modified after the enumeration is returned.

    val of_enum : char BatEnum.t -> Buffer.t

Creates a buffer from a character enumeration.

    val blit : Buffer.t -> int -> string -> int -> int -> unit

`Buffer.blit b srcoff dst dstoff len` copies `len` characters from the current contents of the buffer `b` starting at offset `off`, starting at character number `srcoff`, to string `dst`, starting at character number `dstoff`.
Raises `Invalid_argument` if `srcoff` and `len` do not designate a valid substring of the buffer, or if `dstoff` and `len` do not designate a valid substring of `dst`.

    val add_input : Buffer.t -> BatInnerIO.input -> int -> unit

`add_input b ic n` reads exactly `n` character from the input `ic` and stores them at the end of buffer `b`. Raise `End_of_file` if the channel contains fewer than `n` characters.

    val add_channel : Buffer.t -> BatInnerIO.input -> int -> unit

    val output_buffer : 'a BatInnerIO.output -> Buffer.t -> unit

`output_buffer oc b` writes the current contents of buffer `b` on the output channel `oc`.

###### Boilerplate code

Printing

    val print : 'a BatInnerIO.output -> Buffer.t -> unit