Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/boost/python/long.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // Copyright David Abrahams 2002.
0002 // Distributed under the Boost Software License, Version 1.0. (See
0003 // accompanying file LICENSE_1_0.txt or copy at
0004 // http://www.boost.org/LICENSE_1_0.txt)
0005 #ifndef LONG_DWA2002627_HPP
0006 # define LONG_DWA2002627_HPP
0007 
0008 # include <boost/python/detail/prefix.hpp>
0009 
0010 # include <boost/python/object.hpp>
0011 # include <boost/python/converter/pytype_object_mgr_traits.hpp>
0012 
0013 namespace boost { namespace python { 
0014 
0015 namespace detail
0016 {
0017   struct BOOST_PYTHON_DECL long_base : object
0018   {
0019    protected:
0020       long_base(); // new long_
0021       explicit long_base(object_cref rhs);
0022       explicit long_base(object_cref rhs, object_cref base);
0023       
0024       BOOST_PYTHON_FORWARD_OBJECT_CONSTRUCTORS(long_base, object)
0025           
0026    private:
0027       static detail::new_reference call(object const&);
0028       static detail::new_reference call(object const&, object const&);
0029   };
0030 }
0031 
0032 class long_ : public detail::long_base
0033 {
0034     typedef detail::long_base base;
0035  public:
0036     long_() {} // new long_
0037 
0038     template <class T>
0039     explicit long_(T const& rhs)
0040         : detail::long_base(object(rhs))
0041     {
0042     }
0043 
0044     template <class T, class U>
0045     explicit long_(T const& rhs, U const& base)
0046         : detail::long_base(object(rhs), object(base))
0047     {
0048     }
0049     
0050  public: // implementation detail -- for internal use only
0051     BOOST_PYTHON_FORWARD_OBJECT_CONSTRUCTORS(long_, base)
0052 };
0053 
0054 //
0055 // Converter Specializations
0056 //
0057 namespace converter
0058 {
0059   template <>
0060   struct object_manager_traits<long_>
0061       : pytype_object_manager_traits<&PyLong_Type,long_>
0062   {
0063   };
0064 }
0065 
0066 }} // namespace boost::python
0067 
0068 #endif // LONG_DWA2002627_HPP