• 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