std::basic_syncbuf
ヘッダ <syncstream> で定義 | ||
template< class CharT, | (C++20以上) | |
std::basic_syncbuf
は (ポインタとして構築時に提供される) std::basic_streambuf に対するラッパーです。 出力を内部バッファに蓄積し、破棄されるときおよび明示的に要求されたときに、その内容全体を、連続した文字のシーケンスとして現れるように、ラップされたバッファにアトミックに転送します。 同じバッファに行われるすべての出力が std::basic_syncbuf
のインスタンス (異なるインスタンスでも構いません) を通して行われる限り、データ競合は発生せず、ラップされたバッファに送られる文字がインターリーブしないことが保証されます。
std::basic_syncbuf
の一般的な実装は、ラップされる std::basic_streambuf へのポインタ、同期 (フラッシュ) 時にバッファの内容をラップされたバッファに転送するかどうかを表すブーリアンフラグ、ポリシーが同期時排出でない場合にフラッシュが保留されているかどうかを表すブーリアンフラグ、 Allocator
を使用した内部バッファ (std::string など)、およびラップされた同じストリームバッファにアクセスする複数のスレッド間の排出を同期するために使用するミューテックスへのポインタ (これらのミューテックスは basic_streambuf オブジェクトへのポインタをキーとして使用したハッシュマップで管理されるかもしれません) を保持します。
他の streambuf クラスと同様に、 std::basic_syncbuf
は通常、直接でなく、対応するストリーム std::osyncstream を通してのみアクセスされます。
一般的な文字型に対する2つの特殊化が定義されます。
ヘッダ <syncstream> で定義 | |
型 | 定義 |
syncbuf | basic_syncbuf<char> |
wsyncbuf | basic_syncbuf<wchar_t> |
目次 |
[編集]メンバ型
メンバ型 | 定義 |
char_type | CharT |
traits_type | Traits。 Traits::char_type が CharT でない場合、プログラムは ill-formed です |
int_type | Traits::int_type |
pos_type | Traits::pos_type |
off_type | Traits::off_type |
allocator_type | Allocator |
streambuf_type | std::basic_streambuf<CharT, Traits> |
[編集]メンバ関数
パブリックメンバ関数 | |
basic_syncbuf オブジェクトを構築します (パブリックメンバ関数) | |
basic_syncbuf object を代入します (パブリックメンバ関数) | |
2つの basic_syncbuf オブジェクトを入れ替えます (パブリックメンバ関数) | |
basic_syncbuf を破棄し、内部バッファを排出します (パブリックメンバ関数) | |
内部バッファ全体をラップされた streambuf にアトミックに転送します (パブリックメンバ関数) | |
ラップされた streambuf のポインタを取得します (パブリックメンバ関数) | |
この basic_syncbuf によって使用されるアロケータを取得します (パブリックメンバ関数) | |
現在の同期時排出ポリシーを変更します (パブリックメンバ関数) | |
プロテクテッドメンバ関数 | |
現在の同期時発行ポリシーに応じて、排出する、またはフラッシュの保留を記録します (パブリックメンバ関数) |
[編集]非メンバ関数
std::swap アルゴリズムの特殊化 (関数テンプレート) |
std::basic_streambuf から継承
メンバ型
メンバ型 | 定義 |
char_type | CharT |
traits_type | Traits。 Traits::char_type が CharT でない場合、プログラムは ill-formed です |
int_type | Traits::int_type |
pos_type | Traits::pos_type |
off_type | Traits::off_type |
メンバ関数
[仮想] | basic_streambuf オブジェクトを破棄します ( std::basic_streambuf<CharT,Traits> の仮想パブリックメンバ関数) |
ロケール | |
imbue() を呼びます ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数) | |
紐付けられているロケールのコピーを取得します ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数) | |
位置設定 | |
setbuf() を呼びます ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数) | |
seekoff() を呼びます ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数) | |
seekpos() を呼びます ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数) | |
sync() を呼びます ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数) | |
get 領域 | |
get 領域内の直ちに利用可能な文字数を取得します ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数) | |
入力シーケンスを進めて、その後、進めずに文字をひとつ読み込みます ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数) | |
入力シーケンスから文字をひとつ読み込み、シーケンスを進めます ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数) | |
stossc (C++98で非推奨)(C++17で削除) | sbumpc() を呼んだかのように入力シーケンスを進めて、その結果を破棄します (パブリックメンバ関数) |
シーケンスを進めずに入力シーケンスから文字をひとつ読み込みます ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数) | |
xsgetn() を呼びます ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数) | |
put 領域 | |
文字をひとつ put 領域に書き込み、次ポインタを進めます ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数) | |
xsputn() を呼びます ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数) | |
putback | |
入力シーケンスに文字をひとつ戻します ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数) | |
入力シーケンスの次ポインタを1つ前に移動させます ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数) |
プロテクテッドメンバ関数
basic_streambuf オブジェクトを構築します (プロテクテッドメンバ関数) | |
(C++11) | basic_streambuf オブジェクトを置き換えます (プロテクテッドメンバ関数) |
(C++11) | 2つの basic_streambuf オブジェクトを入れ替えます (プロテクテッドメンバ関数) |
ロケール | |
[仮想] | 紐付けられているロケールを変更します ( std::basic_streambuf<CharT,Traits> の仮想プロテクテッドメンバ関数) |
位置設定 | |
[仮想] | 可能であれば、バッファをユーザ定義の配列に置き換えます ( std::basic_streambuf<CharT,Traits> の仮想プロテクテッドメンバ関数) |
[仮想] | 入力シーケンス、出力シーケンス、またはその両方の次ポインタの位置を相対位置を使用して再設定します ( std::basic_streambuf<CharT,Traits> の仮想プロテクテッドメンバ関数) |
[仮想] | 入力シーケンス、出力シーケンス、またはその両方の次ポインタの位置を絶対位置を使用して再設定します ( std::basic_streambuf<CharT,Traits> の仮想プロテクテッドメンバ関数) |
[仮想] | バッファを紐付けられている文字シーケンスと同期します ( std::basic_streambuf<CharT,Traits> の仮想プロテクテッドメンバ関数) |
get 領域 | |
[仮想] | 紐付けられている入力シーケンス内の入力のために利用可能な文字数 (もし判れば) を取得します ( std::basic_streambuf<CharT,Traits> の仮想プロテクテッドメンバ関数) |
[仮想] | 紐付けられている入力シーケンスから get 領域に文字を読み込みます ( std::basic_streambuf<CharT,Traits> の仮想プロテクテッドメンバ関数) |
[仮想] | 紐付けられている入力シーケンスから get 領域に文字を読み込み、次ポインタを進めます ( std::basic_streambuf<CharT,Traits> の仮想プロテクテッドメンバ関数) |
[仮想] | 入力シーケンスから複数の文字を読み込みます ( std::basic_streambuf<CharT,Traits> の仮想プロテクテッドメンバ関数) |
get 領域の先頭、現在の文字、終端へのポインタを返します (プロテクテッドメンバ関数) | |
入力シーケンスの次ポインタを進めます (プロテクテッドメンバ関数) | |
入力シーケンスの先頭、次、終端ポインタの位置を再設定します (プロテクテッドメンバ関数) | |
put 領域 | |
[仮想] | 出力シーケンスに複数の文字を出力します ( std::basic_streambuf<CharT,Traits> の仮想プロテクテッドメンバ関数) |
[仮想] | put 領域から紐付けられている出力シーケンスに文字を書き込みます ( std::basic_streambuf<CharT,Traits> の仮想プロテクテッドメンバ関数) |
put 領域の先頭、現在の文字、終端へのポインタを返します (プロテクテッドメンバ関数) | |
出力シーケンスの次ポインタを進めます (プロテクテッドメンバ関数) | |
出力シーケンスの先頭、次、終端ポインタの位置を再設定します (プロテクテッドメンバ関数) | |
putback | |
[仮想] | 入力シーケンスに文字を戻します。 入力シーケンスを変更する可能性があります ( std::basic_streambuf<CharT,Traits> の仮想プロテクテッドメンバ関数) |