OpenEnroth cf228e9
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
StreamBuffer< T > Class Template Reference

#include <StreamBuffer.h>

Public Member Functions

 StreamBuffer ()
 
 StreamBuffer (T *start, T *pos, T *end)
 
void reset (T *newStart, T *newPos, T *newEnd)
 
T * start () const
 
T * pos () const
 
T * end () const
 
size_t used () const
 
size_t remaining () const
 
void commit ()
 
size_t read (void *dst, size_t size)
 
size_t read (std::string *dst, size_t size)
 
size_t skip (size_t size)
 
size_t write (const void *src, size_t size)
 

Private Attributes

T * _start
 
T * _pos
 
T * _end
 

Detailed Description

template<class T>
requires (std::is_same_v<std::remove_const_t<T>, char>)
class StreamBuffer< T >

Three-pointer buffer used by InputStream and OutputStream.

Maintains the invariant that all three pointers are non-null and sorted: start <= pos <= end.

A default-constructed buffer points to a valid empty sentinel. This is mainly needed so that we don't have to jump through hoops when calling memcpy (calling it with nullptr is UB even if size is 0).

Template Parameters
Tchar for writable buffers, const char for read-only buffers.

Constructor & Destructor Documentation

◆ StreamBuffer() [1/2]

template<class T >
StreamBuffer< T >::StreamBuffer ( )
inline

◆ StreamBuffer() [2/2]

template<class T >
StreamBuffer< T >::StreamBuffer ( T *  start,
T *  pos,
T *  end 
)
inline

Member Function Documentation

◆ commit()

template<class T >
void StreamBuffer< T >::commit ( )
inline

◆ end()

template<class T >
T * StreamBuffer< T >::end ( ) const
inline

◆ pos()

template<class T >
T * StreamBuffer< T >::pos ( ) const
inline

◆ read() [1/2]

template<class T >
size_t StreamBuffer< T >::read ( std::string *  dst,
size_t  size 
)
inline

◆ read() [2/2]

template<class T >
size_t StreamBuffer< T >::read ( void *  dst,
size_t  size 
)
inline

◆ remaining()

template<class T >
size_t StreamBuffer< T >::remaining ( ) const
inline

◆ reset()

template<class T >
void StreamBuffer< T >::reset ( T *  newStart,
T *  newPos,
T *  newEnd 
)
inline

◆ skip()

template<class T >
size_t StreamBuffer< T >::skip ( size_t  size)
inline

◆ start()

template<class T >
T * StreamBuffer< T >::start ( ) const
inline

◆ used()

template<class T >
size_t StreamBuffer< T >::used ( ) const
inline

◆ write()

template<class T >
size_t StreamBuffer< T >::write ( const void *  src,
size_t  size 
)
inline

Member Data Documentation

◆ _end

template<class T >
T* StreamBuffer< T >::_end
private

◆ _pos

template<class T >
T* StreamBuffer< T >::_pos
private

◆ _start

template<class T >
T* StreamBuffer< T >::_start
private

The documentation for this class was generated from the following file: