MCPcopy Create free account
hub / github.com/Kitware/VTK / Evaluate

Method Evaluate

Common/Misc/vtkFunctionParser.cxx:404–832  ·  view source on GitHub ↗

------------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

402
403//------------------------------------------------------------------------------
404bool vtkFunctionParser::Evaluate()
405{
406 int numBytesProcessed;
407 int numImmediatesProcessed = 0;
408 int stackPosition = -1;
409 double magnitude;
410 double temp[3];
411
412 this->StackPointer = -1;
413
414 if (this->FunctionMTime.GetMTime() > this->ParseMTime.GetMTime())
415 {
416 if (this->Parse() == 0)
417 {
418 return false;
419 }
420 }
421
422 for (numBytesProcessed = 0; numBytesProcessed < this->ByteCodeSize; numBytesProcessed++)
423 {
424 switch (this->ByteCode[numBytesProcessed])
425 {
426 case VTK_PARSER_IMMEDIATE:
427 this->Stack[++stackPosition] = this->Immediates[numImmediatesProcessed++];
428 break;
429 case VTK_PARSER_UNARY_MINUS:
430 this->Stack[stackPosition] = -(this->Stack[stackPosition]);
431 break;
432 case VTK_PARSER_UNARY_PLUS:
433 break;
434 case VTK_PARSER_ADD:
435 this->Stack[stackPosition - 1] += this->Stack[stackPosition];
436 stackPosition--;
437 break;
438 case VTK_PARSER_SUBTRACT:
439 this->Stack[stackPosition - 1] -= this->Stack[stackPosition];
440 stackPosition--;
441 break;
442 case VTK_PARSER_MULTIPLY:
443 this->Stack[stackPosition - 1] *= this->Stack[stackPosition];
444 stackPosition--;
445 break;
446 case VTK_PARSER_DIVIDE:
447 if (this->Stack[stackPosition] == 0)
448 {
449 if (this->ReplaceInvalidValues)
450 {
451 this->Stack[stackPosition - 1] = this->ReplacementValue;
452 stackPosition--;
453 }
454 else
455 {
456 vtkErrorMacro("Trying to divide by zero");
457 return false;
458 }
459 }
460 else
461 {

Callers 2

IsScalarResultMethod · 0.95
IsVectorResultMethod · 0.95

Calls 15

ParseMethod · 0.95
powFunction · 0.50
expFunction · 0.50
ceilFunction · 0.50
floorFunction · 0.50
logFunction · 0.50
log10Function · 0.50
sqrtFunction · 0.50
sinFunction · 0.50
cosFunction · 0.50
tanFunction · 0.50
asinFunction · 0.50

Tested by

no test coverage detected