void single_pass_readable_iterator(Iterator first, Iterator last, IteratorA firstA, IteratorA lastA) { PSTADE_CONCEPT_ASSERT((boost_concepts::SinglePassIteratorConcept<Iterator>)); PSTADE_CONCEPT_ASSERT((boost_concepts::ReadableIteratorConcept<Iterator>)); { BOOST_CHECK(first == first); BOOST_CHECK(last == last); BOOST_CHECK(!(first == last) ? (first != last) : true); BOOST_CHECK(!(first != last) ? (first == last) : true); } { test::iter_equality(first, last, firstA, lastA); } }
result_type operator()(Range& rng, Predicate pred) const { PSTADE_CONCEPT_ASSERT((SinglePass<Range>)); return result_type( std::find_if(boost::begin(rng), boost::end(rng), not_(pred)), boost::end(rng) ); }
result_type operator()(Range& rng, diff_t tabsize, val_t newline = detail::default_newline<val_t>::value(), val_t tab = detail::default_tab<val_t>::value(), val_t space = detail::default_space<val_t>::value() ) const { PSTADE_CONCEPT_ASSERT((Forward<Range>)); return aux(boost::begin(rng), boost::end(rng), tabsize, newline, tab, space); }
result_type operator()(Range& rng, diff_t n, diff_t m) const { PSTADE_CONCEPT_ASSERT((Forward<Range>)); BOOST_ASSERT(n <= m); BOOST_ASSERT(n < 0 ? is_bidirectional(rng) : true); // A "bigger" window is allowed. // 'n < 0' or 'distance(rng) < m' is ok. iter_t first = advance_from(boost::begin(rng), n); return result_type(first, advance_from(first, m - n)); }
result_type operator()(Range& rng, Compare comp) const { PSTADE_CONCEPT_ASSERT((Forward<Range>)); return here::aux(boost::begin(rng), boost::end(rng), comp); }
result_type operator()(Range& rng) const { PSTADE_CONCEPT_ASSERT((SinglePass<Range>)); return aux(boost::end(rng)); }
result_type operator()(Range& rng) const { PSTADE_CONCEPT_ASSERT((Forward<Range>)); return result_type(iter_t(rng, false), iter_t(rng, true)); }
result_type operator()(Range& rng, Predicate& pred) const { PSTADE_CONCEPT_ASSERT((SinglePass<Range>)); return aux(boost::begin(rng), boost::end(rng), read_then_pred_t(pred)); }
result_type operator()(Range& rng) const { PSTADE_CONCEPT_ASSERT((SinglePass<Range>)); return op_make_transformed<value_t>()(rng, identity); }