1 #ifndef _theplu_yat_utility_concept_check_ 2 #define _theplu_yat_utility_concept_check_ 28 #include "iterator_traits.h" 29 #include "WeightedIteratorArchetype.h" 31 #include <boost/concept_archetype.hpp> 32 #include <boost/concept_check.hpp> 33 #include <boost/iterator/iterator_archetypes.hpp> 34 #include <boost/iterator/iterator_concepts.hpp> 42 void avoid_compiler_warning(
const T& t) {}
68 #ifdef YAT_HAVE_BOOST_CONCEPT_WITH_CONSTRUCTOR 89 const_iterator iter_ = t_.begin();
91 detail::avoid_compiler_warning(iter_);
92 const_row_iterator row_iter_ = t_.begin_row(0);
93 row_iter_ = t_.end_row(0);
94 detail::avoid_compiler_warning(row_iter_);
95 const_column_iterator col_iter_ = t_.begin_column(0);
96 col_iter_ = t_.end_column(0);
97 detail::avoid_compiler_warning(col_iter_);
98 const_reference r = t_(0,0);
100 size_t n = t_.rows();
102 detail::avoid_compiler_warning(n);
103 using boost_concepts::ReadableIterator;
104 BOOST_CONCEPT_ASSERT((ReadableIterator<const_iterator>));
105 BOOST_CONCEPT_ASSERT((ReadableIterator<const_row_iterator>));
106 BOOST_CONCEPT_ASSERT((ReadableIterator<const_column_iterator>));
150 iterator iter_ = t_.begin();
152 detail::avoid_compiler_warning(iter_);
153 row_iterator row_iter_ = t_.begin_row(0);
154 row_iter_ = t_.end_row(0);
155 detail::avoid_compiler_warning(row_iter_);
156 column_iterator col_iter_ = t_.begin_column(0);
157 col_iter_ = t_.end_column(0);
158 detail::avoid_compiler_warning(col_iter_);
159 reference r = t_(0,0);
161 detail::avoid_compiler_warning(r);
162 using boost::Mutable_RandomAccessIterator;
163 BOOST_CONCEPT_ASSERT((Mutable_RandomAccessIterator<iterator>));
164 BOOST_CONCEPT_ASSERT((Mutable_RandomAccessIterator<row_iterator>));
165 BOOST_CONCEPT_ASSERT((Mutable_RandomAccessIterator<column_iterator>));
192 :
public boost::Assignable<T>
193 ,
public boost::EqualityComparable<T>
194 ,
public boost::DefaultConstructible<T>
201 typedef typename std::iterator_traits<T>::value_type
value_type;
205 typedef typename std::iterator_traits<T>::pointer
pointer;
207 typedef typename std::iterator_traits<T>::reference
reference;
246 typedef typename std::iterator_traits<T>::value_type
value_type;
253 BOOST_CONCEPT_ASSERT((boost_concepts::ReadableIterator<T>));
254 BOOST_CONCEPT_ASSERT((boost_concepts::SinglePassIterator<T>));
261 BOOST_CONCEPT_ASSERT((boost::Convertible<value_type, double>));
266 BOOST_CONCEPT_ASSERT((boost::Convertible<value_type, DataWeight>));
298 using boost::iterator_archetypes::readable_iterator_t;
299 using boost::forward_traversal_tag;
300 boost::iterator_archetype<double, readable_iterator_t,
301 forward_traversal_tag> unweighted;
305 d += distance_(unweighted, unweighted, unweighted);
306 d += distance_(unweighted, unweighted, weighted);
307 d += distance_(weighted, weighted, unweighted);
308 d += distance_(weighted, weighted, weighted);
309 detail::avoid_compiler_warning(d);
weighted_iterator_traits< T >::type tag
tag
Definition: concept_check.h:244
detail::weighted_iterator_traits_detail< value >::type type
Definition: iterator_traits.h:114
Concept check for Trivial Iterator.
Definition: concept_check.h:191
std::iterator_traits< T >::value_type value_type
value_type
Definition: concept_check.h:246
Concept check for Data Iterator.
Definition: concept_check.h:240
The Department of Theoretical Physics namespace as we define it.
Concept check for Container2D.
Definition: concept_check.h:65
Definition: iterator_traits.h:47
T::const_reference const_reference
const_reference
Definition: concept_check.h:76
std::iterator_traits< T >::iterator_category iterator_category
iterator_category
Definition: concept_check.h:199
Concept check for Mutable Container2D.
Definition: concept_check.h:133
Definition: WeightedIteratorArchetype.h:133
Definition: iterator_traits.h:55
std::iterator_traits< T >::difference_type difference_type
difference_type
Definition: concept_check.h:203
T::const_iterator const_iterator
const_iterator
Definition: concept_check.h:78
BOOST_CONCEPT_USAGE(TrivialIterator)
function doing the concept test
Definition: concept_check.h:212
BOOST_CONCEPT_USAGE(Container2D)
function doing the concept test
Definition: concept_check.h:87
std::iterator_traits< T >::value_type value_type
value_type
Definition: concept_check.h:201
std::iterator_traits< T >::pointer pointer
pointer
Definition: concept_check.h:205
T::const_row_iterator const_row_iterator
const_row_iterator
Definition: concept_check.h:80
BOOST_CONCEPT_USAGE(Mutable_Container2D)
function doing the concept test
Definition: concept_check.h:148
T::iterator iterator
iterator
Definition: concept_check.h:139
T::row_iterator row_iterator
row_iterator
Definition: concept_check.h:141
std::iterator_traits< T >::reference reference
reference
Definition: concept_check.h:207
BOOST_CONCEPT_USAGE(DataIteratorConcept)
function doing the concept test
Definition: concept_check.h:251
Concept check for a Distance.
Definition: concept_check.h:290
T::reference reference
reference
Definition: concept_check.h:137
T::const_column_iterator const_column_iterator
const_column_iterator
Definition: concept_check.h:82
T::value_type value_type
value_type
Definition: concept_check.h:74
T::column_iterator column_iterator
column_iterator
Definition: concept_check.h:143
BOOST_CONCEPT_USAGE(DistanceConcept)
function doing the concept test
Definition: concept_check.h:296