public void* get_region (size_t element_size, size_t offset, size_t n_elements)
Gets a pointer to a region in this.
The region starts at
offset many bytes from the start of the data and contains
n_elements many elements of
n_elements may be zero, but
element_size must always be non-zero. Ideally,
element_size is a static
constant (eg: sizeof a struct).
This function does careful bounds checking (including checking for arithmetic overflows) and returns a non-null pointer if the specified region lies entirely within the this. If the region is in some way out of range, or if an overflow has occurred, then null is returned.
Note: it is possible to have a valid zero-size region. In this case, the returned pointer will be equal to the base pointer of the data of
offset. This will be non-null except for the case
where this itself was a zero-sized region. Since it is unlikely that you will be using this function to check
for a zero-sized region in a zero-sized this, null effectively always means
a non-zero element size
an offset to the start of the region within the this
the number of elements in the region
the requested region, or null in case of an error