Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4fbe263

Browse files
committed
Cleaned up URI parts.
1 parente2c257f commit4fbe263

File tree

3 files changed

+61
-52
lines changed

3 files changed

+61
-52
lines changed

‎boost/network/uri/detail/uri_parts.hpp‎

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#defineBOOST_NETWORK_URL_DETAIL_URL_PARTS_HPP_
88

99

10-
#include<boost/fusion/include/vector.hpp>
10+
#include<utility>
1111

1212

1313
namespaceboost {
@@ -18,29 +18,28 @@ template <
1818
classString
1919
>
2020
structiterator_range
21-
:boost::fusion::vector<
21+
:std::pair<
2222
typename String::const_iterator
23-
,typename String::const_iterator
24-
>
25-
{ };
23+
,typename String::const_iterator> {
2624

25+
};
2726

2827
template<
2928
classString
3029
>
31-
structuri_parts
32-
: boost::fusion::vector<
33-
iterator_range<String>// scheme
34-
, boost::fusion::vector<
35-
iterator_range<String>// user_info
36-
, iterator_range<String>// host
37-
, iterator_range<String>// port
38-
, iterator_range<String>// path
39-
>
40-
, iterator_range<String>// query
41-
, iterator_range<String>// fragment
30+
structhierarchical_part {
31+
iterator_range<String> user_info, host, port, path;
32+
};
33+
34+
template<
35+
classString
4236
>
43-
{ };
37+
structuri_parts {
38+
iterator_range<String> scheme;
39+
hierarchical_part<String> hier_part;
40+
iterator_range<String> query;
41+
iterator_range<String> fragment;
42+
};
4443
}// namespace detail
4544
}// namespace uri
4645
}// namespace network

‎boost/network/uri/uri.hpp‎

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#include<boost/network/traits/string.hpp>
1212
#include<boost/network/constants.hpp>
1313
#include<boost/network/uri/detail/uri_parts.hpp>
14-
#include<boost/fusion/sequence/intrinsic/at_c.hpp>
1514
#include<boost/algorithm/string.hpp>
1615
#include<boost/range/iterator_range.hpp>
1716
#include<boost/operators.hpp>
@@ -104,45 +103,38 @@ class uri
104103
}
105104

106105
const_range_typescheme_range()const {
107-
using boost::fusion::at_c;
108-
returnconst_range_type(at_c<0>(at_c<0>(uri_parts_)),
109-
at_c<1>(at_c<0>(uri_parts_)));
106+
returnconst_range_type(uri_parts_.scheme.first,
107+
uri_parts_.scheme.second);
110108
}
111109

112110
const_range_typeuser_info_range()const {
113-
using boost::fusion::at_c;
114-
returnconst_range_type(at_c<0>(at_c<0>(at_c<1>(uri_parts_))),
115-
at_c<1>(at_c<0>(at_c<1>(uri_parts_))));
111+
returnconst_range_type(uri_parts_.hier_part.user_info.first,
112+
uri_parts_.hier_part.user_info.second);
116113
}
117114

118115
const_range_typehost_range()const {
119-
using boost::fusion::at_c;
120-
returnconst_range_type(at_c<0>(at_c<1>(at_c<1>(uri_parts_))),
121-
at_c<1>(at_c<1>(at_c<1>(uri_parts_))));
116+
returnconst_range_type(uri_parts_.hier_part.host.first,
117+
uri_parts_.hier_part.host.second);
122118
}
123119

124120
const_range_typeport_range()const {
125-
using boost::fusion::at_c;
126-
returnconst_range_type(at_c<0>(at_c<2>(at_c<1>(uri_parts_))),
127-
at_c<1>(at_c<2>(at_c<1>(uri_parts_))));
121+
returnconst_range_type(uri_parts_.hier_part.port.first,
122+
uri_parts_.hier_part.port.second);
128123
}
129124

