Output buffer
#
mutable o_s
| : string | ; | (* | Buffer string | *) |
#
mutable o_max_len
| : int | ; | (* | Same as String.length s | *) |
#
mutable o_len
| : int | ; | (* | Length of the data present in the buffer = current position in the buffer | *) |
#
mutable o_offs
| : int | ; | (* | Length of data written and flushed out of the buffer.
The total number of bytes written to the buffer
is therefore o_offs + o_len . | *) |
#
o_init_len
| : int | ; | (* | Initial length of the buffer | *) |
#
o_make_room
| : t -> int -> unit | ; | (* | make_room buf n must provide space for at least the requested
number of bytes n , typically by reallocating a larger buffer
string or by flushing the data to a channel.
This function is only called when there is not enough space for n
bytes. | *) |
: Bi_share.Wr.tbl | ; | (* | Hash table used to map shared objects to positions in the input stream. | *) | |
: int | ; | (* | Initial length of the o_shared table. | *) |
Alternate make_room function: write to an out_channel.
Pair of convenience functions for creating a buffer that flushes data to an out_channel when it is full.
Pair of convenience functions for creating a buffer that flushes data to an object when it is full.
Guarantee that the buffer string has enough room for n additional bytes.
alloc buf n
makes room for n
bytes and returns the position
of the first byte in the buffer string buf.s
.
It behaves as if n
arbitrary bytes were added and it is
the user's responsibility to set them to some meaningful values
by accessing buf.s
directly.
add_substring dst src srcpos len
copies len
bytes from
string src
to buffer dst
starting from position srcpos
.
Add a byte to the buffer without checking that there is enough room for it.