MCPcopy Create free account
hub / github.com/catboost/catboost / CalcVariantExpression

Method CalcVariantExpression

library/cpp/expression/expression.cpp:716–862  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

714}
715
716TExpressionVariable TExpressionImpl::CalcVariantExpression(const IExpressionAdaptor& data) const {
717 TVector<TExpressionVariable> values(Operations.size());
718 TExpressionVariable v;
719 for (size_t i = Operations.size(); i > 0; --i) {
720 switch (Operations[i - 1].Oper) {
721 case O_CONST:
722 values[i - 1] = Consts[Operations[i - 1].Input.front()];
723 break;
724 case O_TOKEN:
725 if (data.FindValue(Tokens[Operations[i - 1].Input.front()], v))
726 values[i - 1] = v;
727 else
728 values[i - 1] = Tokens[Operations[i - 1].Input.front()];
729 break;
730 case O_IS_TOKEN:
731 values[i - 1] = data.FindValue(Tokens[Operations[i - 1].Input.front()], v) ? 1.0 : 0.0;
732 break;
733 case O_NOT:
734 values[i - 1] = values[Operations[i - 1].Input.front()].Not();
735 break;
736 case O_MINUS:
737 values[i - 1] = values[Operations[i - 1].Input.front()].Minus();
738 break;
739 case O_MIN:
740 values[i - 1] = values[Operations[i - 1].Input.front()].Min(values[Operations[i - 1].Input.back()]);
741 break;
742 case O_MAX:
743 values[i - 1] = values[Operations[i - 1].Input.front()].Max(values[Operations[i - 1].Input.back()]);
744 break;
745 case O_HISTOGRAM_PERCENTILE:
746 values[i - 1] = values[Operations[i - 1].Input.front()].HistogramPercentile(values[Operations[i - 1].Input.back()]);
747 break;
748 case O_OR:
749 values[i - 1] = values[Operations[i - 1].Input.front()].Or(values[Operations[i - 1].Input.back()]);
750 break;
751 case O_AND:
752 values[i - 1] = values[Operations[i - 1].Input.front()].And(values[Operations[i - 1].Input.back()]);
753 break;
754 case O_COND:
755 values[i - 1] = values[Operations[i - 1].Input[0]].Cond(
756 values[Operations[i - 1].Input[1]],
757 values[Operations[i - 1].Input[2]]
758 );
759 break;
760 case O_STR_COND:
761 values[i - 1] = values[Operations[i - 1].Input[0]].StrCond(
762 values[Operations[i - 1].Input[1]],
763 values[Operations[i - 1].Input[2]]
764 );
765 break;
766 case O_LE:
767 values[i - 1] = values[Operations[i - 1].Input.front()].Le(values[Operations[i - 1].Input.back()]);
768 break;
769 case O_L:
770 values[i - 1] = values[Operations[i - 1].Input.front()].L(values[Operations[i - 1].Input.back()]);
771 break;
772 case O_GE:
773 values[i - 1] = values[Operations[i - 1].Input.front()].Ge(values[Operations[i - 1].Input.back()]);

Callers

nothing calls this directly

Calls 15

NotMethod · 0.80
HistogramPercentileMethod · 0.80
CondMethod · 0.80
StrCondMethod · 0.80
LeMethod · 0.80
LMethod · 0.80
GeMethod · 0.80
GMethod · 0.80
EMethod · 0.80
NeMethod · 0.80
ToStrMethod · 0.80
StrStartsWithMethod · 0.80

Tested by

no test coverage detected