tree 324ae6c030f5daa60a5b2a9c64322b0ab77e8140
parent 07a8fe6a235a91e9ad9bd69fae25a3ed07162ac0
author evalon32 <34560232+evalon32@users.noreply.github.com> 1736551525 -0500
committer GitHub <noreply@github.com> 1736551525 -0800
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJngaxlCRC1aQ7uu5UhlAAAz08QAKtfpSfPMv5av+R87S2++ICI
 15IQgZUz8yGYDxnCc2SY8FrFcZ2x2zdCb9lvRNVq0yqb7yxiK2UPI0A7k0xmfVaz
 iNkBZExdrI8qY70oFmaSjCvj7XGoZEkocohIKhuUoSLXKbAg0BwSXF17msPOPE+H
 GIMhUQ9lk9b1fqJhomxPydX079ejkg0vTzli2YAaV2V5z85ijbg+5Do1g1qSkquY
 h8lJI7N9J7gkKLR67l5FUzPJX6xNv+O9PjLIEA5GjC6L4dBabH3lyEver0l9Q68r
 N+4Xjbv842mGcEAL45SeqH5pFXnjRe8xWOnGZUfIc08Jt9Lsc1qcLKzxQ/1pQKP0
 kosi0gNyh8zYOhZpCUdrseawxJ+UoB5mVUEoGC17xsCFe6Bwhj2rbX37BYQ0kbZX
 CNGRabI4+2+XETDfRga8omDXYKgbgmmXWHyGcVVRvKcKpXfCSq2D2f9VaeSonelJ
 Y7eU5O1aTpkDX12hkUYXjVqD7+AymFZNu95/1h/TZ4NwzAYVVCK7wGK7giaU5v7W
 5tQ2LrIJ4fQGyst3T0koiWdiXMgITxGoFFg6AMkV1VIVA6cNG15IJz/N1VwM6ds0
 Bm1FdqFWnwAEURsfd5wcL/ZpNiixnuvN0nAaP3LUyIYe9CNwRCDgctSqMWhAo9fP
 F4c66OTUykh1+04wYfmz
 =SgC1
 -----END PGP SIGNATURE-----
 

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 <lmakhlis@google.com>
Co-authored-by: Jordan Bayles <bayles.jordan@gmail.com>