line |
true |
false |
branch |
20
|
154 |
0 |
auto cur = strval.begin(); |
21
|
154 |
0 |
auto end = strval.end(); |
29
|
10508 |
154 |
for (; cur != end; ++cur) { |
31
|
9656 |
852 |
if (!header_value_special[(uchar)c]) { |
35
|
291 |
561 |
if (c == ' ') continue; |
37
|
142 |
419 |
if (mode == PARSE_MODE_NAME) { |
38
|
0 |
142 |
if (c == ';' || c == ',') { |
|
0 |
0 |
if (c == ';' || c == ',') { |
40
|
142 |
0 |
values.resize(sz+1); |
42
|
142 |
0 |
elem->name.assign(accstr, acc-accstr); |
44
|
142 |
0 |
if (c == ';') mode = PARSE_MODE_KEY; |
48
|
280 |
139 |
else if (mode == PARSE_MODE_KEY) { |
49
|
273 |
7 |
if (c == ';' || c == ',') { |
|
0 |
273 |
if (c == ';' || c == ',') { |
50
|
7 |
0 |
elem->params.emplace(string(accstr, acc-accstr), string()); |
|
7 |
0 |
elem->params.emplace(string(accstr, acc-accstr), string()); |
52
|
0 |
7 |
if (c == ',') mode = PARSE_MODE_NAME; |
54
|
273 |
0 |
else if (c == '=') { |
55
|
273 |
0 |
key.assign(accstr, acc-accstr); |
62
|
1 |
138 |
if (c == ';' || c == ',') { |
|
1 |
0 |
if (c == ';' || c == ',') { |
63
|
139 |
0 |
elem->params.emplace(key, string(accstr, acc-accstr)); |
|
139 |
0 |
elem->params.emplace(key, string(accstr, acc-accstr)); |
65
|
1 |
138 |
if (c == ',') mode = PARSE_MODE_NAME; |
73
|
13 |
141 |
if (mode == PARSE_MODE_NAME) values.push_back(HeaderValue{string(accstr, acc-accstr), HeaderValueParams()}); |
|
13 |
0 |
if (mode == PARSE_MODE_NAME) values.push_back(HeaderValue{string(accstr, acc-accstr), HeaderValueParams()}); |
|
13 |
0 |
if (mode == PARSE_MODE_NAME) values.push_back(HeaderValue{string(accstr, acc-accstr), HeaderValueParams()}); |
74
|
7 |
134 |
else if (mode == PARSE_MODE_KEY) elem->params.emplace(string(accstr, acc-accstr), string()); |
|
7 |
0 |
else if (mode == PARSE_MODE_KEY) elem->params.emplace(string(accstr, acc-accstr), string()); |
|
7 |
0 |
else if (mode == PARSE_MODE_KEY) elem->params.emplace(string(accstr, acc-accstr), string()); |
75
|
134 |
0 |
else /* PARSE_MODE_VAL */ elem->params.emplace(key, string(accstr, acc-accstr)); |
|
134 |
0 |
else /* PARSE_MODE_VAL */ elem->params.emplace(key, string(accstr, acc-accstr)); |
81
|
168 |
168 |
for (const auto& elem : values) { |
82
|
168 |
0 |
str += elem.name; |
83
|
315 |
168 |
for (const auto& param : elem.params) { |
84
|
315 |
0 |
str += "; "; |
85
|
315 |
0 |
str += param.first; |
86
|
300 |
15 |
if (param.second) { |
87
|
300 |
0 |
str += '='; |
88
|
300 |
0 |
str += param.second; |
91
|
168 |
0 |
str += ", "; |
94
|
168 |
0 |
if (str) str.length(str.length() - 2); |
99
|
18 |
0 |
}}} |
|
18 |
0 |
}}} |