31 template <
typename T
char>
class basic_imembuf ;
32 using imembuf = basic_imembuf<char> ;
33 using wimembuf = basic_imembuf<wchar_t> ;
51template <
typename T
char>
62 std::streamsize xsgetn( Tchar * s , std::streamsize n )
override ;
63 std::streampos seekpos( std::streampos pos , std::ios_base::openmode which )
override ;
64 std::streampos seekoff( std::streamoff off , std::ios_base::seekdir way , std::ios_base::openmode which )
override ;
74 template <
typename T
int>
static std::streamsize min( Tint a , std::streamsize b ) ;
81template <
typename T
char>
84 return std::min(
static_cast<std::streamsize
>(a) , b ) ;
87template <
typename T
char>
92 using base_t = std::basic_streambuf<Tchar> ;
93 Tchar * mp =
const_cast<Tchar*
>(m_p) ;
94 base_t::setg( mp , mp , mp+m_n ) ;
97template <
typename T
char>
102 using base_t = std::basic_streambuf<Tchar> ;
103 Tchar * mp =
const_cast<Tchar*
>(m_p) ;
104 base_t::setg( mp , mp , mp+m_n ) ;
107template <
typename T
char>
110 using base_t = std::basic_streambuf<Tchar> ;
111 Tchar * gp = base_t::gptr() ;
112 std::streamsize n = min( m_p+m_n-gp , n_in ) ;
115 std::copy( gp , gp+n , s ) ;
116 base_t::gbump(
static_cast<int>(n) ) ;
121template <
typename T
char>
124 using base_t = std::basic_streambuf<Tchar> ;
125 if( ( which & std::ios_base::in ) && pos_in > 0 )
127 Tchar * mp =
const_cast<Tchar*
>(m_p) ;
128 int pos =
static_cast<int>(pos_in) ;
129 Tchar * p = std::min( mp+pos , mp+m_n ) ;
130 base_t::setg( mp , p , mp+m_n ) ;
139template <
typename T
char>
142 using base_t = std::basic_streambuf<Tchar> ;
143 if( which & std::ios_base::in )
145 Tchar * gp = base_t::gptr() ;
146 Tchar * mp =
const_cast<Tchar*
>(m_p) ;
147 if( way == std::ios_base::beg )
148 gp = std::max( mp , std::min(mp+off,mp+m_n) ) ;
149 else if( way == std::ios_base::cur )
150 gp = std::max( mp , std::min(gp+off,mp+m_n) ) ;
152 gp = std::max( mp , std::min(mp+m_n+off,mp+m_n) ) ;
153 base_t::setg( mp , gp , mp+m_n ) ;
154 return std::streamoff(gp-mp) ;
An input streambuf that takes its data from a fixed-size const buffer.
basic_imembuf(const Tchar *p, std::size_t n)
Constructor.
A class template like c++17's std::basic_string_view.