hamigaki.png

前のページ 上に戻る ホーム 次のページ

Class template shared_coroutineN

hamigaki::coroutines::shared_coroutineN —

Synopsis

template<typename R, typename T1, typename T2, ..., typename TN> 
class shared_coroutineN {
public:
  // types
  typedef selfN<R, T1, T2, ..., TN> self;

  // construct/copy/destruct
  shared_coroutineN();
  shared_coroutineN(const shared_coroutineN&);
  template<typename Functor> 
    shared_coroutineN(const Functor&, std::ptrdiff_t = -1);

  // queries
  bool exited() const;
  bool empty() const;

  // modifiers
  void exit();

  // invocations
  R operator()(T1, T2, ..., TN) const;
  boost::optional<R> operator()(std::nothrow_t, T1, T2, ..., TN) const;
};

Description

shared_coroutineN construct/copy/destruct

  1. shared_coroutineN();
    Effects: ファンクタを保持していない空のコルーチンを生成する。
    Postconditions: empty()
  2. shared_coroutineN(const shared_coroutineN& x);
    Effects: xとコルーチンを共有する。
    Postconditions: !empty()
  3. template<typename Functor> 
      shared_coroutineN(const Functor& f, std::ptrdiff_t stack_size = -1);
    Effects: スタックサイズがstack_sizeのコルーチンを生成する。ファンクタfのコピーがコルーチンのエントリポイントに設定される。
    Postconditions: !empty()

shared_coroutineN queries

  1. bool exited() const;
    Returns: コルーチンの保持するファンクタが終了していれば、true
  2. bool empty() const;
    Returns: コルーチンがコンテキストを保持していない場合、true

shared_coroutineN modifiers

  1. void exit();
    Effects: コルーチンの実行を中断し、終了させる。
    Postconditions: exited()

shared_coroutineN invocations

  1. R operator()(T1 a1, T2 a2, ..., TN aN) const;
    Effects: コルーチンの実行を再開し、その結果を返す。
    Returns: コルーチンの戻り値
    Throws:

    コルーチンがexit()により終了した場合には、coroutine_exitedを送出する。

    捕捉されない例外によりコルーチンが異常終了した場合は、その例外の型情報を保持するabnormal_exitを送出する。

  2. boost::optional<R> operator()(std::nothrow_t, T1 a1, T2 a2, ..., TN aN) const;
    Effects: コルーチンの実行を再開し、その結果を返す。
    Returns: コルーチンが終了した、あるいは未捕捉例外により異常終了して、戻り値がない場合は、boost::optional<R>()。それ以外の場合は、コルーチンの戻り値。
    Throws: 引数や戻り値のコピーコンストラクタが例外を送出する場合を除いて、いかなる例外も送出しない。
製作著作 © 2006-2008 Takeshi Mouri

前のページ 上に戻る ホーム 次のページ