package base

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module Base.BufferSource

Extensible character buffers.

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

Sourcemodule type S = sig ... end

Buffers using strings as underlying storage medium:

include S with type t = Caml.Buffer.t

The abstract type of buffers.

Sourceval sexp_of_t : t -> Sexplib0.Sexp.t
Sourceval create : int -> t

create n returns a fresh buffer, initially empty. The n parameter is the initial size of the internal storage medium that holds the buffer contents. That storage is automatically reallocated when more than n characters are stored in the buffer, but shrinks back to n characters when reset is called.

For best performance, n should be of the same order of magnitude as the number of characters that are expected to be stored in the buffer (for instance, 80 for a buffer that holds one output line). Nothing bad will happen if the buffer grows beyond that limit, however. In doubt, take n = 16 for instance.

Sourceval contents : t -> string

Return a copy of the current contents of the buffer. The buffer itself is unchanged.

Sourceval contents_bytes : t -> bytes

blit ~src ~src_pos ~dst ~dst_pos ~len copies len characters from the current contents of the buffer src, starting at offset src_pos to bytes dst, starting at character dst_pos.

Raises Invalid_argument if src_pos and len do not designate a valid substring of src, or if dst_pos and len do not designate a valid substring of dst.

include Blit.S_distinct with type src := t with type dst := bytes
Sourceval blit : src:t -> src_pos:int -> dst:bytes -> dst_pos:int -> len:int -> unit
Sourceval blito : src:t -> ?src_pos:int -> ?src_len:int -> dst:bytes -> ?dst_pos:int -> unit -> unit
Sourceval unsafe_blit : src:t -> src_pos:int -> dst:bytes -> dst_pos:int -> len:int -> unit
Sourceval sub : t -> pos:int -> len:int -> bytes
Sourceval subo : ?pos:int -> ?len:int -> t -> bytes
Sourcemodule To_string : Blit.S_to_string with type t := t
Sourceval nth : t -> int -> char

Gets the (zero-based) n-th character of the buffer. Raises Invalid_argument if index out of bounds.

Sourceval length : t -> int

Returns the number of characters currently contained in the buffer.

Sourceval clear : t -> unit

Empties the buffer.

Sourceval reset : t -> unit

Empties the buffer and deallocates the internal storage holding the buffer contents, replacing it with the initial internal storage of length n that was allocated by create n. For long-lived buffers that may have grown a lot, reset allows faster reclamation of the space used by the buffer.

Sourceval add_char : t -> char -> unit

add_char b c appends the character c at the end of the buffer b.

Sourceval add_string : t -> string -> unit

add_string b s appends the string s at the end of the buffer b.

Sourceval add_substring : t -> string -> pos:int -> len:int -> unit

add_substring b s pos len takes len characters from offset pos in string s and appends them at the end of the buffer b.

Sourceval add_bytes : t -> bytes -> unit

add_bytes b s appends the bytes s at the end of the buffer b.

Sourceval add_subbytes : t -> bytes -> pos:int -> len:int -> unit

add_subbytes b s pos len takes len characters from offset pos in bytes s and appends them at the end of the buffer b.

Sourceval add_buffer : t -> t -> unit

add_buffer b1 b2 appends the current contents of buffer b2 at the end of buffer b1. b2 is not modified.

OCaml

Innovation. Community. Security.