Changeset 2263
- Timestamp:
- May 27, 2010, 12:13:07 AM (13 years ago)
- Location:
- trunk
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/doc/concepts.doxygen
r2250 r2263 444 444 Examples of concept \ref concept_data_iterator include: 445 445 - theplu::yat::utility::Matrix::iterator, 446 - theplu::yat::utility::MatrixWeighted::iterator, 446 447 - theplu::yat::classifier::MatrixLookup::const_iterator, 447 448 - theplu::yat::classifier::MatrixLookupWeighted::const_iterator -
trunk/test/concept_test.cc
r2260 r2263 53 53 BOOST_CONCEPT_ASSERT((Mutable_Container2D<MatrixWeighted>)); 54 54 55 55 // concept DataIterator 56 using classifier::MatrixLookup; 57 using classifier::MatrixLookupWeighted; 58 BOOST_CONCEPT_ASSERT((DataIteratorConcept<Matrix::iterator>)); 59 BOOST_CONCEPT_ASSERT((DataIteratorConcept<MatrixWeighted::iterator>)); 60 BOOST_CONCEPT_ASSERT((DataIteratorConcept<MatrixLookup::const_iterator>)); 61 BOOST_CONCEPT_ASSERT((DataIteratorConcept<MatrixLookupWeighted::const_iterator>)); 56 62 57 63 return suite.return_value(); -
trunk/yat/normalizer/Gauss.h
r2161 r2263 25 25 26 26 #include "Spearman.h" 27 #include "yat/utility/concept_check.h" 27 28 #include "yat/utility/iterator_traits.h" 28 29 … … 69 70 RandomAccessIter2 result) const 70 71 { 72 BOOST_CONCEPT_ASSERT((utility::DataIteratorConcept<RandomAccessIter1>)); 73 BOOST_CONCEPT_ASSERT((utility::DataIteratorConcept<RandomAccessIter2>)); 71 74 BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator<RandomAccessIter1>)); 72 75 BOOST_CONCEPT_ASSERT((boost::Mutable_RandomAccessIterator<RandomAccessIter2>)); -
trunk/yat/normalizer/qQuantileNormalizer.h
r2210 r2263 25 25 26 26 #include "yat/regression/CSplineInterpolation.h" 27 #include "yat/utility/concept_check.h" 27 28 #include "yat/utility/DataIterator.h" 28 29 #include "yat/utility/DataWeight.h" … … 258 259 BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator<RandomAccessIterator1>)); 259 260 BOOST_CONCEPT_ASSERT((boost::Mutable_RandomAccessIterator<RandomAccessIterator2>)); 261 BOOST_CONCEPT_ASSERT((utility::DataIteratorConcept<RandomAccessIterator1>)); 262 BOOST_CONCEPT_ASSERT((utility::DataIteratorConcept<RandomAccessIterator2>)); 260 263 utility::check_iterator_is_unweighted(first); 261 264 utility::check_iterator_is_unweighted(result); … … 317 320 BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator<RandomAccessIterator1>)); 318 321 BOOST_CONCEPT_ASSERT((boost::Mutable_RandomAccessIterator<RandomAccessIterator2>)); 322 BOOST_CONCEPT_ASSERT((utility::DataIterator<RandomAccessIterator1>)); 323 BOOST_CONCEPT_ASSERT((utility::DataIterator<RandomAccessIterator2>)); 319 324 // copy the weights 320 325 detail::copy_weight_if_weighted(first, last, result); … … 381 386 { 382 387 BOOST_CONCEPT_ASSERT((boost::ForwardIterator<ForwardIterator>)); 388 BOOST_CONCEPT_ASSERT((utility::DataIterator<ForwardIterator>)); 383 389 build(first, last, N, 384 390 typename utility::weighted_iterator_traits<ForwardIterator>::type()); -
trunk/yat/statistics/Histogram.h
r2202 r2263 28 28 29 29 #include "AveragerWeighted.h" 30 #include "yat/utility/concept_check.h" 30 31 #include "yat/utility/iterator_traits.h" 31 32 … … 222 223 { 223 224 BOOST_CONCEPT_ASSERT((boost::ForwardIterator<ForwardIterator>)); 225 BOOST_CONCEPT_ASSERT((utility::DataIteratorConcept<ForwardIterator>)); 224 226 utility::iterator_traits<ForwardIterator> traits; 225 227 while (first!=last) { -
trunk/yat/statistics/Percentiler.h
r2202 r2263 24 24 */ 25 25 26 #include "yat/utility/concept_check.h" 26 27 #include "yat/utility/DataWeight.h" 27 28 #include "yat/utility/iterator_traits.h" … … 97 98 { 98 99 BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator<RandomAccessIterator>)); 100 BOOST_CONCEPT_ASSERT((utility::DataIteratorConcept<RandomAccessIterator>)); 99 101 return calculate(first, last, sorted_, 100 102 typename utility::weighted_iterator_traits<RandomAccessIterator>::type()); -
trunk/yat/statistics/utility.h
r2202 r2263 31 31 #include "yat/classifier/DataLookupWeighted1D.h" 32 32 #include "yat/classifier/Target.h" 33 #include "yat/utility/concept_check.h" 33 34 #include "yat/utility/deprecate.h" 34 35 #include "yat/utility/iterator_traits.h" 35 36 #include "yat/utility/VectorBase.h" 36 37 #include "yat/utility/yat_assert.h" 38 39 #include <boost/concept_check.hpp> 37 40 38 41 #include <algorithm> … … 202 205 bool sorted) 203 206 { 207 BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator<RandomAccessIterator>)); 208 BOOST_CONCEPT_ASSERT((utility::DataIteratorConcept<RandomAccessIterator>)); 204 209 double m = median(first, last, sorted); 205 210 typedef typename std::iterator_traits<RandomAccessIterator>::value_type T; … … 232 237 { 233 238 BOOST_CONCEPT_ASSERT((boost::RandomAccessIterator<RandomAccessIterator>)); 239 BOOST_CONCEPT_ASSERT((utility::DataIteratorConcept<RandomAccessIterator>)); 234 240 // range is one value only is a special case 235 241 if (first+1 == last) -
trunk/yat/utility/concept_check.h
r2260 r2263 22 22 along with yat. If not, see <http://www.gnu.org/licenses/>. 23 23 */ 24 25 #include "iterator_traits.h" 24 26 25 27 #include <boost/concept_check.hpp> … … 136 138 }; 137 139 140 141 /** 142 \brief Concept check for \trivial_iterator 143 144 This class is intended to be used in a <a 145 href="\boost_url/concept_check/using_concept_check.htm"> 146 BOOST_CONCEPT_ASSERT </a> 147 148 \code 149 template<class Iterator> 150 void some_function(const Iterator& it) 151 { 152 BOOST_CONCEPT_ASSERT((TrivialIterator<Iterator>)); 153 ... 154 } 155 \endcode 156 */ 157 template <class T> 158 class TrivialIterator 159 : public boost::Assignable<T> 160 , public boost::EqualityComparable<T> 161 , public boost::DefaultConstructible<T> 162 163 { 164 public: 165 /// iterator_category 166 typedef typename std::iterator_traits<T>::iterator_category iterator_category; 167 /// value_type 168 typedef typename std::iterator_traits<T>::value_type value_type; 169 /// difference_type 170 typedef typename std::iterator_traits<T>::difference_type difference_type; 171 /// pointer 172 typedef typename std::iterator_traits<T>::pointer pointer; 173 /// reference 174 typedef typename std::iterator_traits<T>::reference reference; 175 176 /** 177 \brief function doing the concept test 178 */ 179 BOOST_CONCEPT_USAGE(TrivialIterator) 180 { 181 T t; 182 value_ = *t; 183 } 184 private: 185 value_type value_; 186 }; 187 188 /** 189 \brief Concept check for \ref concept_data_iterator 190 191 This class is intended to be used in a <a 192 href="\boost_url/concept_check/using_concept_check.htm"> 193 BOOST_CONCEPT_ASSERT </a> 194 195 \code 196 template<class Iterator> 197 void some_function(const Iterator& it) 198 { 199 BOOST_CONCEPT_ASSERT((DataIteratorConcept<Iterator>)); 200 ... 201 } 202 \endcode 203 */ 204 template <class T> 205 class DataIteratorConcept 206 { 207 public: 208 /// tag 209 typedef typename weighted_iterator_traits<T>::type tag; 210 /// value_type 211 typedef typename std::iterator_traits<T>::value_type value_type; 212 213 /** 214 \brief function doing the concept test 215 */ 216 BOOST_CONCEPT_USAGE(DataIteratorConcept) 217 { 218 BOOST_CONCEPT_ASSERT((TrivialIterator<T>)); 219 tag t; 220 constraints(t); 221 } 222 private: 223 void constraints(yat::utility::unweighted_iterator_tag t) const 224 { 225 BOOST_CONCEPT_ASSERT((boost::Convertible<value_type, double>)); 226 } 227 228 void constraints(yat::utility::weighted_iterator_tag t) const 229 { 230 BOOST_CONCEPT_ASSERT((boost::Convertible<value_type, DataWeight>)); 231 } 232 233 }; 234 138 235 }}} // of namespace utility, yat, and theplu 139 236 #endif
Note: See TracChangeset
for help on using the changeset viewer.