memorybuf::out_dynamic Class Reference

An output streambuf for memory access. More...

Inheritance diagram for memorybuf::out_dynamic:
Collaboration diagram for memorybuf::out_dynamic:

Public Member Functions

 out_dynamic ()
 Default construct - no initial reserved number of bytes. More...
 
 out_dynamic (size_t nbytes)
 Default construct with initial reserved number of bytes. More...
 
 out_dynamic (::Foam::List< char > &&buffer)
 Move construct from List. More...
 
template<int SizeMin>
 out_dynamic (::Foam::DynamicList< char, SizeMin > &&buffer)
 Move construct from DynamicList (uses entire capacity) More...
 
void sync_pbuffer ()
 Sync put buffer pointers to agree with list dimensions. More...
 
void reserve (const std::streamsize len)
 Increase capacity (if needed) and adjust buffer pointers. Applies a min-size and capacity doubling. More...
 
void reserve_exact (const std::streamsize len)
 Increase capacity for at least this size. Does not apply min-size or capacity doubling etc. More...
 
void extend (std::streamsize count)
 Increase (reserve) space for another count entries. More...
 
void extend_exact (std::streamsize count)
 Increase (reserve) space for another count entries. More...
 
void clearStorage ()
 Clear storage. More...
 
void shrink_to_fit ()
 Shrink storage to addressed storage. More...
 
void swap (List< char > &other)
 Exchange buffer content and parameter contents, reset positions. More...
 
template<int SizeMin>
void swap (DynamicList< char, SizeMin > &other)
 Exchange buffer content and parameter contents, reset positions. More...
 
DynamicList< char > release ()
 Reset buffer and return contents as a DynamicList. The list size corresponds to the region of output. More...
 
void shrink ()
 Same as shrink_to_fit() More...
 
- Public Member Functions inherited from memorybuf::out_base
 out_base ()=default
 Default construct. More...
 
 out_base (char *s, std::streamsize n)
 Construct for character array (can be nullptr) and number of bytes. More...
 
void resetp (char *s, std::streamsize n)
 Reset put buffer with character data (can be nullptr) and count. More...
 
std::streamsize span_tellp () const
 The current buffer put position. More...
 
std::streamsize span_capacity () const
 The put buffer capacity. More...
 
char * data_bytes () const
 The span data (start of output characters) More...
 
std::streamsize size_bytes () const
 The span size (size of output buffer) More...
 
bool in_range (std::streampos pos) const
 True if position is within the current output range. More...
 
auto view () const
 A string view of the current output region. More...
 
auto view (size_t pos, size_t len) const
 A sub-slice string view of the current output region. More...
 
void pop_back (int n=1)
 Decrease the put area by 1 or more elements. More...
 
void overwrite (std::streampos pos, const char *data, std::streamsize count)
 Overwrite a sub-slice with character content. More...
 
void overwrite (std::streampos pos, char c)
 Overwrite a single character. More...
 
void info (Ostream &os) const
 Some information about the output buffer position/capacity. More...
 

Static Public Member Functions

static constexpr label min_size () noexcept
 Normal lower capacity limit. More...
 
static constexpr label max_size () noexcept
 The largest storage size. More...
 
static constexpr label max_size_2 () noexcept
 The 1/2 of max_size() - rounded to power-of-two. More...
 
static constexpr label max_size_4 () noexcept
 The 1/4 of max_size() - rounded to power-of-two. More...
 

Protected Member Functions

virtual int overflow (int_type c=traits_type::eof())
 Handle overflow. More...
 
virtual std::streamsize xsputn (const char *s, std::streamsize n)
 Put sequence of characters. More...
 
- Protected Member Functions inherited from memorybuf
virtual std::streampos seekoff (std::streamoff off, std::ios_base::seekdir way, std::ios_base::openmode which=std::ios_base::in|std::ios_base::out)
 Set position pointer to relative position. More...
 
virtual std::streampos seekpos (std::streampos pos, std::ios_base::openmode which=std::ios_base::in|std::ios_base::out)
 Set position pointer to absolute position. More...
 

