[C++-sig] boost.python iterators

Dirk Steenpass steenpaz at sdf-eu.org
Tue Aug 16 14:42:07 CEST 2005


On Mon, 15 Aug 2005 22:35:45 -0400, David Abrahams wrote:

> 
> Dirk, you're in the wrong mailing list/newsgroup.  Try the Python C++
> sig (where followups are directed).

Sorry.

[snip]

> Probably your simplest solution would be something like:
> 
>     python::object Elements(A& a, A::SizeType n)
>     {
>         return 
>           python::range<python::default_call_policies, A>(
>               boost::bind(&A::begin, _1, n)
>             , boost::bind(&A::end, _1, n)
>           )(boost::ref(a));
>     }
> 
> Then wrap that.  We create a new Python function object on the fly
> each time and invoke it.  The bind expressions just bind n into the
> accessors so that they take only a single argument.
> 
> HTH,
> 

Yep, that is neat and works. Though the default_call_policies cannot be
used as the wrapped iterator returns by reference.

Thx, dirk

[snip]

-- 
Dirk Steenpass





More information about the Cplusplus-sig mailing list