1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
// boost
#include <boost/python.hpp>
#include "python_featureset.hpp"
#include "python_utils.hpp"
python_featureset::python_featureset(boost::python::object iterator)
{
ensure_gil lock;
begin_ = boost::python::stl_input_iterator<mapnik::feature_ptr>(iterator);
}
python_featureset::~python_featureset()
{
ensure_gil lock;
begin_ = end_;
}
mapnik::feature_ptr python_featureset::next()
{
// checking to see if we've reached the end does not require the GIL.
if(begin_ == end_)
return mapnik::feature_ptr();
// getting the next feature might call into the interpreter and so the GIL must be held.
ensure_gil lock;
return *(begin_++);
}
|