#include "Stroika/Foundation/StroikaPreComp.h"
#include "Stroika/Foundation/Execution/Synchronized.h"
#include "Stroika/Foundation/Streams/InputStream.h"
#include "BufferedInputStream.inl"
Go to the source code of this file.
Classes | |
class | Stroika::Foundation::Streams::BufferedInputStream::Ptr< ELEMENT_TYPE > |
Namespaces | |
namespace | Stroika::Foundation |
Functions | |
template<typename ELEMENT_TYPE > | |
Ptr< ELEMENT_TYPE > | Stroika::Foundation::Streams::BufferedInputStream::New (const typename InputStream::Ptr< ELEMENT_TYPE > &realIn, optional< Streams::SeekableFlag > seekable={}) |
BufferedInputStream is an InputStream::Ptr<ELEMENT_TYPE> which provides buffered access. This is useful if calls to the underling stream source can be expensive. This class loads chunks of the stream into memory, and reduces calls to the underlying stream. | |
Ptr< ELEMENT_TYPE > Stroika::Foundation::Streams::BufferedInputStream::New | ( | const typename InputStream::Ptr< ELEMENT_TYPE > & | realIn, |
optional< Streams::SeekableFlag > | seekable = {} |
||
) |
BufferedInputStream is an InputStream::Ptr<ELEMENT_TYPE> which provides buffered access. This is useful if calls to the underling stream source can be expensive. This class loads chunks of the stream into memory, and reduces calls to the underlying stream.
Specifying true (seekable) when the source stream is not seekable is allowed, but requires enuf memory to buffer the ENTIRE contents of the stream (other cases just buffer a bit so require more modest amounts of memory).
This can be used to turn ANY non-seekable stream into a seekable one (but NOTE - that means its a different stream, and the underlying original stream will be left at an arbitrary seek point).