Extensible character buffers.
This module implements character 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).
include sig ... endval sexp_of_t : t ‑> Base__.Sexplib.Sexp.tval create : int ‑> tcreate 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.
val contents : t ‑> stringReturn a copy of the current contents of the buffer. The buffer itself is unchanged.
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 string dst, starting
at character dst_pos.
Raise 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 Base.Blit.S_distinct with type src := t with type dst := stringval blit : (src, dst) Base.Blit_intf.blitval blito : (src, dst) Base.Blit_intf.blitoval unsafe_blit : (src, dst) Base.Blit_intf.blitval sub : (src, dst) Base.Blit_intf.subval subo : (src, dst) Base.Blit_intf.suboval nth : t ‑> int ‑> charget the (zero-based) n-th character of the buffer. Raise Invalid_argument if index
out of bounds
val reset : t ‑> unitEmpty the buffer and deallocate 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.
val add_substring : t ‑> string ‑> pos:int ‑> len:int ‑> unitadd_substring b s pos len takes len characters from offset pos in string s
and appends them at the end of the buffer b.