Changeset 3393
- Timestamp:
- Mar 17, 2015, 4:38:36 AM (8 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEWS
r3364 r3393 8 8 - AveragerWeighted::n(void) now return 0, when object is empty (ticket #802) 9 9 - added support for htslib (see ticket #794) 10 - Container2DIterator is now tagged with 11 boost::random_access_traversal_tag (see ticket #803, r3393) 12 - StrideIterator is now tagged with use_default (see ticket #803, r3393) 10 13 11 14 A complete list of closed tickets can be found here [[br]] -
trunk/test/iterator.cc
r3379 r3393 499 499 x *= 2; // avoid compiler warning 500 500 501 // ticket #623 501 // ticket #623 is about iterator below did not pass boost concept 502 // check as a random access iterator. 502 503 typedef utility::Container2DIterator<const classifier::KernelLookup, 503 504 double, const double> c2dIter; 504 BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator<c2dIter>)); 505 // The workaround in #623 is dirty as it circumvent the fact that 506 // random access iterators are required to return lvalue from 507 // operator*. This is further explained in // 508 // http://www.boost.org/doc/libs/1_57_0/libs/iterator/doc/index.html 509 // and ticket #803. So here we replace the check for C++98 style 510 // random access iterator with boost style readable and 511 // random_access_traversal. 512 //BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator<c2dIter>)); 513 BOOST_CONCEPT_ASSERT((boost_concepts::ReadableIterator<c2dIter>)); 514 BOOST_CONCEPT_ASSERT((boost_concepts::RandomAccessTraversal<c2dIter>)); 505 515 506 516 typedef StrideIterator<c2dIter> StrideIter; 507 StrideIter::iterator_category x623; 508 std::random_access_iterator_tag y623(x623); 509 BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator<StrideIter>)); 517 BOOST_CONCEPT_ASSERT((boost_concepts::ReadableIterator<StrideIter>)); 518 BOOST_CONCEPT_ASSERT((boost_concepts::RandomAccessTraversal<StrideIter>)); 519 520 // the minimal requirement for BASE is that BASE is random access traversal 521 typedef int value_type; 522 typedef boost::iterator_archetypes::readable_iterator_t access_type; 523 typedef boost::random_access_traversal_tag traversal; 524 typedef boost::iterator_archetype<value_type, access_type, traversal> Base; 525 StrideIterator<Base> si; 510 526 } 511 527 } -
trunk/yat/utility/Container2DIterator.h
r3295 r3393 63 63 Container2DIterator<Container, value, reference> 64 64 , value 65 , std::random_access_iterator_tag65 , boost::random_access_traversal_tag 66 66 , reference> 67 67 { -
trunk/yat/utility/StrideIterator.h
r2992 r3393 26 26 #include <boost/concept_check.hpp> 27 27 #include <boost/iterator/iterator_adaptor.hpp> 28 #include <boost/iterator/iterator_concepts.hpp> 28 29 29 30 namespace theplu { … … 41 42 by combining StrideIterator with a reverse_iterator (from 42 43 e.g. std or boost). 44 45 Type Requirements: 46 - \c RandomAccessIterator must be a \readable_iterator 47 - \c RandomAccessIterator must be a \random_access_traversal_iterator 43 48 */ 44 49 template<typename RandomAccessIterator> 45 50 class StrideIterator 46 51 : public boost::iterator_adaptor<StrideIterator<RandomAccessIterator> 47 , RandomAccessIterator 48 , boost::use_default 49 , typename std::iterator_traits<RandomAccessIterator>::iterator_category> 52 , RandomAccessIterator> 50 53 { 51 54 typedef boost::iterator_adaptor<StrideIterator<RandomAccessIterator>, 52 RandomAccessIterator, 53 boost::use_default, 54 typename std::iterator_traits<RandomAccessIterator>::iterator_category> 55 RandomAccessIterator> 55 56 super_t; 56 57 … … 67 68 : StrideIterator::iterator_adaptor_(), stride_(stride) 68 69 { 69 BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator<RandomAccessIterator>)); 70 using boost_concepts::RandomAccessTraversal; 71 using boost_concepts::ReadableIterator; 72 BOOST_CONCEPT_ASSERT((ReadableIterator<RandomAccessIterator>)); 73 BOOST_CONCEPT_ASSERT((RandomAccessTraversal<RandomAccessIterator>)); 70 74 } 71 75 -
trunk/yat/utility/concept_check.h
r3114 r3393 30 30 #include <boost/concept_archetype.hpp> 31 31 #include <boost/concept_check.hpp> 32 #include <boost/iterator/iterator_concepts.hpp> 32 33 33 34 namespace theplu { … … 89 90 n = t_.columns(); 90 91 some_func(n); 91 BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator<const_iterator>)); 92 BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator<const_row_iterator>)); 93 BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator<const_column_iterator>)); 92 using boost_concepts::ReadableIterator; 93 BOOST_CONCEPT_ASSERT((ReadableIterator<const_iterator>)); 94 BOOST_CONCEPT_ASSERT((ReadableIterator<const_row_iterator>)); 95 BOOST_CONCEPT_ASSERT((ReadableIterator<const_column_iterator>)); 94 96 } 95 97
Note: See TracChangeset
for help on using the changeset viewer.