• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  // Copyright David Abrahams 2002.
2  // Distributed under the Boost Software License, Version 1.0. (See
3  // accompanying file LICENSE_1_0.txt or copy at
4  // http://www.boost.org/LICENSE_1_0.txt)
5  
6  #include <boost/python/module.hpp>
7  #include <boost/python/def.hpp>
8  #include <boost/python/long.hpp>
9  #include <boost/python/class.hpp>
10  #define BOOST_ENABLE_ASSERT_HANDLER
11  #include <boost/assert.hpp>
12  
13  using namespace boost::python;
14  
new_long()15  object new_long()
16  {
17      return long_();
18  }
19  
longify(object x)20  long_ longify(object x)
21  {
22      return long_(x);
23  }
24  
longify_string(char const * s)25  object longify_string(char const* s)
26  {
27      return long_(s);
28  }
29  
is_long1(long_ & x)30  char const* is_long1(long_& x)
31  {
32      long_ y = x;
33      x += 50;
34      BOOST_ASSERT(x == y + 50);
35      return "yes";
36  }
37  
is_long2(char const *)38  int is_long2(char const*)
39  {
40      return 0;
41  }
42  
43  // tests for accepting objects (and derived classes) in constructors
44  // from "Milind Patil" <milind_patil-at-hotmail.com>
45  
46  struct Y
47  {
YY48      Y(boost::python::long_) {}
49  };
50  
BOOST_PYTHON_MODULE(long_ext)51  BOOST_PYTHON_MODULE(long_ext)
52  {
53      def("new_long", new_long);
54      def("longify", longify);
55      def("longify_string", longify_string);
56      def("is_long", is_long1);
57      def("is_long", is_long2);
58  
59      class_< Y >("Y", init< boost::python::long_ >())
60          ;
61  }
62  
63  #include "module_tail.cpp"
64