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_NOT_EQUAL_TO_05052005_1141)
0009 #define FUSION_NOT_EQUAL_TO_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, bool same_size>
0021     struct sequence_not_equal_to
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                 || call(fusion::next(a), fusion::next(b));
0041         }
0042 
0043         template <typename I1, typename I2>
0044         BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0045         static bool
0046         call(I1 const& a, I2 const& b)
0047         {
0048             typename result_of::equal_to<I1, end1_type>::type eq;
0049             return call(a, b, eq);
0050         }
0051     };
0052 
0053     template <typename Seq1, typename Seq2>
0054     struct sequence_not_equal_to<Seq1, Seq2, false>
0055     {
0056         template <typename I1, typename I2>
0057         BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0058         static bool
0059         call(I1 const& a, I2 const& b)
0060         {
0061             return true;
0062         }
0063     };
0064 }}}
0065 
0066 #endif