MCPcopy Create free account
hub / github.com/LadybugDB/ladybug / evaluate

Method evaluate

src/expression_evaluator/case_evaluator.cpp:27–49  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

25}
26
27void CaseExpressionEvaluator::evaluate() {
28 filledMask.reset();
29 for (auto& alternativeEvaluator : alternativeEvaluators) {
30 auto whenSelVector = alternativeEvaluator.whenSelVector.get();
31 // the sel vector is already set to filtered in init()
32 auto hasAtLeastOneValue = alternativeEvaluator.whenEvaluator->select(*whenSelVector, false);
33 if (!hasAtLeastOneValue) {
34 continue;
35 }
36 alternativeEvaluator.thenEvaluator->evaluate();
37 auto thenVector = alternativeEvaluator.thenEvaluator->resultVector.get();
38 if (alternativeEvaluator.whenEvaluator->isResultFlat()) {
39 fillAll(thenVector);
40 } else {
41 fillSelected(*whenSelVector, thenVector);
42 }
43 if (filledMask.count() == resultVector->state->getSelVector().getSelSize()) {
44 return;
45 }
46 }
47 elseEvaluator->evaluate();
48 fillAll(elseEvaluator->resultVector.get());
49}
50
51bool CaseExpressionEvaluator::selectInternal(SelectionVector& selVector) {
52 evaluate();

Callers

nothing calls this directly

Calls 6

isResultFlatMethod · 0.80
getSelSizeMethod · 0.80
resetMethod · 0.45
getMethod · 0.45
selectMethod · 0.45
countMethod · 0.45

Tested by

no test coverage detected