@@ -48,15 +48,24 @@ class basic_uri
48
48
public:
49
49
50
50
typedef typename string<Tag>::type string_type;
51
- typedef typename string_type::iterator iterator_type ;
52
- typedef boost::iterator_range<iterator_type > range_type;
53
- typedef typename string_type::const_iterator const_iterator_type ;
54
- typedef boost::iterator_range<const_iterator_type > const_range_type;
51
+ typedef typename string_type::iterator iterator ;
52
+ typedef boost::iterator_range<iterator > range_type;
53
+ typedef typename string_type::const_iterator const_iterator ;
54
+ typedef boost::iterator_range<const_iterator > const_range_type;
55
55
56
- basic_uri () : is_valid_(false ) {
56
+ basic_uri ()
57
+ : is_valid_(false ) {
57
58
58
59
}
59
60
61
+ template <
62
+ class FwdIter
63
+ >
64
+ basic_uri (const FwdIter &first, const FwdIter &last)
65
+ : uri_(first, last), is_valid_(false ) {
66
+ parse ();
67
+ }
68
+
60
69
basic_uri (const string_type &uri)
61
70
: uri_(uri), is_valid_(false ) {
62
71
parse ();
@@ -88,19 +97,19 @@ class basic_uri
88
97
parse ();
89
98
}
90
99
91
- iterator_type begin () {
100
+ iterator begin () {
92
101
return uri_.begin ();
93
102
}
94
103
95
- const_iterator_type begin () const {
104
+ const_iterator begin () const {
96
105
return uri_.begin ();
97
106
}
98
107
99
- iterator_type end () {
108
+ iterator end () {
100
109
return uri_.end ();
101
110
}
102
111
103
- const_iterator_type end () const {
112
+ const_iterator end () const {
104
113
return uri_.end ();
105
114
}
106
115
@@ -195,9 +204,9 @@ class basic_uri
195
204
}
196
205
197
206
template <
198
- class Iterator
207
+ class FwdIter
199
208
>
200
- void append (Iterator first, Iterator last) {
209
+ void append (const FwdIter & first, const FwdIter & last) {
201
210
uri_.append (first, last);
202
211
parse ();
203
212
}
@@ -217,18 +226,10 @@ template <
217
226
>
218
227
inline
219
228
void basic_uri<Tag>::parse() {
220
- const_iterator_type first (boost::begin (uri_)), last (boost::end (uri_));
229
+ const_iterator first (boost::begin (uri_)), last (boost::end (uri_));
221
230
is_valid_ = detail::parse (first, last, uri_parts_);
222
231
}
223
232
224
- template <
225
- class Tag
226
- >
227
- inline
228
- void swap (basic_uri<Tag> &lhs, basic_uri<Tag> &rhs) {
229
- lhs.swap (rhs);
230
- }
231
-
232
233
template <
233
234
class Tag
234
235
>
@@ -358,6 +359,46 @@ bool operator == (const basic_uri<Tag> &lhs, const basic_uri<Tag> &rhs) {
358
359
}
359
360
} // namespace uri
360
361
} // namespace network
362
+
363
+ template <
364
+ class Tag
365
+ >
366
+ inline
367
+ typename network::uri::basic_uri<Tag>::iterator begin (network::uri::basic_uri<Tag> &uri) {
368
+ return uri.begin ();
369
+ }
370
+
371
+ template <
372
+ class Tag
373
+ >
374
+ inline
375
+ typename network::uri::basic_uri<Tag>::iterator end (network::uri::basic_uri<Tag> &uri) {
376
+ return uri.end ();
377
+ }
378
+
379
+ template <
380
+ class Tag
381
+ >
382
+ inline
383
+ typename network::uri::basic_uri<Tag>::const_iterator begin (const network::uri::basic_uri<Tag> &uri) {
384
+ return uri.begin ();
385
+ }
386
+
387
+ template <
388
+ class Tag
389
+ >
390
+ inline
391
+ typename network::uri::basic_uri<Tag>::const_iterator end (const network::uri::basic_uri<Tag> &uri) {
392
+ return uri.end ();
393
+ }
394
+
395
+ template <
396
+ class Tag
397
+ >
398
+ inline
399
+ void swap (network::uri::basic_uri<Tag> &lhs, network::uri::basic_uri<Tag> &rhs) {
400
+ lhs.swap (rhs);
401
+ }
361
402
} // namespace boost
362
403
363
404
0 commit comments