libcamera: utils: Add map_keys() function

Add a map_keys() function to the utils namespace to extract keys from a
map.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
[Niklas: change return type to std::vector instead of std::set]
Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Laurent Pinchart 2020-06-25 04:23:35 +03:00 committed by Niklas Söderlund
parent b5f6a2ce2f
commit c58bec935c
3 changed files with 39 additions and 0 deletions

View file

@ -15,6 +15,7 @@
#include <string>
#include <string.h>
#include <sys/time.h>
#include <vector>
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
@ -36,6 +37,15 @@ const char *basename(const char *path);
char *secure_getenv(const char *name);
std::string dirname(const std::string &path);
template<typename T>
std::vector<typename T::key_type> map_keys(const T &map)
{
std::vector<typename T::key_type> keys;
std::transform(map.begin(), map.end(), std::back_inserter(keys),
[](const auto &value) { return value.first; });
return keys;
}
template<class InputIt1, class InputIt2>
unsigned int set_overlap(InputIt1 first1, InputIt1 last1,
InputIt2 first2, InputIt2 last2)