// 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 TUPLE_20020706_HPP #define TUPLE_20020706_HPP # include #include #include #include #include namespace boost { namespace python { namespace detail { struct BOOST_PYTHON_DECL tuple_base : object { protected: tuple_base(); tuple_base(object_cref sequence); BOOST_PYTHON_FORWARD_OBJECT_CONSTRUCTORS(tuple_base, object) private: static detail::new_reference call(object const&); }; } class tuple : public detail::tuple_base { typedef detail::tuple_base base; public: tuple() {} template explicit tuple(T const& sequence) : base(object(sequence)) { } public: // implementation detail -- for internal use only BOOST_PYTHON_FORWARD_OBJECT_CONSTRUCTORS(tuple, base) }; // // Converter Specializations // $$$ JDG $$$ moved here to prevent // // G++ bug complaining specialization // provided after instantiation namespace converter { template <> struct object_manager_traits : pytype_object_manager_traits<&PyTuple_Type,tuple> { }; } // for completeness inline tuple make_tuple() { return tuple(); } # define BOOST_PP_ITERATION_PARAMS_1 (3, (1, BOOST_PYTHON_MAX_ARITY, )) # include BOOST_PP_ITERATE() }} // namespace boost::python #endif