* @brief A header field iterator is an iterator that dereferences to a HeaderField. */
| 175 | * @brief A header field iterator is an iterator that dereferences to a HeaderField. |
| 176 | */ |
| 177 | class header_field_iterator |
| 178 | { |
| 179 | private: |
| 180 | HeaderFieldIteratorState *state_; |
| 181 | header_field_iterator(void *hdr_buf, void *hdr_loc, void *field_loc); |
| 182 | |
| 183 | public: |
| 184 | using iterator_category = std::forward_iterator_tag; |
| 185 | using value_type = int; |
| 186 | |
| 187 | ~header_field_iterator(); |
| 188 | |
| 189 | /** |
| 190 | * Copy Constructor for header_field_iterator, this shouldn't need to be used directly. |
| 191 | * @param header_field_iterator: for constructing the iterator. |
| 192 | * @warning This shouldn't need to be used directly! |
| 193 | */ |
| 194 | header_field_iterator(const header_field_iterator &it); |
| 195 | |
| 196 | header_field_iterator &operator=(const header_field_iterator &rhs); |
| 197 | |
| 198 | /** |
| 199 | * Advance the iterator to the next header field |
| 200 | * @return a reference to a the next iterator |
| 201 | */ |
| 202 | header_field_iterator &operator++(); |
| 203 | |
| 204 | /** |
| 205 | * Advance the current iterator to the next header field |
| 206 | * @return a new iterator which points to the next element |
| 207 | */ |
| 208 | header_field_iterator operator++(int); |
| 209 | |
| 210 | /** |
| 211 | * Advance the iterator to the next header field with the same name |
| 212 | * @return a reference to a the next iterator |
| 213 | */ |
| 214 | header_field_iterator &nextDup(); |
| 215 | |
| 216 | /** |
| 217 | * Comparison operator, compare two iterators |
| 218 | * @return true if the two iterators point to the same HeaderField |
| 219 | */ |
| 220 | bool operator==(const header_field_iterator &rhs) const; |
| 221 | |
| 222 | /** |
| 223 | * Inequality Operator, compare two iterators |
| 224 | * @return false if the two iterators are the same. |
| 225 | */ |
| 226 | bool operator!=(const header_field_iterator &rhs) const; |
| 227 | |
| 228 | /** |
| 229 | * Dereference an iterator |
| 230 | * @return a HeaderField pointed to by this iterator |
| 231 | */ |
| 232 | HeaderField operator*(); |
| 233 | |
| 234 | friend class HeaderField; |