130125
const_range_typepath_range()const {
131-
using boost::fusion::at_c;
132-
returnconst_range_type(at_c<0>(at_c<3>(at_c<1>(uri_parts_))),
133-
at_c<1>(at_c<3>(at_c<1>(uri_parts_))));
126+
returnconst_range_type(uri_parts_.hier_part.path.first,
127+
uri_parts_.hier_part.path.second);
134128
}
135129

136130
const_range_typequery_range()const {
137-
using boost::fusion::at_c;
138-
returnconst_range_type(at_c<0>(at_c<2>(uri_parts_)),
139-
at_c<1>(at_c<2>(uri_parts_)));
131+
returnconst_range_type(uri_parts_.query.first,
132+
uri_parts_.query.second);
140133
}
141134

142135
const_range_typefragment_range()const {
143-
using boost::fusion::at_c;
144-
returnconst_range_type(at_c<0>(at_c<3>(uri_parts_)),
145-
at_c<1>(at_c<3>(uri_parts_)));
136+
returnconst_range_type(uri_parts_.fragment.first,
137+
uri_parts_.fragment.second);
146138
}
147139

148140
string_typescheme()const {

‎libs/network/src/uri/parse.cpp‎

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,36 @@
1010
#include<boost/spirit/include/phoenix_operator.hpp>
1111
#include<boost/spirit/include/version.hpp>
1212
#include<boost/spirit/repository/include/qi_iter_pos.hpp>
13+
#include<boost/fusion/adapted/struct/adapt_struct.hpp>
14+
15+
16+
BOOST_FUSION_ADAPT_TPL_STRUCT
17+
(
18+
(String),
19+
(boost::network::uri::detail::iterator_range)(String),
20+
(typename String::const_iterator, first)
21+
(typename String::const_iterator, second)
22+
);
23+
24+
BOOST_FUSION_ADAPT_TPL_STRUCT
25+
(
26+
(String),
27+
(boost::network::uri::detail::hierarchical_part)(String),
28+
(boost::network::uri::detail::iterator_range<String>, user_info)
29+
(boost::network::uri::detail::iterator_range<String>, host)
30+
(boost::network::uri::detail::iterator_range<String>, port)
31+
(boost::network::uri::detail::iterator_range<String>, path)
32+
);
33+
34+
BOOST_FUSION_ADAPT_TPL_STRUCT
35+
(
36+
(String),
37+
(boost::network::uri::detail::uri_parts)(String),
38+
(boost::network::uri::detail::iterator_range<String>, scheme)
39+
(boost::network::uri::detail::hierarchical_part<String>, hier_part)
40+
(boost::network::uri::detail::iterator_range<String>, query)
41+
(boost::network::uri::detail::iterator_range<String>, fragment)
42+
);
1343

1444

1545
namespaceboost {
@@ -222,10 +252,7 @@ struct uri_grammar : qi::grammar<Iterator, detail::uri_parts<String>()> {
222252
qi::rule<Iterator, iterator_range<String>()>
223253
scheme, user_info, query, fragment;
224254

225-
qi::rule<Iterator, boost::fusion::vector<iterator_range<String>,
226-
iterator_range<String>,
227-
iterator_range<String>,
228-
iterator_range<String> >()>
255+
qi::rule<Iterator, hierarchical_part<String>()>
229256
hier_part;
230257

231258
// actual uri parser
@@ -241,15 +268,6 @@ bool parse(std::string::const_iterator first,
241268
bool is_valid =qi::parse(first, last, grammar, parts);
242269
return is_valid && (first == last);
243270
}
244-
245-
boolparse(std::wstring::const_iterator first,
246-
std::wstring::const_iterator last,
247-
uri_parts<std::wstring> &parts) {
248-
namespaceqi= boost::spirit::qi;
249-
static uri_grammar<std::wstring, std::wstring::const_iterator> grammar;
250-
bool is_valid =qi::parse(first, last, grammar, parts);
251-
return is_valid && (first == last);
252-
}
253271
}// namespace detail
254272
}// namespace uri
255273
}// namespace network

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp