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

Commitcdd6c13

Browse files
committed
Using %= for the rule assignment and then fixing ambiguity in MSVC for unqualified calls to begin() and end().
1 parent190cfe1 commitcdd6c13

File tree

1 file changed

+31
-26
lines changed

1 file changed

+31
-26
lines changed

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

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ namespace boost { namespace spirit { namespace traits {
2525
structtransform_attribute<
2626
boost::network::uri::detail::uri_parts<Tag>,
2727
typename boost::network::uri::detail::uri_parts_tuple<Tag>::type
28+
#if SPIRIT_VERSION >= 0x2030
29+
, boost::spirit::qi::domain
30+
#endif
2831
>
2932
{
3033
typedeftypename boost::network::uri::detail::uri_parts_tuple<Tag>::type type;
@@ -96,76 +99,76 @@ namespace boost { namespace network { namespace uri {
9699
structuri_grammar : qi::grammar<Iterator, uri_parts<Tag>()> {
97100
uri_grammar() : uri_grammar::base_type(start,"uri") {
98101
// gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
99-
gen_delims =qi::char_(":/?#[]@");
102+
gen_delims%=qi::char_(":/?#[]@");
100103
// sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
101-
sub_delims =qi::char_("!$&'()*+,;=");
104+
sub_delims%=qi::char_("!$&'()*+,;=");
102105
// reserved = gen-delims / sub-delims
103-
reserved = gen_delims | sub_delims;
106+
reserved%= gen_delims | sub_delims;
104107
// unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
105-
unreserved = qi::alnum |qi::char_("-._~");
108+
unreserved%= qi::alnum |qi::char_("-._~");
106109
// pct-encoded = "%" HEXDIG HEXDIG
107-
pct_encoded =qi::char_("%") >>qi::repeat(2)[qi::xdigit];
110+
pct_encoded%=qi::char_("%") >>qi::repeat(2)[qi::xdigit];
108111

109112
// pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
110-
pchar = qi::raw[
113+
pchar%= qi::raw[
111114
unreserved | pct_encoded | sub_delims |qi::char_(":@")
112115
];
113116

114117
// segment = *pchar
115-
segment = qi::raw[*pchar];
118+
segment%= qi::raw[*pchar];
116119
// segment-nz = 1*pchar
117-
segment_nz = qi::raw[+pchar];
120+
segment_nz%= qi::raw[+pchar];
118121
// segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
119-
segment_nz_nc = qi::raw[
122+
segment_nz_nc%= qi::raw[
120123
+(unreserved | pct_encoded | sub_delims |qi::char_("@"))
121124
];
122125
// path-abempty = *( "/" segment )
123-
path_abempty = qi::raw[*(qi::char_("/") >> segment)];
126+
path_abempty%= qi::raw[*(qi::char_("/") >> segment)];
124127
// path-absolute = "/" [ segment-nz *( "/" segment ) ]
125-
path_absolute = qi::raw[
128+
path_absolute%= qi::raw[
126129
qi::char_("/")
127130
>> -(segment_nz >> *(qi::char_("/") >> segment))
128131
];
129132
// path-rootless = segment-nz *( "/" segment )
130-
path_rootless = qi::raw[
133+
path_rootless%= qi::raw[
131134
segment_nz >> *(qi::char_("/") >> segment)
132135
];
133136
// path-empty = 0<pchar>
134-
path_empty = qi::eps;
137+
path_empty%= qi::eps;
135138

136139
// scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
137-
scheme = qi::alpha >> *(qi::alnum |qi::char_("+.-"));
140+
scheme%= qi::alpha >> *(qi::alnum |qi::char_("+.-"));
138141

139142
// user_info = *( unreserved / pct-encoded / sub-delims / ":" )
140-
user_info = qi::raw[
143+
user_info%= qi::raw[
141144
*(unreserved | pct_encoded | sub_delims |qi::char_(":"))
142145
];
143146

144147
// dec-octet = DIGIT / %x31-39 DIGIT / "1" 2DIGIT / "2" %x30-34 DIGIT / "25" %x30-35
145-
dec_octet =
148+
dec_octet%=
146149
!(qi::lit('0') >> qi::digit)
147150
>> qi::raw[
148151
qi::uint_parser<boost::uint8_t,10,1,3>()
149152
];
150153
// IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet
151-
ipv4address = qi::raw[
154+
ipv4address%= qi::raw[
152155
dec_octet >>qi::repeat(3)[qi::lit('.') >> dec_octet]
153156
];
154157
// reg-name = *( unreserved / pct-encoded / sub-delims )
155-
reg_name = qi::raw[
158+
reg_name%= qi::raw[
156159
*(unreserved | pct_encoded | sub_delims)
157160
];
158161
// TODO, host = IP-literal / IPv4address / reg-name
159-
host = ipv4address | reg_name;
162+
host%= ipv4address | reg_name;
160163

161164
// query = *( pchar / "/" / "?" )
162-
query = qi::raw[*(pchar |qi::char_("/?"))];
165+
query%= qi::raw[*(pchar |qi::char_("/?"))];
163166
// fragment = *( pchar / "/" / "?" )
164-
fragment = qi::raw[*(pchar |qi::char_("/?"))];
167+
fragment%= qi::raw[*(pchar |qi::char_("/?"))];
165168

166169
// hier-part = "//" authority path-abempty / path-absolute / path-rootless / path-empty
167170
// authority = [ userinfo "@" ] host [ ":" port ]
168-
hier_part =
171+
hier_part%=
169172
(
170173
"//"
171174
>> -(user_info >>'@')
@@ -185,8 +188,8 @@ namespace boost { namespace network { namespace uri {
185188
)
186189
);
187190

188-
start = uri;
189-
uri =
191+
start%= uri;
192+
uri%=
190193
scheme >>':'
191194
>> hier_part
192195
>> -('?' >> query)
@@ -234,8 +237,10 @@ namespace boost { namespace network { namespace uri {
234237
inlineboolparse_uri(Range & range, uri_parts<Tag> & parts) {
235238
typedeftypename range_iterator<Range>::type iterator;
236239

237-
iterator start_ =begin(range);
238-
iterator end_ =end(range);
240+
// Qualified boost::begin and boost::end because MSVC complains
241+
// of ambiguity on call to begin(range) and end(rand).
242+
iterator start_ =boost::begin(range);
243+
iterator end_ =boost::end(range);
239244

240245
uri_grammar<iterator, Tag> grammar;
241246

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp