150 if (
auto pval0 = std::get_if<OriginValueMatcher>(&
other.mLeft)) {
152 }
else if (
auto pval1 = std::get_if<DescriptionValueMatcher>(&
other.mLeft)) {
154 }
else if (
auto pval2 = std::get_if<SubSpecificationTypeValueMatcher>(&
other.mLeft)) {
156 }
else if (
auto pval3 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&
other.mLeft)) {
157 mLeft = std::move(std::make_unique<DataDescriptorMatcher>(*pval3->get()));
158 }
else if (
auto pval4 = std::get_if<ConstantValueMatcher>(&
other.mLeft)) {
160 }
else if (
auto pval5 = std::get_if<StartTimeValueMatcher>(&
other.mLeft)) {
163 std::cerr << (
other.mLeft.index() == std::variant_npos) << std::endl;
167 if (
auto pval0 = std::get_if<OriginValueMatcher>(&
other.mRight)) {
169 }
else if (
auto pval1 = std::get_if<DescriptionValueMatcher>(&
other.mRight)) {
171 }
else if (
auto pval2 = std::get_if<SubSpecificationTypeValueMatcher>(&
other.mRight)) {
173 }
else if (
auto pval3 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&
other.mRight)) {
174 mRight = std::move(std::make_unique<DataDescriptorMatcher>(*pval3->get()));
175 }
else if (
auto pval4 = std::get_if<ConstantValueMatcher>(&
other.mRight)) {
177 }
else if (
auto pval5 = std::get_if<StartTimeValueMatcher>(&
other.mRight)) {
241 bool leftValue =
false, rightValue =
false;
270 if (
auto pval0 = std::get_if<OriginValueMatcher>(&mLeft)) {
271 auto dh = o2::header::get<header::DataHeader*>(d);
275 leftValue = pval0->match(*dh, context);
276 }
else if (
auto pval1 = std::get_if<DescriptionValueMatcher>(&mLeft)) {
277 auto dh = o2::header::get<header::DataHeader*>(d);
281 leftValue = pval1->match(*dh, context);
282 }
else if (
auto pval2 = std::get_if<SubSpecificationTypeValueMatcher>(&mLeft)) {
283 auto dh = o2::header::get<header::DataHeader*>(d);
287 leftValue = pval2->match(*dh, context);
288 }
else if (
auto pval3 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&mLeft)) {
289 leftValue = (*pval3)->match(d, context);
290 }
else if (
auto pval4 = std::get_if<ConstantValueMatcher>(&mLeft)) {
291 leftValue = pval4->match();
292 }
else if (
auto pval5 = std::get_if<StartTimeValueMatcher>(&mLeft)) {
293 auto dh = o2::header::get<header::DataHeader*>(d);
294 auto dph = o2::header::get<DataProcessingHeader*>(d);
295 if (dph ==
nullptr) {
298 leftValue = pval5->match(*dh, *dph, context);
303 if (mOp ==
Op::And && leftValue ==
false) {
306 if (mOp ==
Op::Or && leftValue ==
true) {
316 if (
auto pval0 = std::get_if<OriginValueMatcher>(&mRight)) {
317 auto dh = o2::header::get<header::DataHeader*>(d);
318 rightValue = pval0->match(*dh, context);
319 }
else if (
auto pval1 = std::get_if<DescriptionValueMatcher>(&mRight)) {
320 auto dh = o2::header::get<header::DataHeader*>(d);
321 rightValue = pval1->match(*dh, context);
322 }
else if (
auto pval2 = std::get_if<SubSpecificationTypeValueMatcher>(&mRight)) {
323 auto dh = o2::header::get<header::DataHeader*>(d);
324 rightValue = pval2->match(*dh, context);
325 }
else if (
auto pval3 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&mRight)) {
326 rightValue = (*pval3)->match(d, context);
327 }
else if (
auto pval4 = std::get_if<ConstantValueMatcher>(&mRight)) {
328 rightValue = pval4->match();
329 }
else if (
auto pval5 = std::get_if<StartTimeValueMatcher>(&mRight)) {
330 auto dh = o2::header::get<header::DataHeader*>(d);
331 auto dph = o2::header::get<DataProcessingHeader*>(d);
332 rightValue = pval5->match(*dh, *dph, context);
338 return leftValue || rightValue;
340 return leftValue && rightValue;
342 return leftValue ^ rightValue;
353 if (
other.mOp != this->mOp) {
357 bool leftValue =
false;
360 auto v1 = std::get_if<OriginValueMatcher>(&this->mLeft);
361 auto v2 = std::get_if<OriginValueMatcher>(&
other.mLeft);
368 auto v1 = std::get_if<DescriptionValueMatcher>(&this->mLeft);
369 auto v2 = std::get_if<DescriptionValueMatcher>(&
other.mLeft);
376 auto v1 = std::get_if<SubSpecificationTypeValueMatcher>(&this->mLeft);
377 auto v2 = std::get_if<SubSpecificationTypeValueMatcher>(&
other.mLeft);
384 auto v1 = std::get_if<ConstantValueMatcher>(&this->mLeft);
385 auto v2 = std::get_if<ConstantValueMatcher>(&
other.mLeft);
392 auto v1 = std::get_if<StartTimeValueMatcher>(&this->mLeft);
393 auto v2 = std::get_if<StartTimeValueMatcher>(&
other.mLeft);
400 auto v1 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&this->mLeft);
401 auto v2 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&
other.mLeft);
402 if (
v1 &&
v2 &&
v1->get() &&
v2->get() && (**
v1 == **
v2)) {
408 if (leftValue ==
false) {
421 auto v1 = std::get_if<OriginValueMatcher>(&this->mRight);
422 auto v2 = std::get_if<OriginValueMatcher>(&
other.mRight);
429 auto v1 = std::get_if<DescriptionValueMatcher>(&this->mRight);
430 auto v2 = std::get_if<DescriptionValueMatcher>(&
other.mRight);
437 auto v1 = std::get_if<SubSpecificationTypeValueMatcher>(&this->mRight);
438 auto v2 = std::get_if<SubSpecificationTypeValueMatcher>(&
other.mRight);
445 auto v1 = std::get_if<ConstantValueMatcher>(&this->mRight);
446 auto v2 = std::get_if<ConstantValueMatcher>(&
other.mRight);
453 auto v1 = std::get_if<StartTimeValueMatcher>(&this->mRight);
454 auto v2 = std::get_if<StartTimeValueMatcher>(&
other.mRight);
461 auto v1 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&this->mRight);
462 auto v2 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&
other.mRight);
463 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