1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // Copyright David Abrahams 2002.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- #ifndef LONG_DWA2002627_HPP
- # define LONG_DWA2002627_HPP
- # include <boost/python/detail/prefix.hpp>
- # include <boost/python/object.hpp>
- # include <boost/python/converter/pytype_object_mgr_traits.hpp>
- namespace boost { namespace python {
- namespace detail
- {
- struct BOOST_PYTHON_DECL long_base : object
- {
- protected:
- long_base(); // new long_
- explicit long_base(object_cref rhs);
- explicit long_base(object_cref rhs, object_cref base);
-
- BOOST_PYTHON_FORWARD_OBJECT_CONSTRUCTORS(long_base, object)
-
- private:
- static detail::new_non_null_reference call(object const&);
- static detail::new_non_null_reference call(object const&, object const&);
- };
- }
- class long_ : public detail::long_base
- {
- typedef detail::long_base base;
- public:
- long_() {} // new long_
- template <class T>
- explicit long_(T const& rhs)
- : detail::long_base(object(rhs))
- {
- }
- template <class T, class U>
- explicit long_(T const& rhs, U const& base)
- : detail::long_base(object(rhs), object(base))
- {
- }
-
- public: // implementation detail -- for internal use only
- BOOST_PYTHON_FORWARD_OBJECT_CONSTRUCTORS(long_, base)
- };
- //
- // Converter Specializations
- //
- namespace converter
- {
- template <>
- struct object_manager_traits<long_>
- : pytype_object_manager_traits<&PyLong_Type,long_>
- {
- };
- }
- }} // namespace boost::python
- #endif // LONG_DWA2002627_HPP
|