Detailed Description

An output streambuf for memory access.

Definition at line 608 of file memoryStreamBuffer.H.

Constructor & Destructor Documentation

◆ out_dynamic() [1/4]

out_dynamic ( )
inline

Default construct - no initial reserved number of bytes.

Definition at line 667 of file memoryStreamBuffer.H.

References memorybuf::out_dynamic::sync_pbuffer().

Here is the call graph for this function:

◆ out_dynamic() [2/4]

out_dynamic ( size_t  nbytes)
inline

Default construct with initial reserved number of bytes.

Definition at line 675 of file memoryStreamBuffer.H.

References memorybuf::out_dynamic::sync_pbuffer().

Here is the call graph for this function:

◆ out_dynamic() [3/4]

out_dynamic ( ::Foam::List< char > &&  buffer)
inline

Move construct from List.

Definition at line 685 of file memoryStreamBuffer.H.

References memorybuf::out_dynamic::sync_pbuffer().

Here is the call graph for this function:

◆ out_dynamic() [4/4]

out_dynamic ( ::Foam::DynamicList< char, SizeMin > &&  buffer)
inline

Move construct from DynamicList (uses entire capacity)

Definition at line 696 of file memoryStreamBuffer.H.

References memorybuf::out_dynamic::sync_pbuffer(), and List< T >::transfer().

Here is the call graph for this function:

Member Function Documentation

◆ overflow()

virtual int overflow ( int_type  c = traits_type::eof())
inlineprotectedvirtual

Handle overflow.

Definition at line 628 of file memoryStreamBuffer.H.

References Foam::constant::universal::c, and memorybuf::out_dynamic::extend().

Here is the call graph for this function:

◆ xsputn()

virtual std::streamsize xsputn ( const char *  s,
std::streamsize  n 
)
inlineprotectedvirtual

Put sequence of characters.

Reimplemented from memorybuf::out_base.

Definition at line 644 of file memoryStreamBuffer.H.

References Foam::BitOps::count(), memorybuf::out_dynamic::extend(), n, and s.

Here is the call graph for this function:

◆ min_size()

static constexpr label min_size ( )
inlinestaticnoexcept

Normal lower capacity limit.

512 bytes is a bit arbitrary but consistent with std::stringstream

Definition at line 711 of file memoryStreamBuffer.H.

Referenced by memorybuf::out_dynamic::reserve().

Here is the caller graph for this function:

◆ max_size()

static constexpr label max_size ( )
inlinestaticnoexcept

The largest storage size.

Definition at line 716 of file memoryStreamBuffer.H.

References UList< T >::max_size().

Referenced by memorybuf::out_dynamic::max_size_2(), and memorybuf::out_dynamic::reserve().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ max_size_2()

static constexpr label max_size_2 ( )
inlinestaticnoexcept

The 1/2 of max_size() - rounded to power-of-two.

Definition at line 724 of file memoryStreamBuffer.H.

References memorybuf::out_dynamic::max_size().

Referenced by memorybuf::out_dynamic::max_size_4(), and memorybuf::out_dynamic::reserve().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ max_size_4()

static constexpr label max_size_4 ( )
inlinestaticnoexcept

The 1/4 of max_size() - rounded to power-of-two.

Definition at line 732 of file memoryStreamBuffer.H.

References memorybuf::out_dynamic::max_size_2().

Referenced by memorybuf::out_dynamic::reserve().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sync_pbuffer()

void sync_pbuffer ( )
inline

Sync put buffer pointers to agree with list dimensions.

Sets put pointer to the begin (rewind).

Definition at line 742 of file memoryStreamBuffer.H.

References UList< T >::data(), memorybuf::out_base::resetp(), and UList< T >::size().

Referenced by memorybuf::out_dynamic::clearStorage(), memorybuf::out_dynamic::out_dynamic(), memorybuf::out_dynamic::release(), memorybuf::out_dynamic::reserve(), memorybuf::out_dynamic::reserve_exact(), memorybuf::out_dynamic::shrink_to_fit(), and memorybuf::out_dynamic::swap().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ reserve()

