Commit 60ccc1f
feat: support std::string_view in Value API (#1584)
This adds direct support for `std::string_view` when available (C++17
and above). The current API can be used with `std::string_view` via the
low-level two-pointer methods, but is not ergonomic. E.g., compare:
```
Json::Value node;
std::string foo, bar, baz;
std::string_view foo_sv, bar_sv, baz_sv;
// Efficient & readable:
node[foo][bar][baz];
// Less efficient, less readable:
node[std::string(foo_sv)][std::string(bar_sv)][std::string(baz_sv)];
// Efficient, but a lot less readable:
*node.demand(foo_sv.data(), foo_sv.data() + foo_sv.size())
->demand(bar_sv.data(), bar_sv.data() + bar_sv.size())
->demand(baz_sv.data(), baz_sv.data() + baz_sv.size())
// After this change, efficient & readable:
node[foo_sv][bar_sv][baz_sv];
```
* The constructor can take a `std::string_view` parameter. The existing
overloads taking `const std::string&` and `const char*` are still necessary
to support assignment from those types.
* `operator[]`, `get()`, `isMember()` and `removeMember()` take a
`std::string_view` parameter. This supersedes the overloads taking
`const std::string&` and `const char*`. The overloads taking a pair of
pointers (begin, end) are preserved for source compatibility.
* `getString()` has an overload with a `std::string_view` output parameter.
The one with a pair of pointers is preserved for source compatibility.
Signed-off-by: Lev Kandel <[email protected]>
Co-authored-by: Jordan Bayles <[email protected]>1 parent 07a8fe6 commit 60ccc1f
2 files changed
+125
-7
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
42 | 46 | | |
43 | 47 | | |
44 | 48 | | |
45 | 49 | | |
46 | 50 | | |
47 | 51 | | |
48 | 52 | | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
49 | 57 | | |
50 | 58 | | |
51 | 59 | | |
| |||
342 | 350 | | |
343 | 351 | | |
344 | 352 | | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
345 | 356 | | |
346 | 357 | | |
347 | 358 | | |
| |||
384 | 395 | | |
385 | 396 | | |
386 | 397 | | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
387 | 404 | | |
388 | 405 | | |
389 | 406 | | |
| |||
470 | 487 | | |
471 | 488 | | |
472 | 489 | | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
473 | 499 | | |
474 | 500 | | |
475 | 501 | | |
| |||
484 | 510 | | |
485 | 511 | | |
486 | 512 | | |
| 513 | + | |
487 | 514 | | |
488 | 515 | | |
489 | 516 | | |
| |||
497 | 524 | | |
498 | 525 | | |
499 | 526 | | |
| 527 | + | |
500 | 528 | | |
501 | 529 | | |
502 | | - | |
| 530 | + | |
| 531 | + | |
503 | 532 | | |
504 | 533 | | |
505 | | - | |
506 | | - | |
507 | | - | |
| 534 | + | |
508 | 535 | | |
509 | 536 | | |
510 | 537 | | |
511 | 538 | | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
512 | 545 | | |
513 | 546 | | |
514 | 547 | | |
| |||
525 | 558 | | |
526 | 559 | | |
527 | 560 | | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
528 | 564 | | |
529 | 565 | | |
530 | 566 | | |
531 | 567 | | |
532 | | - | |
533 | | - | |
534 | | - | |
| 568 | + | |
535 | 569 | | |
536 | 570 | | |
537 | 571 | | |
538 | 572 | | |
539 | 573 | | |
540 | 574 | | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
541 | 578 | | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
542 | 583 | | |
543 | 584 | | |
544 | 585 | | |
| |||
549 | 590 | | |
550 | 591 | | |
551 | 592 | | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
552 | 598 | | |
553 | 599 | | |
554 | 600 | | |
555 | 601 | | |
556 | 602 | | |
557 | 603 | | |
| 604 | + | |
558 | 605 | | |
559 | 606 | | |
560 | 607 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
20 | 24 | | |
21 | 25 | | |
22 | 26 | | |
| |||
420 | 424 | | |
421 | 425 | | |
422 | 426 | | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
423 | 435 | | |
424 | 436 | | |
425 | 437 | | |
| |||
627 | 639 | | |
628 | 640 | | |
629 | 641 | | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
630 | 657 | | |
631 | 658 | | |
632 | 659 | | |
| |||
1108 | 1135 | | |
1109 | 1136 | | |
1110 | 1137 | | |
| 1138 | + | |
| 1139 | + | |
| 1140 | + | |
| 1141 | + | |
| 1142 | + | |
| 1143 | + | |
| 1144 | + | |
| 1145 | + | |
| 1146 | + | |
| 1147 | + | |
| 1148 | + | |
1111 | 1149 | | |
1112 | 1150 | | |
1113 | 1151 | | |
| |||
1128 | 1166 | | |
1129 | 1167 | | |
1130 | 1168 | | |
| 1169 | + | |
1131 | 1170 | | |
1132 | 1171 | | |
1133 | 1172 | | |
| |||
1167 | 1206 | | |
1168 | 1207 | | |
1169 | 1208 | | |
| 1209 | + | |
| 1210 | + | |
| 1211 | + | |
| 1212 | + | |
| 1213 | + | |
1170 | 1214 | | |
1171 | 1215 | | |
1172 | 1216 | | |
1173 | 1217 | | |
1174 | 1218 | | |
1175 | 1219 | | |
| 1220 | + | |
1176 | 1221 | | |
1177 | 1222 | | |
1178 | 1223 | | |
| |||
1188 | 1233 | | |
1189 | 1234 | | |
1190 | 1235 | | |
| 1236 | + | |
| 1237 | + | |
| 1238 | + | |
| 1239 | + | |
| 1240 | + | |
1191 | 1241 | | |
1192 | 1242 | | |
1193 | 1243 | | |
1194 | 1244 | | |
1195 | 1245 | | |
1196 | 1246 | | |
| 1247 | + | |
| 1248 | + | |
| 1249 | + | |
| 1250 | + | |
| 1251 | + | |
| 1252 | + | |
| 1253 | + | |
| 1254 | + | |
| 1255 | + | |
| 1256 | + | |
| 1257 | + | |
| 1258 | + | |
| 1259 | + | |
| 1260 | + | |
1197 | 1261 | | |
1198 | 1262 | | |
1199 | 1263 | | |
| |||
1204 | 1268 | | |
1205 | 1269 | | |
1206 | 1270 | | |
| 1271 | + | |
1207 | 1272 | | |
1208 | 1273 | | |
1209 | 1274 | | |
| |||
1233 | 1298 | | |
1234 | 1299 | | |
1235 | 1300 | | |
| 1301 | + | |
| 1302 | + | |
| 1303 | + | |
| 1304 | + | |
| 1305 | + | |
1236 | 1306 | | |
1237 | 1307 | | |
1238 | 1308 | | |
1239 | 1309 | | |
1240 | 1310 | | |
1241 | 1311 | | |
| 1312 | + | |
1242 | 1313 | | |
1243 | 1314 | | |
1244 | 1315 | | |
| |||
0 commit comments