4#ifndef _Stroika_Foundation_Streams_BufferedInputStream_h_
5#define _Stroika_Foundation_Streams_BufferedInputStream_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
23namespace Stroika::Foundation::Streams::BufferedInputStream {
25 template <
typename ELEMENT_TYPE>
60 template <
typename ELEMENT_TYPE>
62 template <
typename ELEMENT_TYPE>
64 optional<Streams::SeekableFlag> seekable = {});
67 template <
typename ELEMENT_TYPE>
68 class IRep_ :
public InputStream::IRep<ELEMENT_TYPE> {
71 template <
typename ELEMENT_TYPE>
72 class Rep_Seekable_FromSeekable_;
73 template <
typename ELEMENT_TYPE,
size_t INLINE_BUF_SIZE>
74 class Rep_Seekable_FromUnSeekable_;
75 template <
typename ELEMENT_TYPE,
size_t INLINE_BUF_SIZE>
76 class Rep_UnSeekable_;
82 template <
typename ELEMENT_TYPE>
94 Ptr (
const Ptr& from) =
default;
95 Ptr (
Ptr&& from) =
default;
96 Ptr (
const shared_ptr<Private_::IRep_<ELEMENT_TYPE>>& from);
99 nonvirtual
Ptr& operator= (
const Ptr& rhs) =
default;
100 nonvirtual
Ptr& operator= (
Ptr&& rhs) =
default;
106 nonvirtual shared_ptr<Private_::IRep_<ELEMENT_TYPE>> GetSharedRep_ ()
const;
116#include "BufferedInputStream.inl"
A Streams::Ptr<ELEMENT_TYPE> is a smart-pointer to a stream of elements of type T.