SS8_CAPACITY(3) Ssstr Manual SS8_CAPACITY(3)
NAME
ss8_capacity, ss8_reserve, ss8_shrink_to_fit - query and modify buffer
capacity of ssstr byte strings
SYNOPSIS
#include <ss8str.h>
size_t ss8_capacity(ss8str const *str);
ss8str *ss8_reserve(ss8str *str, size_t capacity);
ss8str *ss8_shrink_to_fit(ss8str *str);
DESCRIPTION
ss8_capacity() queries the ss8str at str for its capacity, which is the
maximum length of the byte string that it can hold without the need to
allocate additional (or any) dynamic storage.
ss8_reserve() ensures that the ss8str at str has at least the given ca‐
pacity by enlarging its buffer if necessary. The length and contents
of the string do not change. ss8_reserve() never lessens the capacity.
Reserving capacity ahead of time can improve efficiency when a large
number of insertions, concatenations, or replacements are about to be
performed and the final length of the string is known, either precisely
or approximately.
Reserved capacity is not available length; writing to ss8_muta‐
ble_cstr(str) beyond the length of *str results in undefined behavior.
See ss8_set_len(3) for ways to change the available length.
ss8_shrink_to_fit() reallocates the internal buffer of the ss8str at
str so that it is the minimum size required to hold its contents.
Shrinking to fit may improve memory usage if an ss8str is shortened by
a large factor and then retained for a long duration.
Behavior of these 3 functions is undefined unless str points to a valid
ss8str object.
RETURN VALUE
ss8_capacity() returns the maximum length of the byte string that the
ss8str pointed to by str can hold without allocating additional dynamic
storage.
ss8_reserve() and ss8_shrink_to_fit() return str.
NOTES
The capacity of an ss8str is never zero but has a platform-dependent
fixed minimum. Therefore, the capacity after performing
ss8_shrink_to_fit(ss8_clear(str));
is guaranteed to be greater than zero. This also means that the capac‐
ity does not necessarily match the length after calling
ss8_shrink_to_fit().
In general, ss8str functions that assign (copy) a string reserve just
the capacity needed for the destination string. Functions that insert,
append, or replace a substring heuristically grow the capacity in an
attempt to minimize reallocation. When a function shortens a string,
or does not require more than its current capacity, it does not alter
its capacity. Only a call to ss8_shrink_to_fit() decreases the capac‐
ity of an ss8str.
SEE ALSO
ss8_grow_len(3), ss8_len(3), ss8_set_len(3), ss8_set_len_to_cstrlen(3),
ssstr(7)
SSSTR 2023-12-30 SS8_CAPACITY(3)