diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-05-06 17:44:27 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-05-06 17:44:27 (GMT) |
commit | d76ada0ab59634e3333f9eb5a92d0e850f60d7bf (patch) | |
tree | 5eaae441173fad2ec19ba67d6589f28ecd740991 /3rdParty/Boost/src/boost/asio/ip/basic_resolver_iterator.hpp | |
parent | 6f49e5abee37d37b351d68c01374232eccdac458 (diff) | |
download | swift-contrib-d76ada0ab59634e3333f9eb5a92d0e850f60d7bf.zip swift-contrib-d76ada0ab59634e3333f9eb5a92d0e850f60d7bf.tar.bz2 |
Updated Boost to 1.43.0.
Diffstat (limited to '3rdParty/Boost/src/boost/asio/ip/basic_resolver_iterator.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/asio/ip/basic_resolver_iterator.hpp | 76 |
1 files changed, 55 insertions, 21 deletions
diff --git a/3rdParty/Boost/src/boost/asio/ip/basic_resolver_iterator.hpp b/3rdParty/Boost/src/boost/asio/ip/basic_resolver_iterator.hpp index 90644a2..5f4937b 100644 --- a/3rdParty/Boost/src/boost/asio/ip/basic_resolver_iterator.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/basic_resolver_iterator.hpp @@ -18,8 +18,7 @@ #include <boost/asio/detail/push_options.hpp> #include <boost/asio/detail/push_options.hpp> -#include <boost/iterator/iterator_facade.hpp> -#include <boost/optional.hpp> +#include <boost/iterator.hpp> #include <boost/shared_ptr.hpp> #include <cstring> #include <string> @@ -48,14 +47,18 @@ namespace ip { */ template <typename InternetProtocol> class basic_resolver_iterator - : public boost::iterator_facade< - basic_resolver_iterator<InternetProtocol>, - const basic_resolver_entry<InternetProtocol>, - boost::forward_traversal_tag> +#if defined(GENERATING_DOCUMENTATION) + : public std::iterator< +#else // defined(GENERATING_DOCUMENTATION) + : public boost::iterator< +#endif // defined(GENERATING_DOCUMENTATION) + std::forward_iterator_tag, + const basic_resolver_entry<InternetProtocol> > { public: /// Default constructor creates an end iterator. basic_resolver_iterator() + : index_(0) { } @@ -91,11 +94,6 @@ public: address_info = address_info->ai_next; } - if (iter.values_->size()) - iter.iter_ = iter.values_->begin(); - else - iter.values_.reset(); - return iter; } @@ -109,21 +107,58 @@ public: iter.values_->push_back( basic_resolver_entry<InternetProtocol>( endpoint, host_name, service_name)); - iter.iter_ = iter.values_->begin(); return iter; } -private: - friend class boost::iterator_core_access; + /// Dereference an iterator. + const basic_resolver_entry<InternetProtocol>& operator*() const + { + return dereference(); + } + + /// Dereference an iterator. + const basic_resolver_entry<InternetProtocol>* operator->() const + { + return &dereference(); + } + + /// Increment operator (prefix). + basic_resolver_iterator& operator++() + { + increment(); + return *this; + } + /// Increment operator (postfix). + basic_resolver_iterator operator++(int) + { + basic_resolver_iterator tmp(*this); + ++*this; + return tmp; + } + + /// Test two iterators for equality. + friend bool operator==(const basic_resolver_iterator& a, + const basic_resolver_iterator& b) + { + return a.equal(b); + } + + /// Test two iterators for inequality. + friend bool operator!=(const basic_resolver_iterator& a, + const basic_resolver_iterator& b) + { + return !a.equal(b); + } + +private: void increment() { - if (++*iter_ == values_->end()) + if (++index_ == values_->size()) { // Reset state to match a default constructed end iterator. values_.reset(); - typedef typename values_type::const_iterator values_iterator_type; - iter_.reset(); + index_ = 0; } } @@ -133,18 +168,17 @@ private: return true; if (values_ != other.values_) return false; - return *iter_ == *other.iter_; + return index_ == other.index_; } const basic_resolver_entry<InternetProtocol>& dereference() const { - return **iter_; + return (*values_)[index_]; } typedef std::vector<basic_resolver_entry<InternetProtocol> > values_type; - typedef typename values_type::const_iterator values_iter_type; boost::shared_ptr<values_type> values_; - boost::optional<values_iter_type> iter_; + std::size_t index_; }; } // namespace ip |