Reads all available elements from an input stream, and collects them in an allocated buffer. If calling hasData() on the return value of this function returns true, you need to free that data yourself, as it has been allocated via malloc.
Reads exactly one element from an input stream.
Transfers elements from an input stream to an output stream, doing so continuously until the input stream reads 0 elements or an error occurs. The streams are not closed after transfer completes.
Writes exactly one element to an output stream.
A collection of helper functions for working with streams.