diff options
Diffstat (limited to '3rdParty/Boost/src/boost/fusion/sequence/comparison')
| -rw-r--r-- | 3rdParty/Boost/src/boost/fusion/sequence/comparison/detail/equal_to.hpp | 61 | ||||
| -rw-r--r-- | 3rdParty/Boost/src/boost/fusion/sequence/comparison/enable_comparison.hpp | 34 | 
2 files changed, 95 insertions, 0 deletions
| diff --git a/3rdParty/Boost/src/boost/fusion/sequence/comparison/detail/equal_to.hpp b/3rdParty/Boost/src/boost/fusion/sequence/comparison/detail/equal_to.hpp new file mode 100644 index 0000000..56cfe1b --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/sequence/comparison/detail/equal_to.hpp @@ -0,0 +1,61 @@ +/*============================================================================= +    Copyright (c) 1999-2003 Jaakko Jarvi +    Copyright (c) 2001-2011 Joel de Guzman + +    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) +==============================================================================*/ +#if !defined(FUSION_EQUAL_TO_05052005_1142) +#define FUSION_EQUAL_TO_05052005_1142 + +#include <boost/mpl/bool.hpp> +#include <boost/fusion/iterator/deref.hpp> +#include <boost/fusion/iterator/next.hpp> +#include <boost/fusion/iterator/equal_to.hpp> +#include <boost/fusion/support/as_const.hpp> + +namespace boost { namespace fusion { namespace detail +{ +    template <typename Seq1, typename Seq2, bool same_size> +    struct sequence_equal_to +    { +        typedef typename result_of::end<Seq1>::type end1_type; +        typedef typename result_of::end<Seq2>::type end2_type; + +        template <typename I1, typename I2> +        static bool +        call(I1 const&, I2 const&, mpl::true_) +        { +            return true; +        } + +        template <typename I1, typename I2> +        static bool +        call(I1 const& a, I2 const& b, mpl::false_) +        { +            return extension::as_const(*a) == extension::as_const(*b) +                && call(fusion::next(a), fusion::next(b)); +        } + +        template <typename I1, typename I2> +        static bool +        call(I1 const& a, I2 const& b) +        { +            typename result_of::equal_to<I1, end1_type>::type eq; +            return call(a, b, eq); +        } +    }; + +    template <typename Seq1, typename Seq2> +    struct sequence_equal_to<Seq1, Seq2, false> +    { +        template <typename I1, typename I2> +        static bool +        call(I1 const& /*a*/, I2 const& /*b*/) +        { +            return false; +        } +    }; +}}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/sequence/comparison/enable_comparison.hpp b/3rdParty/Boost/src/boost/fusion/sequence/comparison/enable_comparison.hpp new file mode 100644 index 0000000..bd55ac3 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/sequence/comparison/enable_comparison.hpp @@ -0,0 +1,34 @@ +/*============================================================================= +    Copyright (c) 2001-2011 Joel de Guzman + +    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) +==============================================================================*/ +#if !defined(FUSION_ENABLE_COMPARISON_09232005_1958) +#define FUSION_ENABLE_COMPARISON_09232005_1958 + +#include <boost/mpl/or.hpp> +#include <boost/mpl/and.hpp> +#include <boost/mpl/not.hpp> +#include <boost/mpl/equal_to.hpp> +#include <boost/fusion/support/sequence_base.hpp> +#include <boost/fusion/support/is_sequence.hpp> +#include <boost/fusion/sequence/intrinsic/size.hpp> + +namespace boost { namespace fusion { namespace traits +{ +    template <typename Seq1, typename Seq2, typename Enable = void> +    struct enable_equality +        : mpl::or_<traits::is_sequence<Seq1>, traits::is_sequence<Seq2> > +    {}; + +    template <typename Seq1, typename Seq2, typename Enable = void> +    struct enable_comparison +        : mpl::and_< +            mpl::or_<traits::is_sequence<Seq1>, traits::is_sequence<Seq2> > +          , mpl::equal_to<result_of::size<Seq1>, result_of::size<Seq2> > +        > +    {}; +}}} + +#endif | 
 Swift
 Swift