package gapi-ocaml
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=b84b680528a5e050014103a8e7a60a5d43efd5fefc3f838310bd46769775ab48
md5=8ee26acf1f6c6f5e24c7b57fa070a0a2
doc/gapi-ocaml.netstring-local/Netbuffer/index.html
Module NetbufferSource
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 nbto get the area where to put new data of length n, with n <= len. After this the data is made valid by
advance nInserting 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.