69 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			69 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | // 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 |