Skip to content

Latest commit

 

History

History
59 lines (52 loc) · 1.48 KB

sync.md

File metadata and controls

59 lines (52 loc) · 1.48 KB

sync

  • istream[meta header]
  • std[meta namespace]
  • basic_istream[meta class]
  • function[meta id-type]
int sync();

概要

ストリームバッファに対し、同期処理を指示する。

効果

  1. sentryオブジェクトを構築する。sentryオブジェクトが失敗を示した場合、何もしない。
  2. rdbuf()->pubsync()を呼び出す。ただし、rdbuf()がヌルポインタなら何もしない。
  3. rdbuf()->pubsync()-1を返した場合、setstate(badbit)を呼び出す。

戻り値

  • 成功した場合0
  • 失敗した場合-1
    • rdbuf()がヌルポインタの場合。
    • rdbuf()->pubsync()-1を返した場合。

実装例

int sync() {
  try {
    sentry s(*this, true);
    if (s) {
      if (auto sb = rdbuf()) {
        if (sb->pubsync() != -1) {
          return 0;
        }
        setstate(badbit);
      }
    }
  } catch (...) {
    例外を投げずにbadbitを設定する;
    if ((exceptions() & badbit) != 0) {
      throw;
    }
  }
  return -1;
}
  • sentry[link sentry.md]
  • rdbuf()[link /reference/ios/basic_ios/rdbuf.md]
  • pubsync()[link /reference/streambuf/basic_streambuf/pubsync.md]
  • setstate[link /reference/ios/basic_ios/setstate.md]
  • badbit[link /reference/ios/ios_base/type-iostate.md]
  • exceptions()[link /reference/ios/basic_ios/exceptions.md]

バージョン

言語

  • C++98

参照