diff -r 000000000000 -r bde4ae8d615e os/ossrv/ossrv_pub/boost_apis/boost/tr1/utility.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/ossrv/ossrv_pub/boost_apis/boost/tr1/utility.hpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,122 @@ +// (C) Copyright John Maddock 2005. +// Use, modification and distribution are subject to 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 BOOST_TR1_UTILITY_HPP_INCLUDED +# define BOOST_TR1_UTILITY_HPP_INCLUDED +# include + +#ifdef BOOST_HAS_TR1_UTILITY + +# ifdef BOOST_HAS_INCLUDE_NEXT +# include_next BOOST_TR1_HEADER(utility) +# else +# include BOOST_TR1_STD_HEADER(BOOST_TR1_PATH(utility)) +# endif + +#else + +#if defined(BOOST_TR1_USE_OLD_TUPLE) + +#include +#include +#include +#include + + +namespace std{ namespace tr1{ + +template struct tuple_size; // forward declaration +template < int I, class T> struct tuple_element; // forward declaration + +#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +template +struct tuple_size< ::std::pair > + : public ::boost::integral_constant< ::std::size_t, 2> +{ +}; + +template +struct tuple_element<0, ::std::pair > +{ + typedef typename std::pair::first_type type; +}; + +template +struct tuple_element<1, std::pair > +{ + typedef typename std::pair::second_type type; +}; +#endif + +namespace tuple_detail{ + template + struct tuple_get_result + { + typedef typename boost::mpl::if_c::type t1; + typedef typename boost::add_reference::type type; + }; + template + struct const_tuple_get_result + { + typedef typename boost::mpl::if_c::type t1; +# if BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x582)) + // I have absolutely no idea why add_const is not working here for Borland! + // It passes all other free-standing tests, some strange interaction going on + typedef typename boost::add_reference< const t1 >::type type; +# else + typedef typename boost::add_const::type t2; + typedef typename boost::add_reference::type type; +# endif + }; + +template +inline typename tuple_detail::tuple_get_result::type get(std::pair& p, const ::boost::true_type&) +{ + return p.first; +} + +template +inline typename tuple_detail::const_tuple_get_result::type get(const std::pair& p, const ::boost::true_type&) +{ + return p.first; +} + +template +inline typename tuple_detail::tuple_get_result::type get(std::pair& p, const ::boost::false_type&) +{ + return p.second; +} + +template +inline typename tuple_detail::const_tuple_get_result::type get(const std::pair& p, const ::boost::false_type&) +{ + return p.second; +} + +} + +template +inline typename tuple_detail::tuple_get_result::type get(std::pair& p) +{ + return tuple_detail::get(p, boost::integral_constant()); +} + +template +inline typename tuple_detail::const_tuple_get_result::type get(const std::pair& p) +{ + return tuple_detail::get(p, boost::integral_constant()); +} + +} } // namespaces + +#else + +#include + +#endif + +#endif + +#endif