152 if (
auto pval0 = std::get_if<OriginValueMatcher>(&
other.mLeft)) {
154 }
else if (
auto pval1 = std::get_if<DescriptionValueMatcher>(&
other.mLeft)) {
156 }
else if (
auto pval2 = std::get_if<SubSpecificationTypeValueMatcher>(&
other.mLeft)) {
158 }
else if (
auto pval3 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&
other.mLeft)) {
159 mLeft = std::move(std::make_unique<DataDescriptorMatcher>(*pval3->get()));
160 }
else if (
auto pval4 = std::get_if<ConstantValueMatcher>(&
other.mLeft)) {
162 }
else if (
auto pval5 = std::get_if<StartTimeValueMatcher>(&
other.mLeft)) {
165 std::cerr << (
other.mLeft.index() == std::variant_npos) << std::endl;
169 if (
auto pval0 = std::get_if<OriginValueMatcher>(&
other.mRight)) {
171 }
else if (
auto pval1 = std::get_if<DescriptionValueMatcher>(&
other.mRight)) {
173 }
else if (
auto pval2 = std::get_if<SubSpecificationTypeValueMatcher>(&
other.mRight)) {
175 }
else if (
auto pval3 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&
other.mRight)) {
176 mRight = std::move(std::make_unique<DataDescriptorMatcher>(*pval3->get()));
177 }
else if (
auto pval4 = std::get_if<ConstantValueMatcher>(&
other.mRight)) {
179 }
else if (
auto pval5 = std::get_if<StartTimeValueMatcher>(&
other.mRight)) {
245 bool leftValue =
false, rightValue =
false;
274 if (
auto pval0 = std::get_if<OriginValueMatcher>(&mLeft)) {
275 auto dh = o2::header::get<header::DataHeader*>(d);
279 leftValue = pval0->match(*dh, context);
280 }
else if (
auto pval1 = std::get_if<DescriptionValueMatcher>(&mLeft)) {
281 auto dh = o2::header::get<header::DataHeader*>(d);
285 leftValue = pval1->match(*dh, context);
286 }
else if (
auto pval2 = std::get_if<SubSpecificationTypeValueMatcher>(&mLeft)) {
287 auto dh = o2::header::get<header::DataHeader*>(d);
291 leftValue = pval2->match(*dh, context);
292 }
else if (
auto pval3 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&mLeft)) {
293 leftValue = (*pval3)->match(d, context);
294 }
else if (
auto pval4 = std::get_if<ConstantValueMatcher>(&mLeft)) {
295 leftValue = pval4->match();
296 }
else if (
auto pval5 = std::get_if<StartTimeValueMatcher>(&mLeft)) {
297 auto dh = o2::header::get<header::DataHeader*>(d);
298 auto dph = o2::header::get<DataProcessingHeader*>(d);
299 if (dph ==
nullptr) {
302 leftValue = pval5->match(*dh, *dph, context);
307 if (mOp ==
Op::And && leftValue ==
false) {
310 if (mOp ==
Op::Or && leftValue ==
true) {
320 if (
auto pval0 = std::get_if<OriginValueMatcher>(&mRight)) {
321 auto dh = o2::header::get<header::DataHeader*>(d);
322 rightValue = pval0->match(*dh, context);
323 }
else if (
auto pval1 = std::get_if<DescriptionValueMatcher>(&mRight)) {
324 auto dh = o2::header::get<header::DataHeader*>(d);
325 rightValue = pval1->match(*dh, context);
326 }
else if (
auto pval2 = std::get_if<SubSpecificationTypeValueMatcher>(&mRight)) {
327 auto dh = o2::header::get<header::DataHeader*>(d);
328 rightValue = pval2->match(*dh, context);
329 }
else if (
auto pval3 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&mRight)) {
330 rightValue = (*pval3)->match(d, context);
331 }
else if (
auto pval4 = std::get_if<ConstantValueMatcher>(&mRight)) {
332 rightValue = pval4->match();
333 }
else if (
auto pval5 = std::get_if<StartTimeValueMatcher>(&mRight)) {
334 auto dh = o2::header::get<header::DataHeader*>(d);
335 auto dph = o2::header::get<DataProcessingHeader*>(d);
336 rightValue = pval5->match(*dh, *dph, context);
342 return leftValue || rightValue;
344 return leftValue && rightValue;
346 return leftValue ^ rightValue;
357 if (
other.mOp != this->mOp) {
361 bool leftValue =
false;
364 auto v1 = std::get_if<OriginValueMatcher>(&this->mLeft);
365 auto v2 = std::get_if<OriginValueMatcher>(&
other.mLeft);
372 auto v1 = std::get_if<DescriptionValueMatcher>(&this->mLeft);
373 auto v2 = std::get_if<DescriptionValueMatcher>(&
other.mLeft);
380 auto v1 = std::get_if<SubSpecificationTypeValueMatcher>(&this->mLeft);
381 auto v2 = std::get_if<SubSpecificationTypeValueMatcher>(&
other.mLeft);
388 auto v1 = std::get_if<ConstantValueMatcher>(&this->mLeft);
389 auto v2 = std::get_if<ConstantValueMatcher>(&
other.mLeft);
396 auto v1 = std::get_if<StartTimeValueMatcher>(&this->mLeft);
397 auto v2 = std::get_if<StartTimeValueMatcher>(&
other.mLeft);
404 auto v1 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&this->mLeft);
405 auto v2 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&
other.mLeft);
406 if (
v1 &&
v2 &&
v1->get() &&
v2->get() && (**
v1 == **
v2)) {
412 if (leftValue ==
false) {
425 auto v1 = std::get_if<OriginValueMatcher>(&this->mRight);
426 auto v2 = std::get_if<OriginValueMatcher>(&
other.mRight);
433 auto v1 = std::get_if<DescriptionValueMatcher>(&this->mRight);
434 auto v2 = std::get_if<DescriptionValueMatcher>(&
other.mRight);
441 auto v1 = std::get_if<SubSpecificationTypeValueMatcher>(&this->mRight);
442 auto v2 = std::get_if<SubSpecificationTypeValueMatcher>(&
other.mRight);
449 auto v1 = std::get_if<ConstantValueMatcher>(&this->mRight);
450 auto v2 = std::get_if<ConstantValueMatcher>(&
other.mRight);
457 auto v1 = std::get_if<StartTimeValueMatcher>(&this->mRight);
458 auto v2 = std::get_if<StartTimeValueMatcher>(&
other.mRight);
465 auto v1 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&this->mRight);
466 auto v2 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&
other.mRight);
467 if (
v1 &&
v2 &&
v1->get() &&
v2->get() && (**
v1 == **
v2)) {
void publish(void(*callback)(VariableContext const &, TimesliceSlot slot, void *context), void *context, TimesliceSlot slot)
void put(ContextUpdate &&update)
ContextElement::Value const & get(size_t pos) const
std::variant< OriginValueMatcher, DescriptionValueMatcher, SubSpecificationTypeValueMatcher, std::unique_ptr< DataDescriptorMatcher >, ConstantValueMatcher, StartTimeValueMatcher > Node
std::variant< uint32_t, uint64_t, std::string, None > Value