line |
true |
false |
branch |
21
|
0 |
4 |
if (query_cache) { |
22
|
0 |
0 |
hash = query_cache.value(); |
23
|
0 |
0 |
hash.clear(); |
25
|
4 |
0 |
hash = Hash::create(); |
26
|
4 |
0 |
query_cache = Ref::create(hash); |
29
|
4 |
0 |
auto end = uri->query().cend(); |
30
|
4 |
0 |
for (auto it = uri->query().cbegin(); it != end; ++it) hash.store(it->first, Simple(it->second)); |
|
13 |
4 |
for (auto it = uri->query().cbegin(); it != end; ++it) hash.store(it->first, Simple(it->second)); |
|
13 |
0 |
for (auto it = uri->query().cbegin(); it != end; ++it) hash.store(it->first, Simple(it->second)); |
|
13 |
0 |
for (auto it = uri->query().cbegin(); it != end; ++it) hash.store(it->first, Simple(it->second)); |
32
|
4 |
0 |
query_cache_rev = uri->query().rev; |
36
|
1 |
4 |
if (!query_cache || query_cache_rev != uri->query().rev) sync_query_hash(uri); |
|
0 |
1 |
if (!query_cache || query_cache_rev != uri->query().rev) sync_query_hash(uri); |
|
4 |
1 |
if (!query_cache || query_cache_rev != uri->query().rev) sync_query_hash(uri); |
46
|
118 |
0 |
uri_class_map[scheme] = Stash(perl_class); |
50
|
19 |
0 |
auto it = uri_class_map.find(uri->scheme()); |
51
|
2 |
17 |
if (it == uri_class_map.end()) return Stash(); |
52
|
17 |
0 |
else return it->second; |
57
|
135 |
0 |
Object(sv).payload_attach(data, &data_marker); |
62
|
135 |
0 |
delete data; |
71
|
0 |
5 |
if (val.is_array_ref()) { |
72
|
0 |
0 |
Array arr = val; |
73
|
0 |
0 |
if (replace) uri->query().erase(key); |
|
0 |
0 |
if (replace) uri->query().erase(key); |
|
0 |
0 |
if (replace) uri->query().erase(key); |
74
|
0 |
0 |
auto end = arr.end(); |
75
|
0 |
0 |
for (auto it = arr.begin(); it != end; ++it) { |
|
0 |
0 |
for (auto it = arr.begin(); it != end; ++it) { |
76
|
0 |
0 |
if (!*it) continue; |
|
0 |
0 |
if (!*it) continue; |
77
|
0 |
0 |
uri->query().emplace(key, xs::in(*it)); |
|
0 |
0 |
uri->query().emplace(key, xs::in(*it)); |
|
0 |
0 |
uri->query().emplace(key, xs::in(*it)); |
|
0 |
0 |
uri->query().emplace(key, xs::in(*it)); |
80
|
1 |
4 |
else if (replace) uri->param(key, xs::in(val)); |
|
1 |
0 |
else if (replace) uri->param(key, xs::in(val)); |
81
|
4 |
0 |
else uri->query().emplace(key, xs::in(val)); |
|
4 |
0 |
else uri->query().emplace(key, xs::in(val)); |
86
|
2 |
0 |
for (auto it = hash.begin(); it != end; ++it) { |
|
6 |
2 |
for (auto it = hash.begin(); it != end; ++it) { |
87
|
6 |
0 |
string key(it->key()); |
88
|
6 |
0 |
auto val = it->value(); |
89
|
6 |
0 |
if (val.is_array_ref()) { |
|
1 |
5 |
if (val.is_array_ref()) { |
90
|
1 |
0 |
Array arr = val; |
91
|
1 |
0 |
auto end = arr.end(); |
92
|
1 |
0 |
for (auto it = arr.begin(); it != end; ++it) { |
|
3 |
1 |
for (auto it = arr.begin(); it != end; ++it) { |
93
|
3 |
0 |
if (!*it) continue; |
|
0 |
3 |
if (!*it) continue; |
94
|
3 |
0 |
query->emplace(key, xs::in(*it)); |
|
3 |
0 |
query->emplace(key, xs::in(*it)); |
|
3 |
0 |
query->emplace(key, xs::in(*it)); |
97
|
5 |
0 |
else query->emplace(key, xs::in(val)); |
|
5 |
0 |
else query->emplace(key, xs::in(val)); |
102
|
2 |
1 |
if (replace) { |
104
|
2 |
0 |
hash2query(hash, &query); |
105
|
2 |
0 |
uri->query(query); |
109
|
1 |
0 |
for (auto it = hash.begin(); it != end; ++it) add_param(uri, string(it->key()), it->value()); |
|
1 |
1 |
for (auto it = hash.begin(); it != end; ++it) add_param(uri, string(it->key()), it->value()); |
|
1 |
0 |
for (auto it = hash.begin(); it != end; ++it) add_param(uri, string(it->key()), it->value()); |
|
1 |
0 |
for (auto it = hash.begin(); it != end; ++it) add_param(uri, string(it->key()), it->value()); |
|
1 |
0 |
for (auto it = hash.begin(); it != end; ++it) add_param(uri, string(it->key()), it->value()); |
114
|
6 |
9 |
if (items == 1) { |
115
|
3 |
3 |
if (SvROK(*sp)) { |
116
|
3 |
0 |
Hash hash = *sp; |
117
|
3 |
0 |
if (hash) add_query_hash(uri, hash, replace); |
|
3 |
0 |
if (hash) add_query_hash(uri, hash, replace); |
119
|
0 |
3 |
else if (replace) uri->query(xs::in(*sp)); |
|
0 |
0 |
else if (replace) uri->query(xs::in(*sp)); |
120
|
3 |
0 |
else uri->add_query(xs::in(*sp)); |
124
|
3 |
9 |
for (; sp < spe; sp += 2) add_param(uri, xs::in(*sp), *(sp+1), replace); |
|
3 |
0 |
for (; sp < spe; sp += 2) add_param(uri, xs::in(*sp), *(sp+1), replace); |
|
3 |
0 |
for (; sp < spe; sp += 2) add_param(uri, xs::in(*sp), *(sp+1), replace); |
134
|
13 |
0 |
xs::at_perl_destroy([]{ |
136
|
13 |
0 |
}); |
141
|
19 |
0 |
} |
144
|
1 |
0 |
register_perl_scheme(scheme, perl_class); |
149
|
0 |
0 |
for (int i = 0; i < 1000; ++i) { |
150
|
0 |
0 |
URI u(str); |
156
|
0 |
0 |
auto uri = URI(str); |
157
|
0 |
0 |
printf("scheme=%s\n", uri.scheme().c_str()); |
|
0 |
0 |
printf("scheme=%s\n", uri.scheme().c_str()); |
158
|
0 |
0 |
printf("userinfo=%s\n", uri.user_info().c_str()); |
|
0 |
0 |
printf("userinfo=%s\n", uri.user_info().c_str()); |
159
|
0 |
0 |
printf("host=%s\n", uri.host().c_str()); |
|
0 |
0 |
printf("host=%s\n", uri.host().c_str()); |
160
|
0 |
0 |
printf("port=%d\n", uri.port()); |
161
|
0 |
0 |
printf("path=%s\n", uri.path().c_str()); |
|
0 |
0 |
printf("path=%s\n", uri.path().c_str()); |
162
|
0 |
0 |
printf("query=%s\n", uri.raw_query().c_str()); |
|
0 |
0 |
printf("query=%s\n", uri.raw_query().c_str()); |
|
0 |
0 |
printf("query=%s\n", uri.raw_query().c_str()); |
163
|
0 |
0 |
printf("fragment=%s\n", uri.fragment().c_str()); |
|
0 |
0 |
printf("fragment=%s\n", uri.fragment().c_str()); |
167
|
0 |
0 |
URI u; |
168
|
0 |
0 |
for (int i = 0; i < 1000; ++i) { |
169
|
0 |
0 |
u.query_string(str); |
170
|
0 |
0 |
u.query(); |
177
|
0 |
0 |
for (int i = 0; i < 1000; ++i) { |
178
|
0 |
0 |
encode_uri_component(str, dest); |
185
|
0 |
0 |
for (int i = 0; i < 1000; ++i) { |
186
|
0 |
0 |
decode_uri_component(str, dest); |