File: python_featureset.cpp

package info (click to toggle)
mapnik 2.2.0%2Bds1-7
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 30,288 kB
  • ctags: 18,382
  • sloc: cpp: 115,128; python: 9,298; xml: 5,692; ansic: 3,726; makefile: 160; sh: 159; lisp: 13
file content (30 lines) | stat: -rw-r--r-- 685 bytes parent folder | download | duplicates (2)
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_++);
}