11 #ifndef ASIO_IP_BASIC_RESOLVER_ITERATOR_HPP 12 #define ASIO_IP_BASIC_RESOLVER_ITERATOR_HPP 14 #if defined(_MSC_VER) && (_MSC_VER >= 1200) 16 #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 18 #include "asio/detail/config.hpp" 24 #include "asio/detail/memory.hpp" 25 #include "asio/detail/socket_ops.hpp" 26 #include "asio/detail/socket_types.hpp" 27 #include "asio/ip/basic_resolver_entry.hpp" 29 #if defined(ASIO_WINDOWS_RUNTIME) 30 # include "asio/detail/winrt_utils.hpp" 31 #endif // defined(ASIO_WINDOWS_RUNTIME) 33 #include "asio/detail/push_options.hpp" 50 template <
typename InternetProtocol>
77 : values_(other.values_),
82 #if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) 85 : values_(ASIO_MOVE_CAST(values_ptr_type)(other.values_)),
90 #endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) 95 values_ = other.values_;
96 index_ = other.index_;
100 #if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) 106 values_ = ASIO_MOVE_CAST(values_ptr_type)(other.values_);
107 index_ = other.index_;
113 #endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) 118 return dereference();
124 return &dereference();
159 if (++index_ == values_->size())
169 if (!values_ && !other.values_)
171 if (values_ != other.values_)
173 return index_ == other.index_;
178 return (*values_)[index_];
181 typedef std::vector<basic_resolver_entry<InternetProtocol> > values_type;
182 typedef asio::detail::shared_ptr<values_type> values_ptr_type;
183 values_ptr_type values_;
190 #include "asio/detail/pop_options.hpp" 192 #endif // ASIO_IP_BASIC_RESOLVER_ITERATOR_HPP friend bool operator!=(const basic_resolver_iterator &a, const basic_resolver_iterator &b)
Test two iterators for inequality.
Definition: basic_resolver_iterator.hpp:150
basic_resolver_iterator & operator=(const basic_resolver_iterator &other)
Assignment operator.
Definition: basic_resolver_iterator.hpp:93
std::forward_iterator_tag iterator_category
The iterator category.
Definition: basic_resolver_iterator.hpp:67
basic_resolver_iterator()
Default constructor creates an end iterator.
Definition: basic_resolver_iterator.hpp:70
basic_resolver_iterator(const basic_resolver_iterator &other)
Copy constructor.
Definition: basic_resolver_iterator.hpp:76
const basic_resolver_entry< InternetProtocol > * pointer
The type of the result of applying operator->() to the iterator.
Definition: basic_resolver_iterator.hpp:61
std::ptrdiff_t difference_type
The type used for the distance between two iterators.
Definition: basic_resolver_iterator.hpp:55
basic_resolver_iterator operator++(int)
Increment operator (postfix).
Definition: basic_resolver_iterator.hpp:135
const basic_resolver_entry< InternetProtocol > & reference
The type of the result of applying operator*() to the iterator.
Definition: basic_resolver_iterator.hpp:64
friend bool operator==(const basic_resolver_iterator &a, const basic_resolver_iterator &b)
Test two iterators for equality.
Definition: basic_resolver_iterator.hpp:143
const basic_resolver_entry< InternetProtocol > * operator->() const
Dereference an iterator.
Definition: basic_resolver_iterator.hpp:122
An iterator over the entries produced by a resolver.
Definition: basic_resolver_iterator.hpp:51
const basic_resolver_entry< InternetProtocol > & operator*() const
Dereference an iterator.
Definition: basic_resolver_iterator.hpp:116
basic_resolver_entry< InternetProtocol > value_type
The type of the value pointed to by the iterator.
Definition: basic_resolver_iterator.hpp:58
An entry produced by a resolver.
Definition: basic_resolver_entry.hpp:37
basic_resolver_iterator & operator++()
Increment operator (prefix).
Definition: basic_resolver_iterator.hpp:128
Definition: any_io_executor.hpp:28