package gapi-ocaml
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=b84b680528a5e050014103a8e7a60a5d43efd5fefc3f838310bd46769775ab48
md5=8ee26acf1f6c6f5e24c7b57fa070a0a2
doc/gapi-ocaml.netstring-local/Netbuffer/index.html
Module Netbuffer
Source
A Netbuffer.t is a buffer that can grow and shrink dynamically.
Creates a netbuffer which allocates initially this number of bytes. * The logical length is zero.
Return the buffer in the format as selected by the arg
Returns the buffer as tagged string, selecting the chosen representation
Extracting strings
sub nb k n
: returns the n characters starting at position n
from * netbuffer nb
as fresh string
Extraction with blit
blit_to_bytes nb srcpos dest destpos len
: Copies the len
bytes at * position srcpos
from nb
to the string dest
at position destpos
.
blit_to_memory nb srcpos dest destpos len
: Copies the len
bytes at * position srcpos
from nb
to the membuffer dest
at position destpos
.
Blits to a tagged buffer
Appending strings
add_string nb s
: Adds a copy of the string s
to the logical end of * the netbuffer nb
. If necessary, nb
grows.
Same for tagged string
Polymorphic version
add_substring nb s k n
: Adds the substring of s
starting at position * k
with length n
to the logical end of the netbuffer nb
. If necessary, * nb
grows. * * This is semantically the same as * add_string nb (String.sub s k n)
, but the extra copy is avoided.
Same for tagged string
Same as add_substring
, but gets data from a memory buffer
Polymorphic version
add_char_2 nb c1 c2
: Adds two chars at the end of the buffer
add_char_4 nb c1 c2 c3 c4
: Adds four chars at the end of the buffer
add_inplace nb f
: Calls the function f
to add bytes to the * netbuffer nb
. The arguments of f
are the buffer, the position * in the buffer, and the maximum length. The function f
must return * the actual number of added bytes; this number is also returned by * add_inplace
. * * Example: let n = add_inplace nb (Pervasives.input ch) * * The argument len
is the number of bytes to add (second argument of * f
). It defaults to the number of free bytes in the buffer after space * for at least one byte has been allocated.
These two functions work together, so that the effect of add_inplace
can be obtained in two steps. First, the user calls
let (s,pos,len) = area_for_additions nb
to get the area where to put new data of length n
, with n <= len
. After this the data is made valid by
advance n
Inserting strings
insert_string nb p s
: Inserts the value of string s
at position * p
into the netbuffer nb
insert_string nb p s k n
: Inserts a substring of string s
at position * p
into the netbuffer nb
. The substring is denoted by position k
* and has length n
Same for tagged string
Same for memory
insert_char nb p c
: Inserts character c
at position p
into * the netbuffer nb
Overwriting strings
put_string nb pos s
: Copies the string s
to the position pos
of netbuffer nb
blit_from_string src srcpos dest destpos len
: Copies the len
bytes * at position srcpos
from the string src
to the netbuffer dest
at * position destpos
. * * It is possible to copy the string beyond the end of the buffer. The * buffer is automatically enlarged in this case.
Same for memory
Same for tagged string
Deleting
delete nb k n
: Deletes the n
bytes at position k
of netbuffer * nb
in-place. * * The netbuffer does not shrink, however, i.e. the free space is not * given back to the memory manager.
Deletes all contents from the buffer. As delete
, the netbuffer does * not shrink.
Empty the buffer, deallocate the internal string, and replace it with a new string of length n
that was allocated by Netbuffer.create
n
.
try_shrinking nb
: If the length of the buffer is less than half of * the allocated space, the netbuffer is reallocated in order to save * memory.
Searching
index_from nb k c
: Searches the character c
in the netbuffer beginning * at position k
. If found, the position of the left-most occurence is * returned. Otherwise, Not_found
is raised.
Miscelleneous
Warning! This is a low-level function! * Returns the current string that internally holds the buffer. * The byte positions 0 to length - 1 actually store the contents of * the buffer. You can directly read and modify the buffer. Note that * there is no protection if you read or write positions beyond the * length of the buffer.