Changeset 1538
- Timestamp:
- Sep 27, 2008, 6:27:55 AM (15 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/test/data_weight_proxy_test.cc
r1537 r1538 35 35 : proxy_(proxy) {} 36 36 37 inline Proxy get_copy(void) { return proxy_; } 37 38 inline Proxy& operator()(void) { return proxy_; } 38 39 inline const Proxy& operator()(void) const … … 95 96 suite.add(suite.equal(xw3.weight(), 0.5)); 96 97 98 DataWeight xw4(1.602, 1); 99 holder.get_copy() = xw4; 100 suite.add(suite.equal(holder().data(), 1.602)); 101 suite.add(suite.equal(holder().weight(), 1)); 102 97 103 return suite.return_value(); 98 104 } -
trunk/test/iterator_test.cc
r1537 r1538 423 423 test_bidirectional_iterator(iter, suite); 424 424 test_random_access_iterator(iter, suite); 425 //std::vector<double> data(vec.size()); 426 //std::vector<double> weight(vec.size()); 427 //WIter iter2(data.begin(), weight.begin()); 428 // std::copy(iter, iter+3, iter2); 429 //suite.add(suite.equal(data.front(), 1)); 430 } 425 std::vector<double> data(vec.size()); 426 std::vector<double> weight(vec.size()); 427 WIter iter2(data.begin(), weight.begin()); 428 utility::DataWeight tmp2(6.89, 0.79); 429 *iter2 = tmp2; 430 if (!suite.add(tmp2==*iter2)) 431 suite.err() << "error: tmp2==*iter2" << std::endl; 432 utility::DataWeight tmp3(*iter2); 433 suite.add(suite.equal(tmp3.data(), tmp2.data())); 434 suite.add(suite.equal(tmp3.weight(), tmp2.weight())); 435 *iter2 = *iter; 436 if (!suite.add(*iter2 == *iter)) 437 suite.err() << "error: *iter2 == *iter\n"; 438 tmp = *iter2; 439 suite.add(suite.equal(tmp.data(), 1)); 440 std::copy(iter, iter+3, iter2); 441 suite.add(suite.equal(vec.front(), 1)); 442 suite.add(suite.equal(data.front(), 1)); 443 444 suite.err() << " testing const conversion\n"; 445 typedef std::vector<double>::const_iterator const_Iter; 446 typedef utility::WeightedIterator<const_Iter, const_Iter> const_WIter; 447 const_WIter const_iter(vec.begin(), vec.begin()); 448 const_iter = iter; 449 450 suite.err() << " testing assignment between different iterators\n"; 451 const std::vector<double> const_vec(10, 10.7); 452 const_WIter const_iter2(const_vec.begin(), const_vec.begin()); 453 utility::DataWeight tmp4; 454 tmp4 = *const_iter2; 455 *iter = *const_iter2; 456 suite.add(*iter==*const_iter2); 457 *iter = *const_iter; 458 suite.add(*iter==*const_iter); 459 460 double x=101; 461 utility::WeightedIterator<double*, double*> iter_p(&x, &x); 462 *iter_p = *iter; 463 suite.add(*iter_p==*iter); 464 } -
trunk/yat/utility/DataWeightProxy.h
r1537 r1538 52 52 \return reference to data 53 53 */ 54 //typename std::iterator_traits<DataWeight>::reference data(void) const 54 55 double& data(void) { return *data_; } 55 56 … … 72 73 \brief assignment operator 73 74 */ 75 DataWeightProxy& operator=(const DataWeightProxy& rhs) 76 { 77 data() = rhs.data(); 78 weight() = rhs.weight(); 79 return *this; 80 } 81 82 /** 83 \brief assignment operator 84 */ 74 85 DataWeightProxy& operator=(const DataWeight& rhs) 75 86 { … … 82 93 \brief Conversion to DataWeight 83 94 */ 84 operator DataWeight() const { return DataWeight(data(), weight()); } 95 operator DataWeight() const 96 { return DataWeight(this->data(), this->weight()); } 85 97 86 98 private: -
trunk/yat/utility/WeightedIterator.h
r1537 r1538 41 41 : public boost::iterator_facade< 42 42 WeightedIterator<DataIterator, WeightIterator>, 43 DataWeight ,43 DataWeightProxy<DataIterator, WeightIterator>, 44 44 typename std::iterator_traits<DataIterator>::iterator_category, 45 45 DataWeightProxy<DataIterator, WeightIterator> > … … 47 47 { 48 48 public: 49 /** 50 \brief DataIterator 51 */ 52 typedef DataIterator data_iterator_type; 53 54 /** 55 \brief DataIterator 56 */ 57 typedef WeightIterator weight_iterator_type; 58 49 59 /** 50 60 \brief Constructor … … 54 64 {} 55 65 66 /** 67 \return const reference to underlying data iterator 68 */ 69 const DataIterator& data_base(void) const { return d_iter_; } 70 71 /** 72 \return const reference to underlying weight iterator 73 */ 74 const WeightIterator& weight_base(void) const { return w_iter_; } 56 75 57 76 /** … … 73 92 to const_iterator. 74 93 */ 75 /*76 94 template<typename D2, typename W2> 77 95 WeightedIterator(WeightedIterator<D2, W2> other, 78 96 typename boost::enable_if_convertible<D2,DataIterator>::type* = 0, 79 97 typename boost::enable_if_convertible<W2,WeightIterator>::type* = 0) 80 {}81 */ 98 : d_iter_(other.data_base()), w_iter_(other.weight_base()) {} 99 82 100 83 101 private: … … 98 116 utility::DataWeightProxy<DataIterator, WeightIterator> 99 117 dereference(void) const 100 { 101 return DataWeightProxy<DataIterator, WeightIterator>(d_iter_, 118 { return DataWeightProxy<DataIterator, WeightIterator>(d_iter_, 102 119 w_iter_); 103 120 }
Note: See TracChangeset
for help on using the changeset viewer.