LCOV - code coverage report
Current view: top level - opt/homebrew/include/boost/algorithm/cxx11 - all_of.hpp (source / functions) Hit Total Coverage
Test: test_dash_coverage.info Lines: 5 6 83.3 %
Date: 2026-06-25 07:23:51 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /* 
       2             :    Copyright (c) Marshall Clow 2008-2012.
       3             : 
       4             :    Distributed under the Boost Software License, Version 1.0. (See accompanying
       5             :    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       6             : */
       7             : 
       8             : /// \file  all_of.hpp
       9             : /// \brief Test ranges to see if all elements match a value or predicate.
      10             : /// \author Marshall Clow
      11             : 
      12             : #ifndef BOOST_ALGORITHM_ALL_OF_HPP
      13             : #define BOOST_ALGORITHM_ALL_OF_HPP
      14             : 
      15             : #include <boost/config.hpp>
      16             : #include <boost/range/begin.hpp>
      17             : #include <boost/range/end.hpp>
      18             : 
      19             : namespace boost { namespace algorithm {
      20             : 
      21             : /// \fn all_of ( InputIterator first, InputIterator last, Predicate p )
      22             : /// \return true if all elements in [first, last) satisfy the predicate 'p'
      23             : /// \note returns true on an empty range
      24             : /// 
      25             : /// \param first The start of the input sequence
      26             : /// \param last  One past the end of the input sequence
      27             : /// \param p     A predicate for testing the elements of the sequence
      28             : ///
      29             : /// \note           This function is part of the C++2011 standard library.
      30             : template<typename InputIterator, typename Predicate> 
      31       31390 : BOOST_CXX14_CONSTEXPR bool all_of ( InputIterator first, InputIterator last, Predicate p )
      32             : {
      33      165126 :     for ( ; first != last; ++first )
      34      133736 :         if ( !p(*first)) 
      35           0 :             return false;
      36       31390 :     return true; 
      37       31390 : } 
      38             : 
      39             : /// \fn all_of ( const Range &r, Predicate p )
      40             : /// \return true if all elements in the range satisfy the predicate 'p'
      41             : /// \note returns true on an empty range
      42             : /// 
      43             : /// \param r    The input range
      44             : /// \param p    A predicate for testing the elements of the range
      45             : ///
      46             : template<typename Range, typename Predicate> 
      47             : BOOST_CXX14_CONSTEXPR bool all_of ( const Range &r, Predicate p )
      48             : {
      49             :     return boost::algorithm::all_of ( boost::begin (r), boost::end (r), p );
      50             : } 
      51             : 
      52             : /// \fn all_of_equal ( InputIterator first, InputIterator last, const T &val )
      53             : /// \return true if all elements in [first, last) are equal to 'val'
      54             : /// \note returns true on an empty range
      55             : /// 
      56             : /// \param first The start of the input sequence
      57             : /// \param last  One past the end of the input sequence
      58             : /// \param val   A value to compare against
      59             : ///
      60             : template<typename InputIterator, typename T> 
      61             : BOOST_CXX14_CONSTEXPR bool all_of_equal ( InputIterator first, InputIterator last, const T &val )
      62             : {
      63             :     for ( ; first != last; ++first )
      64             :     if ( val != *first ) 
      65             :         return false;
      66             :     return true; 
      67             : } 
      68             : 
      69             : /// \fn all_of_equal ( const Range &r, const T &val )
      70             : /// \return true if all elements in the range are equal to 'val'
      71             : /// \note returns true on an empty range
      72             : /// 
      73             : /// \param r    The input range
      74             : /// \param val  A value to compare against
      75             : ///
      76             : template<typename Range, typename T> 
      77             : BOOST_CXX14_CONSTEXPR bool all_of_equal ( const Range &r, const T &val ) 
      78             : {
      79             :     return boost::algorithm::all_of_equal ( boost::begin (r), boost::end (r), val );
      80             : } 
      81             : 
      82             : }} // namespace boost and algorithm
      83             : 
      84             : #endif // BOOST_ALGORITHM_ALL_OF_HPP

Generated by: LCOV version 1.16