diff options
author | Barnabás Pőcze <pobrn@protonmail.com> | 2024-10-01 16:03:32 +0000 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2024-10-03 01:36:29 +0300 |
commit | e879a86979ab368cd3744bd82fdc7c3013685f0f (patch) | |
tree | ab3f66bffff3205250a3abf1a4a90d52ee7d51b6 /LICENSES/GPL-2.0+.txt | |
parent | 3088e14e814eb3bb25103de8f5402ef6b0211689 (diff) |
libcamera: yaml_parser: Take string keys in `std::string_view`
In many cases a static string literal is used as key. Thus
having the argument type be `const std::string&` is suboptimal
since an `std::string` object needs to be constructed before
the call.
C++17 introduced `std::string_view`, using which the call
can be done with less overhead, as the `std::string_view`
is non-owning and may be passed in registers entirely.
So make `YamlObject::{contains,operator[]}` take the string keys
in `std::string_view`s.
Unfortunately, that is not sufficient yet, because `std::map::find()`
takes an reference to `const key_type`, which would be `const std::string&`
in the case of `YamlParser`. However, with a transparent comparator
such as `std::less<>` `std::map::find()` is able to accept any
object as the argument, and it forwards it to the comparator.
So make `YamlParser::dictionary_` use `std::less<>` as the comparator
to enable the use of `std::map::find()` with any type of argument.
Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'LICENSES/GPL-2.0+.txt')
0 files changed, 0 insertions, 0 deletions