15
15
# ifdef BOOST_NETWORK_NO_LIB
16
16
# include < boost/network/uri/detail/parse_uri.hpp>
17
17
# endif // #ifdef BOOST_NETWORK_NO_LIB
18
+ # include < boost/fusion/include/std_pair.hpp>
18
19
# include < boost/algorithm/string.hpp>
19
20
# include < boost/range/iterator_range.hpp>
20
21
# include < boost/operators.hpp>
@@ -111,50 +112,26 @@ class basic_uri
111
112
112
113
const_range_type user_info_range () const {
113
114
using boost::fusion::at_c;
114
- const boost::fusion::vector<
115
- detail::iterator_range<typename string<Tag>::type>
116
- , detail::iterator_range<typename string<Tag>::type>
117
- , detail::iterator_range<typename string<Tag>::type>
118
- , detail::iterator_range<typename string<Tag>::type> > &hier_part = at_c<1 >(uri_parts_);
119
-
120
- return const_range_type (at_c<0 >(at_c<0 >(hier_part)),
121
- at_c<1 >(at_c<0 >(hier_part)));
115
+ return const_range_type (at_c<0 >(at_c<0 >(at_c<1 >(uri_parts_))),
116
+ at_c<1 >(at_c<0 >(at_c<1 >(uri_parts_))));
122
117
}
123
118
124
119
const_range_type host_range () const {
125
120
using boost::fusion::at_c;
126
- const boost::fusion::vector<
127
- detail::iterator_range<typename string<Tag>::type>
128
- , detail::iterator_range<typename string<Tag>::type>
129
- , detail::iterator_range<typename string<Tag>::type>
130
- , detail::iterator_range<typename string<Tag>::type> > &hier_part = at_c<1 >(uri_parts_);
131
-
132
- return const_range_type (at_c<0 >(at_c<1 >(hier_part)),
133
- at_c<1 >(at_c<1 >(hier_part)));
121
+ return const_range_type (at_c<0 >(at_c<1 >(at_c<1 >(uri_parts_))),
122
+ at_c<1 >(at_c<1 >(at_c<1 >(uri_parts_))));
134
123
}
135
124
136
125
const_range_type port_range () const {
137
126
using boost::fusion::at_c;
138
- const boost::fusion::vector<
139
- detail::iterator_range<typename string<Tag>::type>
140
- , detail::iterator_range<typename string<Tag>::type>
141
- , detail::iterator_range<typename string<Tag>::type>
142
- , detail::iterator_range<typename string<Tag>::type> > &hier_part = at_c<1 >(uri_parts_);
143
-
144
- return const_range_type (at_c<0 >(at_c<2 >(hier_part)),
145
- at_c<1 >(at_c<2 >(hier_part)));
127
+ return const_range_type (at_c<0 >(at_c<2 >(at_c<1 >(uri_parts_))),
128
+ at_c<1 >(at_c<2 >(at_c<1 >(uri_parts_))));
146
129
}
147
130
148
131
const_range_type path_range () const {
149
132
using boost::fusion::at_c;
150
- const boost::fusion::vector<
151
- detail::iterator_range<typename string<Tag>::type>
152
- , detail::iterator_range<typename string<Tag>::type>
153
- , detail::iterator_range<typename string<Tag>::type>
154
- , detail::iterator_range<typename string<Tag>::type> > &hier_part = at_c<1 >(uri_parts_);
155
-
156
- return const_range_type (at_c<0 >(at_c<3 >(hier_part)),
157
- at_c<1 >(at_c<3 >(hier_part)));
133
+ return const_range_type (at_c<0 >(at_c<3 >(at_c<1 >(uri_parts_))),
134
+ at_c<1 >(at_c<3 >(at_c<1 >(uri_parts_))));
158
135
}
159
136
160
137
const_range_type query_range () const {
@@ -208,6 +185,10 @@ class basic_uri
208
185
return uri_;
209
186
}
210
187
188
+ string_type raw () const {
189
+ return to_string ();
190
+ }
191
+
211
192
bool is_valid () const {
212
193
return is_valid_;
213
194
}
@@ -222,10 +203,10 @@ class basic_uri
222
203
223
204
};
224
205
225
-
226
206
template <
227
207
class Tag
228
208
>
209
+ inline
229
210
void basic_uri<Tag>::parse() {
230
211
const_iterator_type first (boost::begin (uri_)), last (boost::end (uri_));
231
212
is_valid_ = detail::parse (first, last, uri_parts_);
@@ -301,7 +282,6 @@ struct port_wrapper {
301
282
}
302
283
};
303
284
304
-
305
285
template <
306
286
class Tag
307
287
>
0 commit comments