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)) {
160 mLeft = *pval3 ? std::make_unique<DataDescriptorMatcher>(**pval3) :
nullptr;
161 }
else if (
auto pval4 = std::get_if<ConstantValueMatcher>(&
other.mLeft)) {
163 }
else if (
auto pval5 = std::get_if<StartTimeValueMatcher>(&
other.mLeft)) {
166 std::cerr << (
other.mLeft.index() == std::variant_npos) << std::endl;
170 if (
auto pval0 = std::get_if<OriginValueMatcher>(&
other.mRight)) {
172 }
else if (
auto pval1 = std::get_if<DescriptionValueMatcher>(&
other.mRight)) {
174 }
else if (
auto pval2 = std::get_if<SubSpecificationTypeValueMatcher>(&
other.mRight)) {
176 }
else if (
auto pval3 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&
other.mRight)) {
178 mRight = *pval3 ? std::make_unique<DataDescriptorMatcher>(**pval3) :
nullptr;
179 }
else if (
auto pval4 = std::get_if<ConstantValueMatcher>(&
other.mRight)) {
181 }
else if (
auto pval5 = std::get_if<StartTimeValueMatcher>(&
other.mRight)) {
247 bool leftValue =
false, rightValue =
false;
276 if (
auto pval0 = std::get_if<OriginValueMatcher>(&mLeft)) {
277 auto dh = o2::header::get<header::DataHeader*>(d);
281 leftValue = pval0->match(*dh, context);
282 }
else if (
auto pval1 = std::get_if<DescriptionValueMatcher>(&mLeft)) {
283 auto dh = o2::header::get<header::DataHeader*>(d);
287 leftValue = pval1->match(*dh, context);
288 }
else if (
auto pval2 = std::get_if<SubSpecificationTypeValueMatcher>(&mLeft)) {
289 auto dh = o2::header::get<header::DataHeader*>(d);
293 leftValue = pval2->match(*dh, context);
294 }
else if (
auto pval3 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&mLeft)) {
295 leftValue = (*pval3)->match(d, context);
296 }
else if (
auto pval4 = std::get_if<ConstantValueMatcher>(&mLeft)) {
297 leftValue = pval4->match();
298 }
else if (
auto pval5 = std::get_if<StartTimeValueMatcher>(&mLeft)) {
299 auto dh = o2::header::get<header::DataHeader*>(d);
300 auto dph = o2::header::get<DataProcessingHeader*>(d);
301 if (dph ==
nullptr) {
304 leftValue = pval5->match(*dh, *dph, context);
309 if (mOp ==
Op::And && leftValue ==
false) {
312 if (mOp ==
Op::Or && leftValue ==
true) {
322 if (
auto pval0 = std::get_if<OriginValueMatcher>(&mRight)) {
323 auto dh = o2::header::get<header::DataHeader*>(d);
324 rightValue = pval0->match(*dh, context);
325 }
else if (
auto pval1 = std::get_if<DescriptionValueMatcher>(&mRight)) {
326 auto dh = o2::header::get<header::DataHeader*>(d);
327 rightValue = pval1->match(*dh, context);
328 }
else if (
auto pval2 = std::get_if<SubSpecificationTypeValueMatcher>(&mRight)) {
329 auto dh = o2::header::get<header::DataHeader*>(d);
330 rightValue = pval2->match(*dh, context);
331 }
else if (
auto pval3 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&mRight)) {
332 rightValue = (*pval3)->match(d, context);
333 }
else if (
auto pval4 = std::get_if<ConstantValueMatcher>(&mRight)) {
334 rightValue = pval4->match();
335 }
else if (
auto pval5 = std::get_if<StartTimeValueMatcher>(&mRight)) {
336 auto dh = o2::header::get<header::DataHeader*>(d);
337 auto dph = o2::header::get<DataProcessingHeader*>(d);
338 rightValue = pval5->match(*dh, *dph, context);
344 return leftValue || rightValue;
346 return leftValue && rightValue;
348 return leftValue ^ rightValue;
359 if (
other.mOp != this->mOp) {
363 bool leftValue =
false;
366 auto v1 = std::get_if<OriginValueMatcher>(&this->mLeft);
367 auto v2 = std::get_if<OriginValueMatcher>(&
other.mLeft);
374 auto v1 = std::get_if<DescriptionValueMatcher>(&this->mLeft);
375 auto v2 = std::get_if<DescriptionValueMatcher>(&
other.mLeft);
382 auto v1 = std::get_if<SubSpecificationTypeValueMatcher>(&this->mLeft);
383 auto v2 = std::get_if<SubSpecificationTypeValueMatcher>(&
other.mLeft);
390 auto v1 = std::get_if<ConstantValueMatcher>(&this->mLeft);
391 auto v2 = std::get_if<ConstantValueMatcher>(&
other.mLeft);
398 auto v1 = std::get_if<StartTimeValueMatcher>(&this->mLeft);
399 auto v2 = std::get_if<StartTimeValueMatcher>(&
other.mLeft);
406 auto v1 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&this->mLeft);
407 auto v2 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&
other.mLeft);
408 if (
v1 &&
v2 &&
v1->get() &&
v2->get() && (**
v1 == **
v2)) {
414 if (leftValue ==
false) {
427 auto v1 = std::get_if<OriginValueMatcher>(&this->mRight);
428 auto v2 = std::get_if<OriginValueMatcher>(&
other.mRight);
435 auto v1 = std::get_if<DescriptionValueMatcher>(&this->mRight);
436 auto v2 = std::get_if<DescriptionValueMatcher>(&
other.mRight);
443 auto v1 = std::get_if<SubSpecificationTypeValueMatcher>(&this->mRight);
444 auto v2 = std::get_if<SubSpecificationTypeValueMatcher>(&
other.mRight);
451 auto v1 = std::get_if<ConstantValueMatcher>(&this->mRight);
452 auto v2 = std::get_if<ConstantValueMatcher>(&
other.mRight);
459 auto v1 = std::get_if<StartTimeValueMatcher>(&this->mRight);
460 auto v2 = std::get_if<StartTimeValueMatcher>(&
other.mRight);
467 auto v1 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&this->mRight);
468 auto v2 = std::get_if<std::unique_ptr<DataDescriptorMatcher>>(&
other.mRight);
469 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