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>
56 template <
typename ELEMENT_TYPE>
57 Ptr<ELEMENT_TYPE> New (
const typename InputStream::Ptr<ELEMENT_TYPE>& realIn, optional<bool> seekable = {});
58 template <
typename ELEMENT_TYPE>
60 optional<bool> seekable = {});
63 template <
typename ELEMENT_TYPE>
64 class IRep_ :
public InputStream::IRep<ELEMENT_TYPE> {
67 template <
typename ELEMENT_TYPE>
68 class Rep_Seekable_FromSeekable_;
69 template <
typename ELEMENT_TYPE,
size_t INLINE_BUF_SIZE>
70 class Rep_Seekable_FromUnSeekable_;
71 template <
typename ELEMENT_TYPE,
size_t INLINE_BUF_SIZE>
72 class Rep_UnSeekable_;
78 template <
typename ELEMENT_TYPE>
90 Ptr (
const Ptr& from) =
default;
91 Ptr (
Ptr&& from) =
default;
92 Ptr (
const shared_ptr<Private_::IRep_<ELEMENT_TYPE>>& from);
95 nonvirtual
Ptr& operator= (
const Ptr& rhs) =
default;
96 nonvirtual
Ptr& operator= (
Ptr&& rhs) =
default;
102 nonvirtual shared_ptr<Private_::IRep_<ELEMENT_TYPE>> GetSharedRep_ ()
const;
112#include "BufferedInputStream.inl"