40 lines
944 B
C++
40 lines
944 B
C++
|
// Copyright David Abrahams 2002.
|
||
|
// Distributed under the Boost Software License, Version 1.0. (See
|
||
|
// accompanying file LICENSE_1_0.txt or copy at
|
||
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||
|
|
||
|
#include <boost/python/object/iterator_core.hpp>
|
||
|
#include <boost/python/object/function_object.hpp>
|
||
|
#include <boost/bind.hpp>
|
||
|
#include <boost/mpl/vector/vector10.hpp>
|
||
|
|
||
|
namespace boost { namespace python { namespace objects {
|
||
|
|
||
|
namespace
|
||
|
{
|
||
|
PyObject* identity(PyObject* args_, PyObject*)
|
||
|
{
|
||
|
PyObject* x = PyTuple_GET_ITEM(args_,0);
|
||
|
Py_INCREF(x);
|
||
|
return x;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
BOOST_PYTHON_DECL object const& identity_function()
|
||
|
{
|
||
|
static object result(
|
||
|
function_object(
|
||
|
py_function(&identity, mpl::vector2<PyObject*,PyObject*>())
|
||
|
)
|
||
|
);
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
void stop_iteration_error()
|
||
|
{
|
||
|
PyErr_SetObject(PyExc_StopIteration, Py_None);
|
||
|
throw_error_already_set();
|
||
|
}
|
||
|
|
||
|
}}} // namespace boost::python::objects
|