guanaqo develop
Utilities for scientific software
Loading...
Searching...
No Matches
guanaqo::callback_streambuf Class Reference

#include <guanaqo/callback-streambuf.hpp>

Detailed Description

An implementation of a std::streambuf that calls the given callback function with the characters that are written.

Note
Not thread-safe.

Inspired by https://github.com/pybind/pybind11/blob/master/include/pybind11/iostream.h

Definition at line 22 of file callback-streambuf.hpp.

Inheritance diagram for guanaqo::callback_streambuf:
Collaboration diagram for guanaqo::callback_streambuf:

Public Types

using write_func_t = std::function<void(std::span<const char>)>

Public Member Functions

 callback_streambuf (write_func_t write_func, size_t buffer_size=1024)
 ~callback_streambuf () override
 Syncs before destroy.

Private Member Functions

size_t utf8_remainder () const
 Computes how many bytes at the end of the buffer are part of an incomplete sequence of UTF-8 bytes.
int sync () override
int overflow (int c) override

Private Attributes

write_func_t write_func
std::vector< char > buffer

Member Typedef Documentation

◆ write_func_t

using guanaqo::callback_streambuf::write_func_t = std::function<void(std::span<const char>)>

Definition at line 24 of file callback-streambuf.hpp.

Constructor & Destructor Documentation

◆ callback_streambuf()

guanaqo::callback_streambuf::callback_streambuf ( write_func_t write_func,
size_t buffer_size = 1024 )
inline

Definition at line 93 of file callback-streambuf.hpp.

◆ ~callback_streambuf()

guanaqo::callback_streambuf::~callback_streambuf ( )
inlineoverride

Syncs before destroy.

Definition at line 100 of file callback-streambuf.hpp.

Member Function Documentation

◆ utf8_remainder()

size_t guanaqo::callback_streambuf::utf8_remainder ( ) const
inlinenodiscardprivate

Computes how many bytes at the end of the buffer are part of an incomplete sequence of UTF-8 bytes.

Precondition
pbase() < pptr()

Definition at line 30 of file callback-streambuf.hpp.

◆ sync()

int guanaqo::callback_streambuf::sync ( )
inlineoverrideprivate

Definition at line 81 of file callback-streambuf.hpp.

◆ overflow()

int guanaqo::callback_streambuf::overflow ( int c)
inlineoverrideprivate

Definition at line 83 of file callback-streambuf.hpp.

Member Data Documentation

◆ write_func

write_func_t guanaqo::callback_streambuf::write_func
private

Definition at line 103 of file callback-streambuf.hpp.

◆ buffer

std::vector<char> guanaqo::callback_streambuf::buffer
private

Definition at line 104 of file callback-streambuf.hpp.


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