Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-11-15 09:09:53

0001 /*=============================================================================
0002     Copyright (c) 1999-2003 Jaakko Jarvi
0003     Copyright (c) 2001-2011 Joel de Guzman
0004 
0005     Distributed under the Boost Software License, Version 1.0. (See accompanying 
0006     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0007 ==============================================================================*/
0008 #if !defined(FUSION_LESS_05052005_1141)
0009 #define FUSION_LESS_05052005_1141
0010 
0011 #include <boost/fusion/support/config.hpp>
0012 #include <boost/mpl/bool.hpp>
0013 #include <boost/fusion/iterator/deref.hpp>
0014 #include <boost/fusion/iterator/next.hpp>
0015 #include <boost/fusion/iterator/equal_to.hpp>
0016 #include <boost/fusion/support/as_const.hpp>
0017 
0018 namespace boost { namespace fusion { namespace detail
0019 {
0020     template <typename Seq1, typename Seq2>
0021     struct sequence_less
0022     {
0023         typedef typename result_of::end<Seq1>::type end1_type;
0024         typedef typename result_of::end<Seq2>::type end2_type;
0025 
0026         template <typename I1, typename I2>
0027         BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0028         static bool
0029         call(I1 const&, I2 const&, mpl::true_)
0030         {
0031             return false;
0032         }
0033 
0034         template <typename I1, typename I2>
0035         BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0036         static bool
0037         call(I1 const& a, I2 const& b, mpl::false_)
0038         {
0039             return extension::as_const(*a) < extension::as_const(*b) ||
0040                 (!(extension::as_const(*b) < extension::as_const(*a)) && 
0041                  call(fusion::next(a), fusion::next(b)));
0042         }
0043 
0044         template <typename I1, typename I2>
0045         BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0046         static bool
0047         call(I1 const& a, I2 const& b)
0048         {
0049             typename result_of::equal_to<I1, end1_type>::type eq;
0050             return call(a, b, eq);
0051         }
0052     };
0053 }}}
0054 
0055 #endif