// Copyright David Abrahams 2002. Permission to copy, use, // modify, sell and distribute this software is granted provided this // copyright notice appears in all copies. This software is provided // "as is" without express or implied warranty, and with no claim as // to its suitability for any purpose. #include #include #include #include #include "test_class.hpp" #include using namespace boost::python; typedef test_class<> X; int look(std::auto_ptr const& x) { return (x.get()) ? x->value() : -1; } int steal(std::auto_ptr x) { return x->value(); } int maybe_steal(std::auto_ptr& x, bool doit) { int n = x->value(); if (doit) x.release(); return n; } std::auto_ptr make() { return std::auto_ptr(new X(77)); } std::auto_ptr callback(object f) { std::auto_ptr x(new X(77)); return call >(f.ptr(), x); } std::auto_ptr extract_(object o) { return extract&>(o); } BOOST_PYTHON_MODULE(auto_ptr_ext) { class_, boost::noncopyable>("X", init()) .def("value", &X::value) ; def("look", look); def("steal", steal); def("maybe_steal", maybe_steal); def("make", make); def("callback", callback); def("extract", extract_); } #include "module_tail.cpp"