libcamera: utils: Add overloaded visitor helpers

std::visit() allows quite elegant type-matching implementation of the
visitor pattern.

The 'overloaded' type helpers allow to define a hierarchy of overloaded
operator() implementations which can be used by std::visit().

Currently only the Virtual pipeline handler uses this type-matching
implementation of std::visit(). To prepare to add another user in the
Mali C55 pipeline handler move the 'overloaded' helper type to
libcamera::utils for easier re-use.

Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
This commit is contained in:
Jacopo Mondi
2026-04-24 02:00:23 +03:00
parent 157f03e2df
commit c52e8cde3e
3 changed files with 41 additions and 8 deletions
+9
View File
@@ -37,6 +37,15 @@ namespace libcamera {
namespace utils {
template<class... Ts>
struct overloaded : Ts... {
using Ts::operator()...;
};
#ifndef __DOXYGEN__
template<class... Ts>
overloaded(Ts...) -> overloaded<Ts...>;
#endif
const char *basename(const char *path);
char *secure_getenv(const char *name);