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 #include <boost/python/module.hpp>
6 #include <boost/python/class.hpp>
7 #include <boost/python/operators.hpp>
8 #include <boost/python/scope.hpp>
9 #include "test_class.hpp"
10 #if __GNUC__ != 2
11 # include <ostream>
12 #else
13 # include <ostream.h>
14 #endif
15 
16 typedef test_class<> X;
17 typedef test_class<1> Y;
18 
operator <<(std::ostream & s,X const & x)19 std::ostream& operator<<(std::ostream& s, X const& x)
20 {
21     return s << x.value();
22 }
23 
operator <<(std::ostream & s,Y const & x)24 std::ostream& operator<<(std::ostream& s, Y const& x)
25 {
26     return s << x.value();
27 }
28 
29 
BOOST_PYTHON_MODULE(nested_ext)30 BOOST_PYTHON_MODULE(nested_ext)
31 {
32     using namespace boost::python;
33 
34     // Establish X as the current scope.
35     scope x_class
36         = class_<X>("X", init<int>())
37           .def(str(self))
38         ;
39 
40 
41     // Y will now be defined in the current scope
42     class_<Y>("Y", init<int>())
43         .def(str(self))
44         ;
45 }
46 
47 
48 #include "module_tail.cpp"
49 
50 
51 
52