// 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 |