void reserve ( const std::streamsize  len)
inline

Increase capacity (if needed) and adjust buffer pointers. Applies a min-size and capacity doubling.

Definition at line 751 of file memoryStreamBuffer.H.

References memorybuf::out_dynamic::max_size(), memorybuf::out_dynamic::max_size_2(), memorybuf::out_dynamic::max_size_4(), memorybuf::out_dynamic::min_size(), List< T >::resize_copy(), UList< T >::size(), memorybuf::out_base::span_tellp(), and memorybuf::out_dynamic::sync_pbuffer().

Referenced by memorybuf::out_dynamic::extend(), and ocharstream::reserve().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ reserve_exact()

void reserve_exact ( const std::streamsize  len)
inline

Increase capacity for at least this size. Does not apply min-size or capacity doubling etc.

Definition at line 809 of file memoryStreamBuffer.H.

References List< T >::resize_copy(), UList< T >::size(), memorybuf::out_base::span_tellp(), and memorybuf::out_dynamic::sync_pbuffer().

Referenced by memorybuf::out_dynamic::extend_exact(), and ocharstream::reserve_exact().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ extend()

void extend ( std::streamsize  count)
inline

Increase (reserve) space for another count entries.

Definition at line 824 of file memoryStreamBuffer.H.

References Foam::BitOps::count(), memorybuf::out_dynamic::reserve(), and memorybuf::out_base::span_tellp().

Referenced by ocharstream::append(), ocharstream::extend(), memorybuf::out_dynamic::overflow(), and memorybuf::out_dynamic::xsputn().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ extend_exact()

void extend_exact ( std::streamsize  count)
inline

Increase (reserve) space for another count entries.

Definition at line 832 of file memoryStreamBuffer.H.

References Foam::BitOps::count(), memorybuf::out_dynamic::reserve_exact(), and memorybuf::out_base::span_tellp().

Referenced by ocharstream::extend_exact().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ clearStorage()

void clearStorage ( )
inline

Clear storage.

Definition at line 840 of file memoryStreamBuffer.H.

References List< T >::clear(), and memorybuf::out_dynamic::sync_pbuffer().

Here is the call graph for this function:

◆ shrink_to_fit()

void shrink_to_fit ( )
inline

Shrink storage to addressed storage.

Definition at line 849 of file memoryStreamBuffer.H.

References List< T >::resize(), memorybuf::out_base::span_tellp(), and memorybuf::out_dynamic::sync_pbuffer().

Referenced by memorybuf::out_dynamic::shrink().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ swap() [1/2]

void swap ( List< char > &  other)
inline

Exchange buffer content and parameter contents, reset positions.

Definition at line 861 of file memoryStreamBuffer.H.

References List< T >::resize(), memorybuf::out_base::span_tellp(), UList< T >::swap(), and memorybuf::out_dynamic::sync_pbuffer().

Referenced by ocharstream::swap().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ swap() [2/2]

void swap ( DynamicList< char, SizeMin > &  other)
inline

Exchange buffer content and parameter contents, reset positions.

Definition at line 873 of file memoryStreamBuffer.H.

References DynamicList< T, SizeMin >::capacity(), DynamicList< T, SizeMin >::resize(), memorybuf::out_base::span_tellp(), DynamicList< T, SizeMin >::swap(), and memorybuf::out_dynamic::sync_pbuffer().

Here is the call graph for this function:

◆ release()

DynamicList<char> release ( )
inline

Reset buffer and return contents as a DynamicList. The list size corresponds to the region of output.

Definition at line 887 of file memoryStreamBuffer.H.

References DynamicList< T, SizeMin >::clearStorage(), UList< T >::empty(), DynamicList< T, SizeMin >::resize(), memorybuf::out_base::span_tellp(), and memorybuf::out_dynamic::sync_pbuffer().

Referenced by ocharstream::release().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ shrink()

void shrink ( )
inline

Same as shrink_to_fit()

Definition at line 904 of file memoryStreamBuffer.H.

References memorybuf::out_dynamic::shrink_to_fit().

Here is the call graph for this function:

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