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 #ifndef SELF_DWA2002531_HPP
6 # define SELF_DWA2002531_HPP
7 
8 # include <boost/python/detail/prefix.hpp>
9 
10 namespace boost { namespace python {
11 
12 #define BOOST_PYTHON_SELF_IS_CLASS
13 
14 // Sink self_t into its own namespace so that we have a safe place to
15 // put the completely general operator templates which operate on
16 // it. It is possible to avoid this, but it turns out to be much more
17 // complicated and finally GCC 2.95.2 chokes on it.
18 namespace self_ns
19 {
20 # ifndef BOOST_PYTHON_SELF_IS_CLASS
21   enum self_t { self };
22 # else
23   struct self_t {};
24   extern BOOST_PYTHON_DECL self_t self;
25 # endif
26 }
27 
28 using self_ns::self_t;
29 using self_ns::self;
30 
31 }} // namespace boost::python
32 
33 #endif // SELF_DWA2002531_HPP
34