diff options
Diffstat (limited to 'boost/compute/algorithm/equal.hpp')
-rw-r--r-- | boost/compute/algorithm/equal.hpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/boost/compute/algorithm/equal.hpp b/boost/compute/algorithm/equal.hpp new file mode 100644 index 0000000000..35d0c5f0ea --- /dev/null +++ b/boost/compute/algorithm/equal.hpp @@ -0,0 +1,53 @@ +//---------------------------------------------------------------------------// +// Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com> +// +// 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 +// +// See http://boostorg.github.com/compute for more information. +//---------------------------------------------------------------------------// + +#ifndef BOOST_COMPUTE_ALGORITHM_EQUAL_HPP +#define BOOST_COMPUTE_ALGORITHM_EQUAL_HPP + +#include <boost/compute/system.hpp> +#include <boost/compute/command_queue.hpp> +#include <boost/compute/algorithm/mismatch.hpp> + +namespace boost { +namespace compute { + +/// Returns \c true if the range [\p first1, \p last1) and the range +/// beginning at \p first2 are equal. +template<class InputIterator1, class InputIterator2> +inline bool equal(InputIterator1 first1, + InputIterator1 last1, + InputIterator2 first2, + command_queue &queue = system::default_queue()) +{ + return ::boost::compute::mismatch(first1, + last1, + first2, + queue).first == last1; +} + +/// \overload +template<class InputIterator1, class InputIterator2> +inline bool equal(InputIterator1 first1, + InputIterator1 last1, + InputIterator2 first2, + InputIterator2 last2, + command_queue &queue = system::default_queue()) +{ + if(std::distance(first1, last1) != std::distance(first2, last2)){ + return false; + } + + return ::boost::compute::equal(first1, last1, first2, queue); +} + +} // end compute namespace +} // end boost namespace + +#endif // BOOST_COMPUTE_ALGORITHM_EQUAL_HPP |