Skip to content

Commit e118310

Browse files
committed
Cleaned up URI again.
1 parent 56048ec commit e118310

File tree

3 files changed

+31
-26
lines changed

3 files changed

+31
-26
lines changed

boost/network/uri/detail/uri_parts.hpp

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@
77
# define BOOST_NETWORK_URL_DETAIL_URL_PARTS_HPP_
88

99

10-
# include <string>
11-
12-
1310
namespace boost {
1411
namespace network {
1512
namespace uri {
1613
namespace detail {
14+
template <
15+
class String
16+
>
1717
struct hierarchical_part {
18-
std::string user_info, host, port, path;
18+
String user_info, host, port, path;
1919

2020
void clear() {
2121
user_info.clear();
@@ -25,11 +25,14 @@ struct hierarchical_part {
2525
}
2626
};
2727

28+
template <
29+
class String
30+
>
2831
struct uri_parts {
29-
std::string scheme;
30-
hierarchical_part hier_part;
31-
std::string query;
32-
std::string fragment;
32+
String scheme;
33+
hierarchical_part<String> hier_part;
34+
String query;
35+
String fragment;
3336

3437
void clear() {
3538
scheme.clear();

boost/network/uri/uri.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ namespace uri {
2222
namespace detail {
2323
bool parse(std::string::const_iterator first,
2424
std::string::const_iterator last,
25-
uri_parts &parts);
25+
uri_parts<std::string> &parts);
2626
} // namespace detail
2727

2828

@@ -150,7 +150,7 @@ class uri
150150
void parse();
151151

152152
string_type uri_;
153-
detail::uri_parts uri_parts_;
153+
detail::uri_parts<std::string> uri_parts_;
154154
bool is_valid_;
155155

156156
};

libs/network/src/uri/parse.cpp

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,24 @@
99
#include <boost/spirit/home/qi.hpp>
1010
#include <boost/fusion/adapted/struct/adapt_struct.hpp>
1111

12-
BOOST_FUSION_ADAPT_STRUCT
12+
BOOST_FUSION_ADAPT_TPL_STRUCT
1313
(
14-
boost::network::uri::detail::hierarchical_part,
15-
(std::string, user_info)
16-
(std::string, host)
17-
(std::string, port)
18-
(std::string, path)
14+
(String),
15+
(boost::network::uri::detail::hierarchical_part)(String),
16+
(String, user_info)
17+
(String, host)
18+
(String, port)
19+
(String, path)
1920
);
2021

21-
BOOST_FUSION_ADAPT_STRUCT
22+
BOOST_FUSION_ADAPT_TPL_STRUCT
2223
(
23-
boost::network::uri::detail::uri_parts,
24-
(std::string, scheme)
25-
(boost::network::uri::detail::hierarchical_part, hier_part)
26-
(std::string, query)
27-
(std::string, fragment)
24+
(String),
25+
(boost::network::uri::detail::uri_parts)(String),
26+
(String, scheme)
27+
(boost::network::uri::detail::hierarchical_part<String>, hier_part)
28+
(String, query)
29+
(String, fragment)
2830
);
2931

3032
namespace boost {
@@ -38,7 +40,7 @@ template <
3840
>
3941
struct uri_grammar : qi::grammar<
4042
typename String::const_iterator
41-
, detail::uri_parts()> {
43+
, detail::uri_parts<String>()> {
4244

4345
typedef String string_type;
4446
typedef typename String::const_iterator const_iterator;
@@ -216,17 +218,17 @@ struct uri_grammar : qi::grammar<
216218
qi::rule<const_iterator, string_type()>
217219
scheme, user_info, query, fragment;
218220

219-
qi::rule<const_iterator, hierarchical_part()>
221+
qi::rule<const_iterator, hierarchical_part<string_type>()>
220222
hier_part;
221223

222224
// actual uri parser
223-
qi::rule<const_iterator, uri_parts()> start;
225+
qi::rule<const_iterator, uri_parts<string_type>()> start;
224226

225227
};
226228

227229
bool parse(std::string::const_iterator first,
228230
std::string::const_iterator last,
229-
uri_parts &parts) {
231+
uri_parts<std::string> &parts) {
230232
namespace qi = boost::spirit::qi;
231233
static detail::uri_grammar<std::string> grammar;
232234
bool is_valid = qi::parse(first, last, grammar, parts);

0 commit comments

Comments
 (0)