11#ifndef O2_FRAMEWORK_DATAMATCHERWALKER_H_
12#define O2_FRAMEWORK_DATAMATCHERWALKER_H_
44using EdgeAction = std::variant<EdgeActions::EnterNode, EdgeActions::ExitNode>;
54 template <
typename EDGEWALKER,
typename LEAFWALKER>
56 EDGEWALKER edgeWalker,
57 LEAFWALKER leafWalker)
68 return edgeWalker(action);
77 auto node = std::visit([](
auto action) {
return action.node; }, action);
80 [&
matchers](std::unique_ptr<DataDescriptorMatcher>
const& matcher) {
83 [edgeWalker, leafWalker](
auto const& leaf) {
92 auto node = std::visit([](
auto action) {
return action.node; }, action);
95 [&
matchers](std::unique_ptr<DataDescriptorMatcher>
const& matcher) {
98 [edgeWalker, leafWalker](
auto const& leaf) {
std::vector< framework::ConcreteDataMatcher > matchers
std::unique_ptr< expressions::Node > node
GLdouble GLdouble GLdouble GLdouble top
std::variant< EdgeActions::EnterNode, EdgeActions::ExitNode > EdgeAction
static void walk(DataDescriptorMatcher const &top, EDGEWALKER edgeWalker, LEAFWALKER leafWalker)
DataDescriptorMatcher const * node
DataDescriptorMatcher const * node
From https://en.cppreference.com/w/cpp/utility/variant/visit.