boost/python/stl_iterator.hpp
はじめに
<boost/python/stl_iterator.hpp>
は、Python の走査可能オブジェクトから C++ のイテレータを作成する型を提供する。
クラス
stl_input_iterator
クラステンプレート
stl_input_iterator
クラステンプレートの概要
namespace boost { namespace python
{
template <class ValueType>
struct stl_input_iterator
{
typedef std::ptrdiff_t difference_type;
typedef ValueType value_type;
typedef ValueType* pointer;
typedef ValueType reference;
typedef std::input_iterator_tag iterator_category;
stl_input_iterator();
stl_input_iterator(object const& ob);
stl_input_iterator& operator++();
stl_input_iterator operator++(int);
ValueType operator*() const;
friend bool operator==(stl_input_iterator const& lhs, stl_input_iterator const& rhs);
friend bool operator!=(stl_input_iterator const& lhs, stl_input_iterator const& rhs);
private:
object it; // 説明のためにのみ記載
object ob; // 説明のためにのみ記載
};
}}
stl_input_iterator
クラステンプレートのコンストラクタ
-
stl_input_iterator()
- 効果
シーケンスの終端を表すのに使用する、末尾の直後を指す入力イテレータを作成する。
- 事後条件
this が末尾の直後。
- 例外
なし。
stl_input_iterator
クラステンプレートの変更メソッド
-
stl_input_iterator &operator++()
- 効果
this->it.attr("next")() を呼び出し、結果を this->ob に格納する。シーケンスに走査するものが残っていない場合は this->ob に object() を設定する。
- 事後条件
this が参照剥がし可能か末尾の直後。
- 戻り値
*this。
-
stl_input_iterator operator++(int)
- 効果
stl_input_iterator tmp = *this; ++*this; return tmp;
- 事後条件
this が逆参照可能か末尾の直後。
stl_input_iterator
クラステンプレートのオブザーバ
-
friend bool operator==(stl_input_iterator const &lhs, stl_input_iterator const &rhs)
例
#include <boost/python/object.hpp>
#include <boost/python/stl_iterator.hpp>
#include <list>
using namespace boost::python;
std::list<int> sequence_to_int_list(object const& ob)
{
stl_input_iterator<int> begin(ob), end;
return std::list<int>(begin, end);
}